From 4ee02e9bc778b6b70f5587241bc41e7043880f5e Mon Sep 17 00:00:00 2001 From: Israel Blancas Date: Wed, 7 Aug 2024 20:01:32 +0200 Subject: [PATCH 01/10] Improve consistency between metrics generated by spanmetricsconnector Signed-off-by: Israel Blancas --- .chloggen/feat_33227.yaml | 29 +++++++++++++++++++ connector/spanmetricsconnector/config_test.go | 7 +++++ connector/spanmetricsconnector/connector.go | 26 +++++++++++++++++ .../spanmetricsconnector/connector_test.go | 14 ++++----- connector/spanmetricsconnector/factory.go | 3 ++ 5 files changed, 72 insertions(+), 7 deletions(-) create mode 100644 .chloggen/feat_33227.yaml diff --git a/.chloggen/feat_33227.yaml b/.chloggen/feat_33227.yaml new file mode 100644 index 000000000000..70dd8c9d2714 --- /dev/null +++ b/.chloggen/feat_33227.yaml @@ -0,0 +1,29 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: enhancement + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: spanmetricsconnector + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Improve consistency between metrics generated by spanmetricsconnector. Added traces.span.metrics as default namespace namespace + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [33227, 32818] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: "Default namespace for the generated metrics is traces.span.metrics now. | + We continue generating the metrics without namespace but marked them as deprecated. | + The deprecated metrics are: calls, duration and events" + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [user] diff --git a/connector/spanmetricsconnector/config_test.go b/connector/spanmetricsconnector/config_test.go index 56f1928338b8..cb2e45ff0a9c 100644 --- a/connector/spanmetricsconnector/config_test.go +++ b/connector/spanmetricsconnector/config_test.go @@ -50,6 +50,7 @@ func TestLoadConfig(t *testing.T) { {Name: "http.method", Default: &defaultMethod}, {Name: "http.status_code", Default: (*string)(nil)}, }, + Namespace: DefaultNamespace, DimensionsCacheSize: 1500, ResourceMetricsCacheSize: 1600, MetricsFlushInterval: 30 * time.Second, @@ -70,6 +71,7 @@ func TestLoadConfig(t *testing.T) { { id: component.NewIDWithName(metadata.Type, "exponential_histogram"), expected: &Config{ + Namespace: DefaultNamespace, AggregationTemporality: cumulative, DimensionsCacheSize: defaultDimensionsCacheSize, ResourceMetricsCacheSize: defaultResourceMetricsCacheSize, @@ -103,6 +105,7 @@ func TestLoadConfig(t *testing.T) { MetricsFlushInterval: 60 * time.Second, Histogram: HistogramConfig{Disable: false, Unit: defaultUnit}, Exemplars: ExemplarsConfig{Enabled: true}, + Namespace: DefaultNamespace, }, }, { @@ -114,6 +117,7 @@ func TestLoadConfig(t *testing.T) { MetricsFlushInterval: 60 * time.Second, Histogram: HistogramConfig{Disable: false, Unit: defaultUnit}, Exemplars: ExemplarsConfig{Enabled: true, MaxPerDataPoint: &defaultMaxPerDatapoint}, + Namespace: DefaultNamespace, }, }, { @@ -125,6 +129,7 @@ func TestLoadConfig(t *testing.T) { ResourceMetricsKeyAttributes: []string{"service.name", "telemetry.sdk.language", "telemetry.sdk.name"}, MetricsFlushInterval: 60 * time.Second, Histogram: HistogramConfig{Disable: false, Unit: defaultUnit}, + Namespace: DefaultNamespace, }, }, { @@ -136,6 +141,7 @@ func TestLoadConfig(t *testing.T) { ResourceMetricsCacheSize: defaultResourceMetricsCacheSize, MetricsFlushInterval: 60 * time.Second, Histogram: HistogramConfig{Disable: false, Unit: defaultUnit}, + Namespace: DefaultNamespace, }, }, { @@ -146,6 +152,7 @@ func TestLoadConfig(t *testing.T) { ResourceMetricsCacheSize: defaultResourceMetricsCacheSize, MetricsFlushInterval: 60 * time.Second, Histogram: HistogramConfig{Disable: false, Unit: defaultUnit}, + Namespace: DefaultNamespace, }, extraAssertions: func(config *Config) { assert.Equal(t, defaultDeltaTimestampCacheSize, config.GetDeltaTimestampCacheSize()) diff --git a/connector/spanmetricsconnector/connector.go b/connector/spanmetricsconnector/connector.go index 2cdc354df9d8..47ea71c5d961 100644 --- a/connector/spanmetricsconnector/connector.go +++ b/connector/spanmetricsconnector/connector.go @@ -296,22 +296,48 @@ func (p *connectorImp) buildMetrics() pmetric.Metrics { } sums := rawMetrics.sums + // Duplicate metric to avoid breaking change: + // https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/33227 metric := sm.Metrics().AppendEmpty() metric.SetName(buildMetricName(p.config.Namespace, metricNameCalls)) sums.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality()) + + if p.config.Namespace != "" { + metric = sm.Metrics().AppendEmpty() + metric.SetName(buildMetricName("", metricNameCalls)) + sums.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality()) + } + if !p.config.Histogram.Disable { histograms := rawMetrics.histograms + // Duplicate metric to avoid breaking change: + // https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/33227 metric = sm.Metrics().AppendEmpty() metric.SetName(buildMetricName(p.config.Namespace, metricNameDuration)) metric.SetUnit(p.config.Histogram.Unit.String()) histograms.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality()) + if p.config.Namespace != "" { + metric = sm.Metrics().AppendEmpty() + metric.SetName(buildMetricName("", metricNameDuration)) + metric.SetUnit(p.config.Histogram.Unit.String()) + histograms.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality()) + } } events := rawMetrics.events if p.events.Enabled { + // Duplicate metric to avoid breaking change: + // https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/33227 metric = sm.Metrics().AppendEmpty() metric.SetName(buildMetricName(p.config.Namespace, metricNameEvents)) events.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality()) + + if p.config.Namespace != "" { + metric = sm.Metrics().AppendEmpty() + metric.SetName(buildMetricName("", metricNameEvents)) + events.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality()) + } + } for mk := range deltaMetricKeys { diff --git a/connector/spanmetricsconnector/connector_test.go b/connector/spanmetricsconnector/connector_test.go index 893a32c2ae31..f76dfd228c0c 100644 --- a/connector/spanmetricsconnector/connector_test.go +++ b/connector/spanmetricsconnector/connector_test.go @@ -1475,11 +1475,11 @@ func TestSpanMetrics_Events(t *testing.T) { eventsConfig EventsConfig shouldEventsMetricExist bool }{ - { - name: "events disabled", - eventsConfig: EventsConfig{Enabled: false, Dimensions: []Dimension{{Name: "exception.type", Default: stringp("NullPointerException")}}}, - shouldEventsMetricExist: false, - }, + // { + // name: "events disabled", + // eventsConfig: EventsConfig{Enabled: false, Dimensions: []Dimension{{Name: "exception.type", Default: stringp("NullPointerException")}}}, + // shouldEventsMetricExist: false, + // }, { name: "events enabled", eventsConfig: EventsConfig{Enabled: true, Dimensions: []Dimension{{Name: "exception.type", Default: stringp("NullPointerException")}}}, @@ -1502,10 +1502,10 @@ func TestSpanMetrics_Events(t *testing.T) { for ilmC := 0; ilmC < ism.Len(); ilmC++ { m := ism.At(ilmC).Metrics() if !tt.shouldEventsMetricExist { - assert.Equal(t, 2, m.Len()) + assert.Equal(t, 4, m.Len()) continue } - assert.Equal(t, 3, m.Len()) + assert.Equal(t, 6, m.Len()) for mC := 0; mC < m.Len(); mC++ { metric := m.At(mC) if metric.Name() != "events" { diff --git a/connector/spanmetricsconnector/factory.go b/connector/spanmetricsconnector/factory.go index b153fde6bb31..4ce5d6c24d38 100644 --- a/connector/spanmetricsconnector/factory.go +++ b/connector/spanmetricsconnector/factory.go @@ -17,6 +17,8 @@ import ( "github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector/internal/metadata" ) +const DefaultNamespace = "traces.span.metrics" + // NewFactory creates a factory for the spanmetrics connector. func NewFactory() connector.Factory { return connector.NewFactory( @@ -33,6 +35,7 @@ func createDefaultConfig() component.Config { ResourceMetricsCacheSize: defaultResourceMetricsCacheSize, MetricsFlushInterval: 60 * time.Second, Histogram: HistogramConfig{Disable: false, Unit: defaultUnit}, + Namespace: DefaultNamespace, } } From 2cb8900c78911fd94b4ccc6b489f1c2b0f1e75ff Mon Sep 17 00:00:00 2001 From: Israel Blancas Date: Fri, 9 Aug 2024 10:36:44 +0200 Subject: [PATCH 02/10] Generate the metrics only when needed Signed-off-by: Israel Blancas --- connector/spanmetricsconnector/connector.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/connector/spanmetricsconnector/connector.go b/connector/spanmetricsconnector/connector.go index 47ea71c5d961..36859f3b3814 100644 --- a/connector/spanmetricsconnector/connector.go +++ b/connector/spanmetricsconnector/connector.go @@ -302,7 +302,7 @@ func (p *connectorImp) buildMetrics() pmetric.Metrics { metric.SetName(buildMetricName(p.config.Namespace, metricNameCalls)) sums.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality()) - if p.config.Namespace != "" { + if p.config.Namespace != "" && p.config.Namespace == DefaultNamespace { metric = sm.Metrics().AppendEmpty() metric.SetName(buildMetricName("", metricNameCalls)) sums.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality()) @@ -316,7 +316,7 @@ func (p *connectorImp) buildMetrics() pmetric.Metrics { metric.SetName(buildMetricName(p.config.Namespace, metricNameDuration)) metric.SetUnit(p.config.Histogram.Unit.String()) histograms.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality()) - if p.config.Namespace != "" { + if p.config.Namespace != "" && p.config.Namespace == DefaultNamespace { metric = sm.Metrics().AppendEmpty() metric.SetName(buildMetricName("", metricNameDuration)) metric.SetUnit(p.config.Histogram.Unit.String()) @@ -332,7 +332,7 @@ func (p *connectorImp) buildMetrics() pmetric.Metrics { metric.SetName(buildMetricName(p.config.Namespace, metricNameEvents)) events.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality()) - if p.config.Namespace != "" { + if p.config.Namespace != "" && p.config.Namespace == DefaultNamespace { metric = sm.Metrics().AppendEmpty() metric.SetName(buildMetricName("", metricNameEvents)) events.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality()) From 884ccbf7780425124dad82b83d52e487e5dcdce0 Mon Sep 17 00:00:00 2001 From: Israel Blancas Date: Tue, 13 Aug 2024 12:48:04 +0200 Subject: [PATCH 03/10] Add feature flag Signed-off-by: Israel Blancas --- .chloggen/feat_33227.yaml | 5 +-- connector/spanmetricsconnector/connector.go | 36 +++++-------------- .../spanmetricsconnector/connector_test.go | 14 ++++---- connector/spanmetricsconnector/factory.go | 18 +++++++++- 4 files changed, 35 insertions(+), 38 deletions(-) diff --git a/.chloggen/feat_33227.yaml b/.chloggen/feat_33227.yaml index 70dd8c9d2714..56f9d6fb61fa 100644 --- a/.chloggen/feat_33227.yaml +++ b/.chloggen/feat_33227.yaml @@ -1,7 +1,7 @@ # Use this changelog template to create an entry for release notes. # One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' -change_type: enhancement +change_type: breaking # The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) component: spanmetricsconnector @@ -17,7 +17,8 @@ issues: [33227, 32818] # Use pipe (|) for multiline entries. subtext: "Default namespace for the generated metrics is traces.span.metrics now. | We continue generating the metrics without namespace but marked them as deprecated. | - The deprecated metrics are: calls, duration and events" + The deprecated metrics are: calls, duration and events. | + The feature flag connector.spanmetrics.legacyLatencyMetricNames was added to revert the behavior." # If your change doesn't affect end users or the exported elements of any package, # you should instead start your pull request title with [chore] or use the "Skip Changelog" label. diff --git a/connector/spanmetricsconnector/connector.go b/connector/spanmetricsconnector/connector.go index 36859f3b3814..c3f8c897aa9e 100644 --- a/connector/spanmetricsconnector/connector.go +++ b/connector/spanmetricsconnector/connector.go @@ -295,49 +295,29 @@ func (p *connectorImp) buildMetrics() pmetric.Metrics { return startTime } + metricsNamespace := p.config.Namespace + if legacyMetricNamesFeatureGate.IsEnabled() && metricsNamespace == DefaultNamespace { + metricsNamespace = "" + } + sums := rawMetrics.sums - // Duplicate metric to avoid breaking change: - // https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/33227 metric := sm.Metrics().AppendEmpty() - metric.SetName(buildMetricName(p.config.Namespace, metricNameCalls)) + metric.SetName(buildMetricName(metricsNamespace, metricNameCalls)) sums.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality()) - if p.config.Namespace != "" && p.config.Namespace == DefaultNamespace { - metric = sm.Metrics().AppendEmpty() - metric.SetName(buildMetricName("", metricNameCalls)) - sums.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality()) - } - if !p.config.Histogram.Disable { histograms := rawMetrics.histograms - // Duplicate metric to avoid breaking change: - // https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/33227 metric = sm.Metrics().AppendEmpty() - metric.SetName(buildMetricName(p.config.Namespace, metricNameDuration)) + metric.SetName(buildMetricName(metricsNamespace, metricNameDuration)) metric.SetUnit(p.config.Histogram.Unit.String()) histograms.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality()) - if p.config.Namespace != "" && p.config.Namespace == DefaultNamespace { - metric = sm.Metrics().AppendEmpty() - metric.SetName(buildMetricName("", metricNameDuration)) - metric.SetUnit(p.config.Histogram.Unit.String()) - histograms.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality()) - } } events := rawMetrics.events if p.events.Enabled { - // Duplicate metric to avoid breaking change: - // https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/33227 metric = sm.Metrics().AppendEmpty() - metric.SetName(buildMetricName(p.config.Namespace, metricNameEvents)) + metric.SetName(buildMetricName(metricsNamespace, metricNameEvents)) events.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality()) - - if p.config.Namespace != "" && p.config.Namespace == DefaultNamespace { - metric = sm.Metrics().AppendEmpty() - metric.SetName(buildMetricName("", metricNameEvents)) - events.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality()) - } - } for mk := range deltaMetricKeys { diff --git a/connector/spanmetricsconnector/connector_test.go b/connector/spanmetricsconnector/connector_test.go index f76dfd228c0c..893a32c2ae31 100644 --- a/connector/spanmetricsconnector/connector_test.go +++ b/connector/spanmetricsconnector/connector_test.go @@ -1475,11 +1475,11 @@ func TestSpanMetrics_Events(t *testing.T) { eventsConfig EventsConfig shouldEventsMetricExist bool }{ - // { - // name: "events disabled", - // eventsConfig: EventsConfig{Enabled: false, Dimensions: []Dimension{{Name: "exception.type", Default: stringp("NullPointerException")}}}, - // shouldEventsMetricExist: false, - // }, + { + name: "events disabled", + eventsConfig: EventsConfig{Enabled: false, Dimensions: []Dimension{{Name: "exception.type", Default: stringp("NullPointerException")}}}, + shouldEventsMetricExist: false, + }, { name: "events enabled", eventsConfig: EventsConfig{Enabled: true, Dimensions: []Dimension{{Name: "exception.type", Default: stringp("NullPointerException")}}}, @@ -1502,10 +1502,10 @@ func TestSpanMetrics_Events(t *testing.T) { for ilmC := 0; ilmC < ism.Len(); ilmC++ { m := ism.At(ilmC).Metrics() if !tt.shouldEventsMetricExist { - assert.Equal(t, 4, m.Len()) + assert.Equal(t, 2, m.Len()) continue } - assert.Equal(t, 6, m.Len()) + assert.Equal(t, 3, m.Len()) for mC := 0; mC < m.Len(); mC++ { metric := m.At(mC) if metric.Name() != "events" { diff --git a/connector/spanmetricsconnector/factory.go b/connector/spanmetricsconnector/factory.go index 4ce5d6c24d38..9ab3258990bb 100644 --- a/connector/spanmetricsconnector/factory.go +++ b/connector/spanmetricsconnector/factory.go @@ -13,11 +13,27 @@ import ( "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/connector" "go.opentelemetry.io/collector/consumer" + "go.opentelemetry.io/collector/featuregate" "github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector/internal/metadata" ) -const DefaultNamespace = "traces.span.metrics" +const ( + DefaultNamespace = "traces.span.metrics" + legacyLatencyMetricNamesFeatureGateID = "connector.spanmetrics.legacyLatencyMetricNames" +) + +var legacyMetricNamesFeatureGate *featuregate.Gate + +func init() { + // TODO: Remove this feature gate when the legacy metric names are removed. + legacyMetricNamesFeatureGate = featuregate.GlobalRegistry().MustRegister( + legacyLatencyMetricNamesFeatureGateID, + featuregate.StageBeta, + featuregate.WithRegisterDescription("When enabled, connector uses legacy metric names."), + featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/33227"), + ) +} // NewFactory creates a factory for the spanmetrics connector. func NewFactory() connector.Factory { From fe902a3ce537b52e2cbbf4144fd5de2df5d80a4a Mon Sep 17 00:00:00 2001 From: Israel Blancas Date: Tue, 13 Aug 2024 13:15:54 +0200 Subject: [PATCH 04/10] Fix gomod Signed-off-by: Israel Blancas --- connector/spanmetricsconnector/go.mod | 6 ++++-- connector/spanmetricsconnector/go.sum | 12 ++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/connector/spanmetricsconnector/go.mod b/connector/spanmetricsconnector/go.mod index ccead95f0970..1621121f6337 100644 --- a/connector/spanmetricsconnector/go.mod +++ b/connector/spanmetricsconnector/go.mod @@ -15,6 +15,7 @@ require ( go.opentelemetry.io/collector/connector v0.108.2-0.20240829190554-7da6b618a7ee go.opentelemetry.io/collector/consumer v0.108.2-0.20240829190554-7da6b618a7ee go.opentelemetry.io/collector/consumer/consumertest v0.108.2-0.20240829190554-7da6b618a7ee + go.opentelemetry.io/collector/featuregate v1.14.2-0.20240829190554-7da6b618a7ee go.opentelemetry.io/collector/pdata v1.14.2-0.20240829190554-7da6b618a7ee go.opentelemetry.io/collector/semconv v0.108.2-0.20240829190554-7da6b618a7ee go.uber.org/goleak v1.3.0 @@ -31,6 +32,7 @@ require ( github.com/go-viper/mapstructure/v2 v2.1.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/google/uuid v1.6.0 // indirect + github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.17.9 // indirect github.com/knadh/koanf/maps v0.1.1 // indirect @@ -46,8 +48,8 @@ require ( github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.56.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect - go.opentelemetry.io/collector v0.108.2-0.20240829190554-7da6b618a7ee // indirect - go.opentelemetry.io/collector/component/componentprofiles v0.108.2-0.20240829190554-7da6b618a7ee // indirect + go.opentelemetry.io/collector v0.108.1 // indirect + go.opentelemetry.io/collector/component/componentprofiles v0.108.1 // indirect go.opentelemetry.io/collector/config/configtelemetry v0.108.2-0.20240829190554-7da6b618a7ee // indirect go.opentelemetry.io/collector/consumer/consumerprofiles v0.108.2-0.20240829190554-7da6b618a7ee // indirect go.opentelemetry.io/collector/pdata/pprofile v0.108.2-0.20240829190554-7da6b618a7ee // indirect diff --git a/connector/spanmetricsconnector/go.sum b/connector/spanmetricsconnector/go.sum index 5fc56db8e2d3..ee73fb0805bc 100644 --- a/connector/spanmetricsconnector/go.sum +++ b/connector/spanmetricsconnector/go.sum @@ -19,6 +19,8 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= @@ -74,12 +76,12 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.opentelemetry.io/collector v0.108.2-0.20240829190554-7da6b618a7ee h1:qwS5eXqdHQ8/H6adgQXaqYNv/lco6F7Xl7keuwQ+pWA= -go.opentelemetry.io/collector v0.108.2-0.20240829190554-7da6b618a7ee/go.mod h1:XhZ6xcWvPeAAqp++6tVqvSphaaAs5loWzolvEjLMkUk= +go.opentelemetry.io/collector v0.108.1 h1:c3JZU5g5KezDXaMgL7GDFB7ihuLNzXo6eBuaJOmBiDA= +go.opentelemetry.io/collector v0.108.1/go.mod h1:7GL32WiQkZzJjxHstHme9igzYumDsw1hFPep3v1guHQ= go.opentelemetry.io/collector/component v0.108.2-0.20240829190554-7da6b618a7ee h1:huxxQgE9nyBcwUtiJaJFTupk0MhXsy8Y3ZclJ0mCREY= go.opentelemetry.io/collector/component v0.108.2-0.20240829190554-7da6b618a7ee/go.mod h1:Z9M91arav1Mf67csQf2484IMUx5a++4oAlikGM28AoI= -go.opentelemetry.io/collector/component/componentprofiles v0.108.2-0.20240829190554-7da6b618a7ee h1:kbQyq10n9Ow++Oa0uek9K5jcfMiYWX7leWiaLhqCVAI= -go.opentelemetry.io/collector/component/componentprofiles v0.108.2-0.20240829190554-7da6b618a7ee/go.mod h1:odJ6Mab67J9ROonsZFXLARckTJx0augEi2H/q12w5Jg= +go.opentelemetry.io/collector/component/componentprofiles v0.108.1 h1:u+lWWyhGvbcqG39QkV/JbcoTILpWdmnRilFeM5o6790= +go.opentelemetry.io/collector/component/componentprofiles v0.108.1/go.mod h1:abcl/NfiyaGjWIGMoUUZrzpEiDYGvwd/2rKt/1jdSYg= go.opentelemetry.io/collector/config/configtelemetry v0.108.2-0.20240829190554-7da6b618a7ee h1:LGoJWO9fANov2zNgtX4uYuH6YI4p+H0I/PbY2S+9wLk= go.opentelemetry.io/collector/config/configtelemetry v0.108.2-0.20240829190554-7da6b618a7ee/go.mod h1:R0MBUxjSMVMIhljuDHWIygzzJWQyZHXXWIgQNxcFwhc= go.opentelemetry.io/collector/confmap v1.14.2-0.20240829190554-7da6b618a7ee h1:+AZ6R3DhcUGDVQVya18ZVoZK863f8a1LXhHBq9TKkuw= @@ -92,6 +94,8 @@ go.opentelemetry.io/collector/consumer/consumerprofiles v0.108.2-0.2024082919055 go.opentelemetry.io/collector/consumer/consumerprofiles v0.108.2-0.20240829190554-7da6b618a7ee/go.mod h1:F6Shxg3TqoDZe2+p2PkVRUsnJMqATQxbs4c1nfaJrAc= go.opentelemetry.io/collector/consumer/consumertest v0.108.2-0.20240829190554-7da6b618a7ee h1:258eNHF/i76AAD7ETHoKT5osyCe+UdDVWIgVyNyMH2c= go.opentelemetry.io/collector/consumer/consumertest v0.108.2-0.20240829190554-7da6b618a7ee/go.mod h1:tRqOtUukG76iBlPTAUwFSU87dDO+x33Gyn2x9mecfko= +go.opentelemetry.io/collector/featuregate v1.14.2-0.20240829190554-7da6b618a7ee h1:kOnDlEC1EDsymDjAZe8LZhwbVqnWPtPwSlUXDYwUmws= +go.opentelemetry.io/collector/featuregate v1.14.2-0.20240829190554-7da6b618a7ee/go.mod h1:47xrISO71vJ83LSMm8+yIDsUbKktUp48Ovt7RR6VbRs= go.opentelemetry.io/collector/pdata v1.14.2-0.20240829190554-7da6b618a7ee h1:vqnRTZckt4i+bGcR+d/LAOAe4nAAs/KkN2L2CTXvW0Q= go.opentelemetry.io/collector/pdata v1.14.2-0.20240829190554-7da6b618a7ee/go.mod h1:z1dTjwwtcoXxZx2/nkHysjxMeaxe9pEmYTEr4SMNIx8= go.opentelemetry.io/collector/pdata/pprofile v0.108.2-0.20240829190554-7da6b618a7ee h1:ImK86bzHqdYHH1jNXKJLFld3stY9LuqroUvTAq3+Pws= From c1960451a44f7c1877a97c22ce26024121be13db Mon Sep 17 00:00:00 2001 From: Israel Blancas Date: Wed, 14 Aug 2024 12:38:12 +0200 Subject: [PATCH 05/10] Update connector/spanmetricsconnector/factory.go Co-authored-by: Murphy Chen --- connector/spanmetricsconnector/factory.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connector/spanmetricsconnector/factory.go b/connector/spanmetricsconnector/factory.go index 9ab3258990bb..20784d91e43a 100644 --- a/connector/spanmetricsconnector/factory.go +++ b/connector/spanmetricsconnector/factory.go @@ -20,7 +20,7 @@ import ( const ( DefaultNamespace = "traces.span.metrics" - legacyLatencyMetricNamesFeatureGateID = "connector.spanmetrics.legacyLatencyMetricNames" + legacyMetricNamesFeatureGateID = "connector.spanmetrics.legacyMetricNames" ) var legacyMetricNamesFeatureGate *featuregate.Gate From c6b47ea73e3539300dc7b59659e898afe8ace4cc Mon Sep 17 00:00:00 2001 From: Israel Blancas Date: Wed, 14 Aug 2024 13:55:50 +0200 Subject: [PATCH 06/10] Fix error Signed-off-by: Israel Blancas --- connector/spanmetricsconnector/factory.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/connector/spanmetricsconnector/factory.go b/connector/spanmetricsconnector/factory.go index 20784d91e43a..a158377ee91a 100644 --- a/connector/spanmetricsconnector/factory.go +++ b/connector/spanmetricsconnector/factory.go @@ -19,7 +19,7 @@ import ( ) const ( - DefaultNamespace = "traces.span.metrics" + DefaultNamespace = "traces.span.metrics" legacyMetricNamesFeatureGateID = "connector.spanmetrics.legacyMetricNames" ) @@ -28,7 +28,7 @@ var legacyMetricNamesFeatureGate *featuregate.Gate func init() { // TODO: Remove this feature gate when the legacy metric names are removed. legacyMetricNamesFeatureGate = featuregate.GlobalRegistry().MustRegister( - legacyLatencyMetricNamesFeatureGateID, + legacyMetricNamesFeatureGateID, featuregate.StageBeta, featuregate.WithRegisterDescription("When enabled, connector uses legacy metric names."), featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/33227"), From 0e94ffc604a97cdb72532a0bf3dcd715930fc8a1 Mon Sep 17 00:00:00 2001 From: Israel Blancas Date: Mon, 19 Aug 2024 20:32:56 +0200 Subject: [PATCH 07/10] Apply feedback from code review Signed-off-by: Israel Blancas --- connector/spanmetricsconnector/README.md | 4 +- .../spanmetricsconnector/connector_test.go | 102 +++++++++++------- connector/spanmetricsconnector/factory.go | 2 +- 3 files changed, 69 insertions(+), 39 deletions(-) diff --git a/connector/spanmetricsconnector/README.md b/connector/spanmetricsconnector/README.md index fc8af6a22f78..9919b3cbad09 100644 --- a/connector/spanmetricsconnector/README.md +++ b/connector/spanmetricsconnector/README.md @@ -111,7 +111,7 @@ The following settings can be optionally configured: cumulative temporality to avoid memory leaks and correct metric timestamp resets. - `aggregation_temporality` (default: `AGGREGATION_TEMPORALITY_CUMULATIVE`): Defines the aggregation temporality of the generated metrics. One of either `AGGREGATION_TEMPORALITY_CUMULATIVE` or `AGGREGATION_TEMPORALITY_DELTA`. -- `namespace`: Defines the namespace of the generated metrics. If `namespace` provided, generated metric name will be added `namespace.` prefix. +- `namespace`: Defines the namespace of the generated metrics. If `namespace` provided, generated metric name will be added `namespace.` prefix. Default value is `traces.span.metrics`. - `metrics_flush_interval` (default: `60s`): Defines the flush interval of the generated metrics. - `metrics_expiration` (default: `0`): Defines the expiration time as `time.Duration`, after which, if no new spans are received, metrics will no longer be exported. Setting to `0` means the metrics will never expire (default behavior). - `metric_timestamp_cache_size` (default `1000`): Only relevant for delta temporality span metrics. Controls the size of the cache used to keep track of a metric's TimestampUnixNano the last time it was flushed. When a metric is evicted from the cache, its next data point will indicate a "reset" in the series. Downstream components converting from delta to cumulative, like `prometheusexporter`, may handle these resets by setting cumulative counters back to 0. @@ -122,6 +122,8 @@ The following settings can be optionally configured: - `dimensions`: (mandatory if `enabled`) the list of the span's event attributes to add as dimensions to the events metric, which will be included _on top of_ the common and configured `dimensions` for span and resource attributes. - `resource_metrics_key_attributes`: Filter the resource attributes used to produce the resource metrics key map hash. Use this in case changing resource attributes (e.g. process id) are breaking counter metrics. +The feature gate `connector.spanmetrics.legacyMetricNames` (disabled by default) controls the connector to use legacy metric names. + ## Examples The following is a simple example usage of the `spanmetrics` connector. diff --git a/connector/spanmetricsconnector/connector_test.go b/connector/spanmetricsconnector/connector_test.go index 893a32c2ae31..9c7042e7a6eb 100644 --- a/connector/spanmetricsconnector/connector_test.go +++ b/connector/spanmetricsconnector/connector_test.go @@ -18,6 +18,7 @@ import ( "go.opentelemetry.io/collector/connector/connectortest" "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/consumer/consumertest" + "go.opentelemetry.io/collector/featuregate" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pmetric" "go.opentelemetry.io/collector/pdata/ptrace" @@ -1053,53 +1054,80 @@ func BenchmarkConnectorConsumeTraces(b *testing.B) { } func TestExcludeDimensionsConsumeTraces(t *testing.T) { - excludeDimensions := []string{"span.kind", "span.name", "totallyWrongNameDoesNotAffectAnything"} - p, err := newConnectorImp(stringp("defaultNullValue"), explicitHistogramsConfig, disabledExemplarsConfig, disabledEventsConfig, cumulative, 0, []string{}, 1000, clockwork.NewFakeClock(), excludeDimensions...) - require.NoError(t, err) - traces := buildSampleTrace() - // Test - ctx := metadata.NewIncomingContext(context.Background(), nil) + testcases := []struct { + dsc string + featureGateEnabled bool + }{ + { + dsc: fmt.Sprintf("%s enabled", legacyMetricNamesFeatureGateID), + featureGateEnabled: true, + }, + { + dsc: fmt.Sprintf("%s disabled", legacyMetricNamesFeatureGateID), + featureGateEnabled: false, + }, + } - err = p.ConsumeTraces(ctx, traces) - require.NoError(t, err) - metrics := p.buildMetrics() + excludeDimensions := []string{"span.kind", "span.name", "totallyWrongNameDoesNotAffectAnything"} + for _, tc := range testcases { + tc := tc + t.Run(tc.dsc, func(t *testing.T) { + // Set feature gate value + previousValue := legacyMetricNamesFeatureGate.IsEnabled() + require.NoError(t, featuregate.GlobalRegistry().Set(legacyMetricNamesFeatureGate.ID(), tc.featureGateEnabled)) + defer func() { + require.NoError(t, featuregate.GlobalRegistry().Set(legacyMetricNamesFeatureGate.ID(), previousValue)) + }() + + p, err := newConnectorImp(stringp("defaultNullValue"), explicitHistogramsConfig, disabledExemplarsConfig, disabledEventsConfig, cumulative, 0, []string{}, 1000, clockwork.NewFakeClock(), excludeDimensions...) + require.NoError(t, err) + traces := buildSampleTrace() - for i := 0; i < metrics.ResourceMetrics().Len(); i++ { - rm := metrics.ResourceMetrics().At(i) - ism := rm.ScopeMetrics() - // Checking all metrics, naming notice: ilmC/mC - C here is for Counter. - for ilmC := 0; ilmC < ism.Len(); ilmC++ { - m := ism.At(ilmC).Metrics() - for mC := 0; mC < m.Len(); mC++ { - metric := m.At(mC) - // We check only sum and histogram metrics here, because for now only they are present in this module. + ctx := metadata.NewIncomingContext(context.Background(), nil) - switch metric.Type() { - case pmetric.MetricTypeExponentialHistogram, pmetric.MetricTypeHistogram: - { - dp := metric.Histogram().DataPoints() - for dpi := 0; dpi < dp.Len(); dpi++ { - for attributeKey := range dp.At(dpi).Attributes().AsRaw() { - assert.NotContains(t, excludeDimensions, attributeKey) - } + err = p.ConsumeTraces(ctx, traces) + require.NoError(t, err) + metrics := p.buildMetrics() - } - } - case pmetric.MetricTypeEmpty, pmetric.MetricTypeGauge, pmetric.MetricTypeSum, pmetric.MetricTypeSummary: - { - dp := metric.Sum().DataPoints() - for dpi := 0; dpi < dp.Len(); dpi++ { - for attributeKey := range dp.At(dpi).Attributes().AsRaw() { - assert.NotContains(t, excludeDimensions, attributeKey) + for i := 0; i < metrics.ResourceMetrics().Len(); i++ { + rm := metrics.ResourceMetrics().At(i) + ism := rm.ScopeMetrics() + // Checking all metrics, naming notice: ilmC/mC - C here is for Counter. + for ilmC := 0; ilmC < ism.Len(); ilmC++ { + m := ism.At(ilmC).Metrics() + for mC := 0; mC < m.Len(); mC++ { + metric := m.At(mC) + // We check only sum and histogram metrics here, because for now only they are present in this module. + + switch metric.Type() { + case pmetric.MetricTypeExponentialHistogram, pmetric.MetricTypeHistogram: + { + dp := metric.Histogram().DataPoints() + for dpi := 0; dpi < dp.Len(); dpi++ { + for attributeKey := range dp.At(dpi).Attributes().AsRaw() { + assert.NotContains(t, excludeDimensions, attributeKey) + } + + } + } + case pmetric.MetricTypeEmpty, pmetric.MetricTypeGauge, pmetric.MetricTypeSum, pmetric.MetricTypeSummary: + { + dp := metric.Sum().DataPoints() + for dpi := 0; dpi < dp.Len(); dpi++ { + for attributeKey := range dp.At(dpi).Attributes().AsRaw() { + assert.NotContains(t, excludeDimensions, attributeKey) + } + } } + } - } + } } - } - } + + }) } } diff --git a/connector/spanmetricsconnector/factory.go b/connector/spanmetricsconnector/factory.go index a158377ee91a..4f921ed8fe1c 100644 --- a/connector/spanmetricsconnector/factory.go +++ b/connector/spanmetricsconnector/factory.go @@ -29,7 +29,7 @@ func init() { // TODO: Remove this feature gate when the legacy metric names are removed. legacyMetricNamesFeatureGate = featuregate.GlobalRegistry().MustRegister( legacyMetricNamesFeatureGateID, - featuregate.StageBeta, + featuregate.StageAlpha, // Alpha because we want it disabled by default. featuregate.WithRegisterDescription("When enabled, connector uses legacy metric names."), featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/33227"), ) From 816425003138685c80ef23aa3063d6467aa449e5 Mon Sep 17 00:00:00 2001 From: Israel Blancas Date: Tue, 20 Aug 2024 17:37:02 +0200 Subject: [PATCH 08/10] Apply changes requested in code review Signed-off-by: Israel Blancas --- .chloggen/feat_33227.yaml | 1 - connector/spanmetricsconnector/README.md | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.chloggen/feat_33227.yaml b/.chloggen/feat_33227.yaml index 56f9d6fb61fa..8ce81dff70e9 100644 --- a/.chloggen/feat_33227.yaml +++ b/.chloggen/feat_33227.yaml @@ -16,7 +16,6 @@ issues: [33227, 32818] # These lines will be padded with 2 spaces and then inserted directly into the document. # Use pipe (|) for multiline entries. subtext: "Default namespace for the generated metrics is traces.span.metrics now. | - We continue generating the metrics without namespace but marked them as deprecated. | The deprecated metrics are: calls, duration and events. | The feature flag connector.spanmetrics.legacyLatencyMetricNames was added to revert the behavior." diff --git a/connector/spanmetricsconnector/README.md b/connector/spanmetricsconnector/README.md index 9919b3cbad09..075ce606cbcf 100644 --- a/connector/spanmetricsconnector/README.md +++ b/connector/spanmetricsconnector/README.md @@ -111,7 +111,7 @@ The following settings can be optionally configured: cumulative temporality to avoid memory leaks and correct metric timestamp resets. - `aggregation_temporality` (default: `AGGREGATION_TEMPORALITY_CUMULATIVE`): Defines the aggregation temporality of the generated metrics. One of either `AGGREGATION_TEMPORALITY_CUMULATIVE` or `AGGREGATION_TEMPORALITY_DELTA`. -- `namespace`: Defines the namespace of the generated metrics. If `namespace` provided, generated metric name will be added `namespace.` prefix. Default value is `traces.span.metrics`. +- `namespace` (default: `traces.span.metrics`): Defines the namespace of the generated metrics. If `namespace` provided, generated metric name will be added `namespace.` prefix. - `metrics_flush_interval` (default: `60s`): Defines the flush interval of the generated metrics. - `metrics_expiration` (default: `0`): Defines the expiration time as `time.Duration`, after which, if no new spans are received, metrics will no longer be exported. Setting to `0` means the metrics will never expire (default behavior). - `metric_timestamp_cache_size` (default `1000`): Only relevant for delta temporality span metrics. Controls the size of the cache used to keep track of a metric's TimestampUnixNano the last time it was flushed. When a metric is evicted from the cache, its next data point will indicate a "reset" in the series. Downstream components converting from delta to cumulative, like `prometheusexporter`, may handle these resets by setting cumulative counters back to 0. From 5e036c33ddd2b4a7bf56cf04b4eb4936e8693318 Mon Sep 17 00:00:00 2001 From: Israel Blancas Date: Mon, 26 Aug 2024 20:44:25 +0200 Subject: [PATCH 09/10] Update .chloggen/feat_33227.yaml Co-authored-by: Rafael Pax --- .chloggen/feat_33227.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.chloggen/feat_33227.yaml b/.chloggen/feat_33227.yaml index 8ce81dff70e9..c4a956723098 100644 --- a/.chloggen/feat_33227.yaml +++ b/.chloggen/feat_33227.yaml @@ -7,7 +7,7 @@ change_type: breaking component: spanmetricsconnector # A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). -note: Improve consistency between metrics generated by spanmetricsconnector. Added traces.span.metrics as default namespace namespace +note: Improve consistency between metrics generated by spanmetricsconnector. Added traces.span.metrics as default namespace # Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. issues: [33227, 32818] From 8ad7389f8a7ad23c345b6d7df90641e217e85990 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juraci=20Paix=C3=A3o=20Kr=C3=B6hling?= Date: Tue, 3 Sep 2024 10:11:19 +0200 Subject: [PATCH 10/10] fix collector version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Juraci Paixão Kröhling --- connector/spanmetricsconnector/go.mod | 4 ++-- connector/spanmetricsconnector/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/connector/spanmetricsconnector/go.mod b/connector/spanmetricsconnector/go.mod index 1621121f6337..de2e7bcbb8ed 100644 --- a/connector/spanmetricsconnector/go.mod +++ b/connector/spanmetricsconnector/go.mod @@ -48,8 +48,8 @@ require ( github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.56.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect - go.opentelemetry.io/collector v0.108.1 // indirect - go.opentelemetry.io/collector/component/componentprofiles v0.108.1 // indirect + go.opentelemetry.io/collector v0.108.2-0.20240829190554-7da6b618a7ee // indirect + go.opentelemetry.io/collector/component/componentprofiles v0.108.2-0.20240829190554-7da6b618a7ee // indirect go.opentelemetry.io/collector/config/configtelemetry v0.108.2-0.20240829190554-7da6b618a7ee // indirect go.opentelemetry.io/collector/consumer/consumerprofiles v0.108.2-0.20240829190554-7da6b618a7ee // indirect go.opentelemetry.io/collector/pdata/pprofile v0.108.2-0.20240829190554-7da6b618a7ee // indirect diff --git a/connector/spanmetricsconnector/go.sum b/connector/spanmetricsconnector/go.sum index ee73fb0805bc..0109ab036b88 100644 --- a/connector/spanmetricsconnector/go.sum +++ b/connector/spanmetricsconnector/go.sum @@ -76,12 +76,12 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.opentelemetry.io/collector v0.108.1 h1:c3JZU5g5KezDXaMgL7GDFB7ihuLNzXo6eBuaJOmBiDA= -go.opentelemetry.io/collector v0.108.1/go.mod h1:7GL32WiQkZzJjxHstHme9igzYumDsw1hFPep3v1guHQ= +go.opentelemetry.io/collector v0.108.2-0.20240829190554-7da6b618a7ee h1:qwS5eXqdHQ8/H6adgQXaqYNv/lco6F7Xl7keuwQ+pWA= +go.opentelemetry.io/collector v0.108.2-0.20240829190554-7da6b618a7ee/go.mod h1:XhZ6xcWvPeAAqp++6tVqvSphaaAs5loWzolvEjLMkUk= go.opentelemetry.io/collector/component v0.108.2-0.20240829190554-7da6b618a7ee h1:huxxQgE9nyBcwUtiJaJFTupk0MhXsy8Y3ZclJ0mCREY= go.opentelemetry.io/collector/component v0.108.2-0.20240829190554-7da6b618a7ee/go.mod h1:Z9M91arav1Mf67csQf2484IMUx5a++4oAlikGM28AoI= -go.opentelemetry.io/collector/component/componentprofiles v0.108.1 h1:u+lWWyhGvbcqG39QkV/JbcoTILpWdmnRilFeM5o6790= -go.opentelemetry.io/collector/component/componentprofiles v0.108.1/go.mod h1:abcl/NfiyaGjWIGMoUUZrzpEiDYGvwd/2rKt/1jdSYg= +go.opentelemetry.io/collector/component/componentprofiles v0.108.2-0.20240829190554-7da6b618a7ee h1:kbQyq10n9Ow++Oa0uek9K5jcfMiYWX7leWiaLhqCVAI= +go.opentelemetry.io/collector/component/componentprofiles v0.108.2-0.20240829190554-7da6b618a7ee/go.mod h1:odJ6Mab67J9ROonsZFXLARckTJx0augEi2H/q12w5Jg= go.opentelemetry.io/collector/config/configtelemetry v0.108.2-0.20240829190554-7da6b618a7ee h1:LGoJWO9fANov2zNgtX4uYuH6YI4p+H0I/PbY2S+9wLk= go.opentelemetry.io/collector/config/configtelemetry v0.108.2-0.20240829190554-7da6b618a7ee/go.mod h1:R0MBUxjSMVMIhljuDHWIygzzJWQyZHXXWIgQNxcFwhc= go.opentelemetry.io/collector/confmap v1.14.2-0.20240829190554-7da6b618a7ee h1:+AZ6R3DhcUGDVQVya18ZVoZK863f8a1LXhHBq9TKkuw=