rename

Rename metric paths as they are registered.

metrics:
rename:
by_regexp: []
child: {}

Metrics must be matched using dot notation even if the chosen output uses a different form. For example, the path would be 'foo.bar' rather than 'foo_bar' even when sending metrics to Prometheus. A full list of metrics paths that Benthos registers can be found in this list.

Fields

by_regexp

array A list of objects, each specifying an RE2 regular expression which will be tested against each metric path registered. Each occurrence of the expression will be replaced with the specified value. Inside the value $ signs are interpreted as submatch expansions, e.g. $1 represents the first submatch.

The field to_label may contain any number of key/value pairs to be added to a metric as labels, where the value may contain submatches from the provided pattern. This allows you to extract (left-most) matched segments of the renamed path into the label values.

# Examples
by_regexp:
- pattern: foo\.([a-z]*)\.([a-z]*)
to_label:
bar: $2
value: foo.$1

child

object A child metric type, this is where renamed metrics will be routed.

Examples

In order to replace the paths 'foo.bar.0.zap' and 'foo.baz.1.zap' with 'zip.bar' and 'zip.baz' respectively, and store the respective values '0' and '1' under the label key 'index' we could use this config:

metrics:
rename:
by_regexp:
- pattern: "foo\\.([a-z]*)\\.([a-z]*)\\.zap"
value: "zip.$1"
to_label:
index: $2
child:
statsd:
prefix: foo
address: localhost:8125

These labels will only be injected into metrics registered without pre-existing labels. Therefore it's currently not possible to combine labels registered from the metric processor with labels set via renaming.

Debugging

In order to see logs breaking down which metrics are registered and whether they are renamed enable logging at the TRACE level.