From a0a0ce2aeb8210eac2d902e34613ba6af753c93e Mon Sep 17 00:00:00 2001 From: Mario Date: Thu, 23 Nov 2023 18:05:26 +0100 Subject: [PATCH] [spanmetrics] Sanitize name in mapped dimensions (#3171) * Sanitize name in mapped dimensions * chlog --- CHANGELOG.md | 1 + modules/generator/processor/spanmetrics/spanmetrics.go | 2 +- modules/generator/processor/spanmetrics/spanmetrics_test.go | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b6e834d13b..c64facebec8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ * [ENHANCEMENT] Improve TraceQL performance in complex queries. [#3113](https://github.com/grafana/tempo/pull/3113) (@joe-elliott) * [BUGFIX] Fix compactor ignore configured S3 headers [#3149](https://github.com/grafana/tempo/pull/3154) (@Batkilin) * [BUGFIX] Prevent building parquet iterators that would loop forever. [#3159](https://github.com/grafana/tempo/pull/3159) (@mapno) +* [BUGFIX] Sanitize name in mapped dimensions in span-metrics processor [#3171](https://github.com/grafana/tempo/pull/3171) (@mapno) ## v2.3.0 / 2023-10-30 diff --git a/modules/generator/processor/spanmetrics/spanmetrics.go b/modules/generator/processor/spanmetrics/spanmetrics.go index 6cc791af53d..e700e98c8ee 100644 --- a/modules/generator/processor/spanmetrics/spanmetrics.go +++ b/modules/generator/processor/spanmetrics/spanmetrics.go @@ -67,7 +67,7 @@ func New(cfg Config, registry registry.Registry, spanDiscardCounter prometheus.C } for _, m := range cfg.DimensionMappings { - labels = append(labels, m.Name) + labels = append(labels, sanitizeLabelNameWithCollisions(m.Name)) } p := &Processor{ diff --git a/modules/generator/processor/spanmetrics/spanmetrics_test.go b/modules/generator/processor/spanmetrics/spanmetrics_test.go index 652c04b4528..95c0fee75de 100644 --- a/modules/generator/processor/spanmetrics/spanmetrics_test.go +++ b/modules/generator/processor/spanmetrics/spanmetrics_test.go @@ -897,7 +897,7 @@ func TestSpanMetricsDimensionMapping(t *testing.T) { cfg.IntrinsicDimensions.StatusMessage = true cfg.DimensionMappings = []sharedconfig.DimensionMappings{ { - Name: "foobar", + Name: "foo.bar", SourceLabel: []string{"foo", "bar"}, Join: "/", }, @@ -933,7 +933,7 @@ func TestSpanMetricsDimensionMapping(t *testing.T) { "span_name": "test", "status_code": "STATUS_CODE_OK", "status_message": "OK", - "foobar": "foo-value/bar-value", + "foo_bar": "foo-value/bar-value", }) assert.Equal(t, 10.0, testRegistry.Query("traces_spanmetrics_calls_total", lbls)) @@ -1011,7 +1011,7 @@ func TestSpanMetricsDimensionMappingMissingLabels(t *testing.T) { "status_message": "OK", "first_only": "first-value", "world_only": "world-value", - "first/last": "first-value->last-value", + "first_last": "first-value->last-value", }) assert.Equal(t, 10.0, testRegistry.Query("traces_spanmetrics_calls_total", lbls))