From df4701370223955887d8d17680fc576595b00934 Mon Sep 17 00:00:00 2001 From: Yang Song Date: Thu, 6 Feb 2025 21:57:08 -0500 Subject: [PATCH] [OTAGENT-21] respect the FF metricremappingdisabled in serializer exporter (#33560) --- .../exporter/serializerexporter/exporter.go | 6 +- .../serializerexporter/exporter_test.go | 59 +++++++++++++++++++ .../exporter/serializerexporter/go.mod | 2 +- 3 files changed, 65 insertions(+), 2 deletions(-) diff --git a/comp/otelcol/otlp/components/exporter/serializerexporter/exporter.go b/comp/otelcol/otlp/components/exporter/serializerexporter/exporter.go index f2617bf216d7c..a98e8e37aa02f 100644 --- a/comp/otelcol/otlp/components/exporter/serializerexporter/exporter.go +++ b/comp/otelcol/otlp/components/exporter/serializerexporter/exporter.go @@ -16,6 +16,7 @@ import ( "github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes" "github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes/source" "github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/metrics" + pkgdatadog "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog" datadogconfig "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog/config" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/exporter/exporterhelper" @@ -87,7 +88,10 @@ func translatorFromConfig( metrics.WithFallbackSourceProvider(hostGetter), metrics.WithHistogramMode(histogramMode), metrics.WithDeltaTTL(cfg.DeltaTTL), - metrics.WithOTelPrefix(), + } + + if !pkgdatadog.MetricRemappingDisabledFeatureGate.IsEnabled() { + options = append(options, metrics.WithOTelPrefix()) } if statsIn != nil { diff --git a/comp/otelcol/otlp/components/exporter/serializerexporter/exporter_test.go b/comp/otelcol/otlp/components/exporter/serializerexporter/exporter_test.go index b27c5335c8dc2..dd838b535d5eb 100644 --- a/comp/otelcol/otlp/components/exporter/serializerexporter/exporter_test.go +++ b/comp/otelcol/otlp/components/exporter/serializerexporter/exporter_test.go @@ -12,10 +12,12 @@ import ( "strings" "testing" + pkgdatadog "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component/componenttest" "go.opentelemetry.io/collector/exporter/exportertest" + "go.opentelemetry.io/collector/featuregate" "go.opentelemetry.io/collector/pdata/pmetric" "github.com/DataDog/datadog-agent/pkg/metrics" @@ -323,6 +325,63 @@ func Test_ConsumeMetrics_MetricOrigins(t *testing.T) { } } +func TestMetricPrefix(t *testing.T) { + testMetricPrefixWithFeatureGates(t, false, "datadog_trace_agent_retries", "otelcol_datadog_trace_agent_retries") + testMetricPrefixWithFeatureGates(t, false, "system.memory.usage", "otel.system.memory.usage") + testMetricPrefixWithFeatureGates(t, false, "process.cpu.utilization", "otel.process.cpu.utilization") + testMetricPrefixWithFeatureGates(t, false, "kafka.producer.request-rate", "otel.kafka.producer.request-rate") + + testMetricPrefixWithFeatureGates(t, true, "datadog_trace_agent_retries", "datadog_trace_agent_retries") + testMetricPrefixWithFeatureGates(t, true, "system.memory.usage", "system.memory.usage") + testMetricPrefixWithFeatureGates(t, true, "process.cpu.utilization", "process.cpu.utilization") + testMetricPrefixWithFeatureGates(t, true, "kafka.producer.request-rate", "kafka.producer.request-rate") +} + +func testMetricPrefixWithFeatureGates(t *testing.T, disablePrefix bool, inName string, outName string) { + prevVal := pkgdatadog.MetricRemappingDisabledFeatureGate.IsEnabled() + require.NoError(t, featuregate.GlobalRegistry().Set(pkgdatadog.MetricRemappingDisabledFeatureGate.ID(), disablePrefix)) + defer func() { + require.NoError(t, featuregate.GlobalRegistry().Set(pkgdatadog.MetricRemappingDisabledFeatureGate.ID(), prevVal)) + }() + + rec := &metricRecorder{} + ctx := context.Background() + f := NewFactory(rec, &MockTagEnricher{}, func(context.Context) (string, error) { + return "", nil + }, nil, nil) + cfg := f.CreateDefaultConfig().(*ExporterConfig) + exp, err := f.CreateMetrics( + ctx, + exportertest.NewNopSettings(), + cfg, + ) + require.NoError(t, err) + require.NoError(t, exp.Start(ctx, componenttest.NewNopHost())) + + md := pmetric.NewMetrics() + rms := md.ResourceMetrics() + rm := rms.AppendEmpty() + ilms := rm.ScopeMetrics() + ilm := ilms.AppendEmpty() + metricsArray := ilm.Metrics() + met := metricsArray.AppendEmpty() + met.SetName(inName) + met.SetEmptySum() + met.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityDelta) + dp := met.Sum().DataPoints().AppendEmpty() + dp.SetIntValue(100) + + require.NoError(t, exp.ConsumeMetrics(ctx, md)) + require.NoError(t, exp.Shutdown(ctx)) + + for _, serie := range rec.series { + if serie.Name == outName { + return + } + } + t.Errorf("%s not found in metrics", outName) +} + func newMetrics( histogramMetricName string, histogramDataPoint pmetric.HistogramDataPoint, diff --git a/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod b/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod index 67eceb8a61581..c1bf0f706be37 100644 --- a/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod +++ b/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod @@ -238,7 +238,7 @@ require ( require ( github.com/hashicorp/go-version v1.7.0 // indirect - go.opentelemetry.io/collector/featuregate v1.25.0 // indirect + go.opentelemetry.io/collector/featuregate v1.25.0 ) require (