diff --git a/pkg/mapper/mapper.go b/pkg/mapper/mapper.go index 12340d9..64be2e2 100644 --- a/pkg/mapper/mapper.go +++ b/pkg/mapper/mapper.go @@ -30,10 +30,10 @@ import ( var ( // The first segment of a match cannot start with a number - statsdMetricRE = `[a-zA-Z_](-?[a-zA-Z0-9_])*` + statsdMetricRE = `[a-zA-Z_]([a-zA-Z0-9_\-])*` // The subsequent segments of a match can start with a number // See https://github.com/prometheus/statsd_exporter/issues/328 - statsdMetricSubsequentRE = `[a-zA-Z0-9_](-?[a-zA-Z0-9_])*` + statsdMetricSubsequentRE = `[a-zA-Z0-9_]([a-zA-Z0-9_\-])*` templateReplaceRE = `(\$\{?\d+\}?)` metricLineRE = regexp.MustCompile(`^(\*|` + statsdMetricRE + `)(\.\*|\.` + statsdMetricSubsequentRE + `)*$`) diff --git a/pkg/mapper/mapper_test.go b/pkg/mapper/mapper_test.go index 69d30ea..033bfc3 100644 --- a/pkg/mapper/mapper_test.go +++ b/pkg/mapper/mapper_test.go @@ -68,7 +68,7 @@ func TestMetricMapperYAML(t *testing.T) { mappings: - match: test.dispatcher.*.*.* name: "dispatch_events" - labels: + labels: processor: "$1" action: "$2" result: "$3" @@ -430,12 +430,27 @@ mappings: testName: "Config with bad metric line", config: `--- mappings: -- match: bad--metric-line.*.* +- match: bad!!metric-line.*.* name: "foo" labels: {} `, configBad: true, }, + { + testName: "Config with multiple dashes in metric name", + config: `--- +mappings: +- match: "foo--bar.*" + name: "foo_bar_${1}" + labels: {} + `, + mappings: mappings{ + { + statsdMetric: "foo--bar.count", + name: "foo_bar_count", + }, + }, + }, { testName: "Config with dynamic metric name", config: `---