diff --git a/CHANGELOG.md b/CHANGELOG.md index 08ca426b0..ab9f4d9ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,10 @@ - [ipset](./plugins/inputs/ipset/README.md) - Thanks to @sajoupa - [nats](./plugins/inputs/nats/README.md) - Thanks to @mjs & @levex +### New Processors + +- [override](./plugins/processors/override/README.md) - Thanks to @KarstenSchnitter + ### New Parsers - [dropwizard](./docs/DATA_FORMATS_INPUT.md#dropwizard) - Thanks to @atzoum @@ -75,6 +79,7 @@ - [#3797](https://github.com/influxdata/telegraf/pull/3797): Add sum stat to basicstats aggregator. - [#3626](https://github.com/influxdata/telegraf/pull/3626): Add ability to override proxy from environment in http response. - [#3853](https://github.com/influxdata/telegraf/pull/3853): Add host to ping timeout log message. +- [#3773](https://github.com/influxdata/telegraf/pull/3773): Add override processor. ### Bugfixes diff --git a/README.md b/README.md index 0ae1a9316..d7d2a3599 100644 --- a/README.md +++ b/README.md @@ -264,6 +264,7 @@ formats may be used with input plugins supporting the `data_format` option: ## Processor Plugins * [printer](./plugins/processors/printer) +* [override](./plugins/processors/override) ## Aggregator Plugins diff --git a/plugins/processors/override/README.md b/plugins/processors/override/README.md index 3fb1b7c0f..174663e2b 100644 --- a/plugins/processors/override/README.md +++ b/plugins/processors/override/README.md @@ -8,9 +8,14 @@ supported by input plugins and aggregators: * name_suffix * tags -All metrics passing through this processor will be modified accordingly. Values -of *name_override*, *name_prefix*, *name_suffix* and already present *tags* with -conflicting keys will be overwritten. Absent *tags* will be created. +All metrics passing through this processor will be modified accordingly. +Select the metrics to modify using the standard +[measurement filtering](https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md#measurement-filtering) +options. + +Values of *name_override*, *name_prefix*, *name_suffix* and already present +*tags* with conflicting keys will be overwritten. Absent *tags* will be +created. Use-case of this plugin encompass ensuring certain tags or naming conventions are adhered to irrespective of input plugin configurations, e.g. by @@ -19,12 +24,14 @@ are adhered to irrespective of input plugin configurations, e.g. by ### Configuration: ```toml -# Add a global tag to all metrics +# Apply metric modifications using override semantics. [[processors.override]] - name_override = "new name_override" - name_prefix = "new name_prefix" - name_suffix = ":new name_suffix" - [processors.tags.add] - additional_tag = "tag_value" - existing_tag = "new tag_value" + ## All modifications on inputs and aggregators can be overridden: + # name_override = "new_name" + # name_prefix = "new_name_prefix" + # name_suffix = "new_name_suffix" + + ## Tags to be added (all values must be strings) + # [processors.override.tags] + # additional_tag = "tag_value" ``` diff --git a/plugins/processors/override/override.go b/plugins/processors/override/override.go index 347b64033..46a2f84db 100644 --- a/plugins/processors/override/override.go +++ b/plugins/processors/override/override.go @@ -6,18 +6,14 @@ import ( ) var sampleConfig = ` -## NOTE This processor will override names, name prefixes, name suffixes and -## values of tags, that are already present in the metric passed through this -## filter. + ## All modifications on inputs and aggregators can be overridden: + # name_override = "new_name" + # name_prefix = "new_name_prefix" + # name_suffix = "new_name_suffix" -## All modifications on inputs and aggregators can be overridden: -# name_override = "new name" -# name_prefix = "new name_prefix" -# name_suffix = "new name_suffix" - -## Tags to be added (all values must be strings) -# [processors.overide.tags] -# additional_tag = "tag_value" + ## Tags to be added (all values must be strings) + # [processors.override.tags] + # additional_tag = "tag_value" ` type Override struct { @@ -32,7 +28,7 @@ func (p *Override) SampleConfig() string { } func (p *Override) Description() string { - return "Add all configured tags to all metrics that pass through this filter." + return "Apply metric modifications using override semantics." } func (p *Override) Apply(in ...telegraf.Metric) []telegraf.Metric {