fix: Update prometheus parser to be a new style parser plugin (#11440)
This commit is contained in:
parent
8c0cf660c9
commit
c25f9a0e83
|
|
@ -1429,7 +1429,6 @@ func (c *Config) missingTomlField(_ reflect.Type, key string) error {
|
||||||
"grok_custom_pattern_files", "grok_custom_patterns", "grok_named_patterns", "grok_patterns",
|
"grok_custom_pattern_files", "grok_custom_patterns", "grok_named_patterns", "grok_patterns",
|
||||||
"grok_timezone", "grok_unique_timestamp",
|
"grok_timezone", "grok_unique_timestamp",
|
||||||
"influx_parser_type",
|
"influx_parser_type",
|
||||||
"prometheus_ignore_timestamp", // not used anymore?
|
|
||||||
"value_field_name":
|
"value_field_name":
|
||||||
|
|
||||||
// Serializer options to ignore
|
// Serializer options to ignore
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import (
|
||||||
_ "github.com/influxdata/telegraf/plugins/parsers/json_v2"
|
_ "github.com/influxdata/telegraf/plugins/parsers/json_v2"
|
||||||
_ "github.com/influxdata/telegraf/plugins/parsers/logfmt"
|
_ "github.com/influxdata/telegraf/plugins/parsers/logfmt"
|
||||||
_ "github.com/influxdata/telegraf/plugins/parsers/nagios"
|
_ "github.com/influxdata/telegraf/plugins/parsers/nagios"
|
||||||
|
_ "github.com/influxdata/telegraf/plugins/parsers/prometheus"
|
||||||
_ "github.com/influxdata/telegraf/plugins/parsers/value"
|
_ "github.com/influxdata/telegraf/plugins/parsers/value"
|
||||||
_ "github.com/influxdata/telegraf/plugins/parsers/wavefront"
|
_ "github.com/influxdata/telegraf/plugins/parsers/wavefront"
|
||||||
_ "github.com/influxdata/telegraf/plugins/parsers/xpath"
|
_ "github.com/influxdata/telegraf/plugins/parsers/xpath"
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,14 @@ import (
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/metric"
|
"github.com/influxdata/telegraf/metric"
|
||||||
|
"github.com/influxdata/telegraf/plugins/parsers"
|
||||||
"github.com/influxdata/telegraf/plugins/parsers/prometheus/common"
|
"github.com/influxdata/telegraf/plugins/parsers/prometheus/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Parser struct {
|
type Parser struct {
|
||||||
DefaultTags map[string]string
|
DefaultTags map[string]string `toml:"-"`
|
||||||
Header http.Header
|
Header http.Header `toml:"-"` // set by the prometheus input
|
||||||
IgnoreTimestamp bool
|
IgnoreTimestamp bool `toml:"prometheus_ignore_timestamp"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Parser) Parse(buf []byte) ([]telegraf.Metric, error) {
|
func (p *Parser) Parse(buf []byte) ([]telegraf.Metric, error) {
|
||||||
|
|
@ -186,3 +187,15 @@ func (p *Parser) GetTimestamp(m *dto.Metric, now time.Time) time.Time {
|
||||||
}
|
}
|
||||||
return t
|
return t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *Parser) InitFromConfig(config *parsers.Config) error {
|
||||||
|
p.IgnoreTimestamp = config.PrometheusIgnoreTimestamp
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
parsers.Add("prometheus",
|
||||||
|
func(defaultMetricName string) telegraf.Parser {
|
||||||
|
return &Parser{}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ import (
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/plugins/parsers/influx"
|
"github.com/influxdata/telegraf/plugins/parsers/influx"
|
||||||
"github.com/influxdata/telegraf/plugins/parsers/influx/influx_upstream"
|
"github.com/influxdata/telegraf/plugins/parsers/influx/influx_upstream"
|
||||||
"github.com/influxdata/telegraf/plugins/parsers/prometheus"
|
|
||||||
"github.com/influxdata/telegraf/plugins/parsers/prometheusremotewrite"
|
"github.com/influxdata/telegraf/plugins/parsers/prometheusremotewrite"
|
||||||
"github.com/influxdata/telegraf/plugins/parsers/temporary/json_v2"
|
"github.com/influxdata/telegraf/plugins/parsers/temporary/json_v2"
|
||||||
"github.com/influxdata/telegraf/plugins/parsers/temporary/xpath"
|
"github.com/influxdata/telegraf/plugins/parsers/temporary/xpath"
|
||||||
|
|
@ -202,11 +201,6 @@ func NewParser(config *Config) (Parser, error) {
|
||||||
} else {
|
} else {
|
||||||
parser, err = NewInfluxParser()
|
parser, err = NewInfluxParser()
|
||||||
}
|
}
|
||||||
case "prometheus":
|
|
||||||
parser, err = NewPrometheusParser(
|
|
||||||
config.DefaultTags,
|
|
||||||
config.PrometheusIgnoreTimestamp,
|
|
||||||
)
|
|
||||||
case "prometheusremotewrite":
|
case "prometheusremotewrite":
|
||||||
parser, err = NewPrometheusRemoteWriteParser(config.DefaultTags)
|
parser, err = NewPrometheusRemoteWriteParser(config.DefaultTags)
|
||||||
default:
|
default:
|
||||||
|
|
@ -236,13 +230,6 @@ func NewInfluxUpstreamParser() (Parser, error) {
|
||||||
return influx_upstream.NewParser(), nil
|
return influx_upstream.NewParser(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPrometheusParser(defaultTags map[string]string, ignoreTimestamp bool) (Parser, error) {
|
|
||||||
return &prometheus.Parser{
|
|
||||||
DefaultTags: defaultTags,
|
|
||||||
IgnoreTimestamp: ignoreTimestamp,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewPrometheusRemoteWriteParser(defaultTags map[string]string) (Parser, error) {
|
func NewPrometheusRemoteWriteParser(defaultTags map[string]string) (Parser, error) {
|
||||||
return &prometheusremotewrite.Parser{
|
return &prometheusremotewrite.Parser{
|
||||||
DefaultTags: defaultTags,
|
DefaultTags: defaultTags,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue