diff --git a/config/config.go b/config/config.go index adab8ce3c..e17ba081f 100644 --- a/config/config.go +++ b/config/config.go @@ -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_timezone", "grok_unique_timestamp", "influx_parser_type", - "prometheus_ignore_timestamp", // not used anymore? "value_field_name": // Serializer options to ignore diff --git a/plugins/parsers/all/all.go b/plugins/parsers/all/all.go index fc99b3e22..8a108a3d8 100644 --- a/plugins/parsers/all/all.go +++ b/plugins/parsers/all/all.go @@ -12,6 +12,7 @@ import ( _ "github.com/influxdata/telegraf/plugins/parsers/json_v2" _ "github.com/influxdata/telegraf/plugins/parsers/logfmt" _ "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/wavefront" _ "github.com/influxdata/telegraf/plugins/parsers/xpath" diff --git a/plugins/parsers/prometheus/parser.go b/plugins/parsers/prometheus/parser.go index c38908b80..8b1233cdd 100644 --- a/plugins/parsers/prometheus/parser.go +++ b/plugins/parsers/prometheus/parser.go @@ -16,13 +16,14 @@ import ( "github.com/influxdata/telegraf" "github.com/influxdata/telegraf/metric" + "github.com/influxdata/telegraf/plugins/parsers" "github.com/influxdata/telegraf/plugins/parsers/prometheus/common" ) type Parser struct { - DefaultTags map[string]string - Header http.Header - IgnoreTimestamp bool + DefaultTags map[string]string `toml:"-"` + Header http.Header `toml:"-"` // set by the prometheus input + IgnoreTimestamp bool `toml:"prometheus_ignore_timestamp"` } 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 } + +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{} + }) +} diff --git a/plugins/parsers/registry.go b/plugins/parsers/registry.go index 4be105f53..21df33711 100644 --- a/plugins/parsers/registry.go +++ b/plugins/parsers/registry.go @@ -6,7 +6,6 @@ import ( "github.com/influxdata/telegraf" "github.com/influxdata/telegraf/plugins/parsers/influx" "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/temporary/json_v2" "github.com/influxdata/telegraf/plugins/parsers/temporary/xpath" @@ -202,11 +201,6 @@ func NewParser(config *Config) (Parser, error) { } else { parser, err = NewInfluxParser() } - case "prometheus": - parser, err = NewPrometheusParser( - config.DefaultTags, - config.PrometheusIgnoreTimestamp, - ) case "prometheusremotewrite": parser, err = NewPrometheusRemoteWriteParser(config.DefaultTags) default: @@ -236,13 +230,6 @@ func NewInfluxUpstreamParser() (Parser, error) { 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) { return &prometheusremotewrite.Parser{ DefaultTags: defaultTags,