diff --git a/exporter/prometheusexporter/collector_test.go b/exporter/prometheusexporter/collector_test.go index 3cabb957e6b0..6d0d895e2f28 100644 --- a/exporter/prometheusexporter/collector_test.go +++ b/exporter/prometheusexporter/collector_test.go @@ -448,7 +448,6 @@ func TestCollectMetrics(t *testing.T) { continue } - require.Contains(t, m.Desc().String(), "fqName: \"test_space_test_metric\"") require.Regexp(t, `variableLabels: \[.*label_1.+label_2.+job.+instance.*\]`, m.Desc().String()) pbMetric := io_prometheus_client.Metric{} @@ -467,11 +466,13 @@ func TestCollectMetrics(t *testing.T) { switch tt.metricType { case prometheus.CounterValue: + require.Contains(t, m.Desc().String(), "fqName: \"test_space_test_metric_total\"") require.Equal(t, tt.value, *pbMetric.Counter.Value) require.Nil(t, pbMetric.Gauge) require.Nil(t, pbMetric.Histogram) require.Nil(t, pbMetric.Summary) case prometheus.GaugeValue: + require.Contains(t, m.Desc().String(), "fqName: \"test_space_test_metric\"") require.Equal(t, tt.value, *pbMetric.Gauge.Value) require.Nil(t, pbMetric.Counter) require.Nil(t, pbMetric.Histogram) diff --git a/exporter/prometheusexporter/prometheus_test.go b/exporter/prometheusexporter/prometheus_test.go index c1478d7d2512..3193bf92259e 100644 --- a/exporter/prometheusexporter/prometheus_test.go +++ b/exporter/prometheusexporter/prometheus_test.go @@ -160,10 +160,10 @@ func TestPrometheusExporter_WithTLS(t *testing.T) { _ = rsp.Body.Close() want := []string{ - `# HELP test_counter_int`, - `# TYPE test_counter_int counter`, - `test_counter_int{code2="one2",foo2="bar2",label_1="label-value-1",resource_attr="resource-attr-val-1"} 123 1581452773000`, - `test_counter_int{code2="one2",foo2="bar2",label_2="label-value-2",resource_attr="resource-attr-val-1"} 456 1581452773000`, + `# HELP test_counter_int_total`, + `# TYPE test_counter_int_total counter`, + `test_counter_int_total{code2="one2",foo2="bar2",label_1="label-value-1",resource_attr="resource-attr-val-1"} 123 1581452773000`, + `test_counter_int_total{code2="one2",foo2="bar2",label_2="label-value-2",resource_attr="resource-attr-val-1"} 456 1581452773000`, } for _, w := range want { @@ -220,18 +220,18 @@ func TestPrometheusExporter_endToEndMultipleTargets(t *testing.T) { blob, _ := io.ReadAll(res.Body) _ = res.Body.Close() want := []string{ - `# HELP test_metric_1_this_one_there_where Extra ones`, - `# TYPE test_metric_1_this_one_there_where counter`, - fmt.Sprintf(`test_metric_1_this_one_there_where{arch="x86",code1="one1",foo1="bar1",instance="localhost:8080",job="cpu-exporter",os="windows"} %v`, 99+128), - fmt.Sprintf(`test_metric_1_this_one_there_where{arch="x86",code1="one1",foo1="bar1",instance="localhost:8080",job="cpu-exporter",os="linux"} %v`, 100+128), - fmt.Sprintf(`test_metric_1_this_one_there_where{arch="x86",code1="one1",foo1="bar1",instance="localhost:8081",job="cpu-exporter",os="windows"} %v`, 99+128), - fmt.Sprintf(`test_metric_1_this_one_there_where{arch="x86",code1="one1",foo1="bar1",instance="localhost:8081",job="cpu-exporter",os="linux"} %v`, 100+128), - `# HELP test_metric_2_this_one_there_where Extra ones`, - `# TYPE test_metric_2_this_one_there_where counter`, - fmt.Sprintf(`test_metric_2_this_one_there_where{arch="x86",code1="one1",foo1="bar1",instance="localhost:8080",job="cpu-exporter",os="windows"} %v`, 99+delta), - fmt.Sprintf(`test_metric_2_this_one_there_where{arch="x86",code1="one1",foo1="bar1",instance="localhost:8080",job="cpu-exporter",os="linux"} %v`, 100+delta), - fmt.Sprintf(`test_metric_2_this_one_there_where{arch="x86",code1="one1",foo1="bar1",instance="localhost:8081",job="cpu-exporter",os="windows"} %v`, 99+delta), - fmt.Sprintf(`test_metric_2_this_one_there_where{arch="x86",code1="one1",foo1="bar1",instance="localhost:8081",job="cpu-exporter",os="linux"} %v`, 100+delta), + `# HELP test_metric_1_this_one_there_where_total Extra ones`, + `# TYPE test_metric_1_this_one_there_where_total counter`, + fmt.Sprintf(`test_metric_1_this_one_there_where_total{arch="x86",code1="one1",foo1="bar1",instance="localhost:8080",job="cpu-exporter",os="windows"} %v`, 99+128), + fmt.Sprintf(`test_metric_1_this_one_there_where_total{arch="x86",code1="one1",foo1="bar1",instance="localhost:8080",job="cpu-exporter",os="linux"} %v`, 100+128), + fmt.Sprintf(`test_metric_1_this_one_there_where_total{arch="x86",code1="one1",foo1="bar1",instance="localhost:8081",job="cpu-exporter",os="windows"} %v`, 99+128), + fmt.Sprintf(`test_metric_1_this_one_there_where_total{arch="x86",code1="one1",foo1="bar1",instance="localhost:8081",job="cpu-exporter",os="linux"} %v`, 100+128), + `# HELP test_metric_2_this_one_there_where_total Extra ones`, + `# TYPE test_metric_2_this_one_there_where_total counter`, + fmt.Sprintf(`test_metric_2_this_one_there_where_total{arch="x86",code1="one1",foo1="bar1",instance="localhost:8080",job="cpu-exporter",os="windows"} %v`, 99+delta), + fmt.Sprintf(`test_metric_2_this_one_there_where_total{arch="x86",code1="one1",foo1="bar1",instance="localhost:8080",job="cpu-exporter",os="linux"} %v`, 100+delta), + fmt.Sprintf(`test_metric_2_this_one_there_where_total{arch="x86",code1="one1",foo1="bar1",instance="localhost:8081",job="cpu-exporter",os="windows"} %v`, 99+delta), + fmt.Sprintf(`test_metric_2_this_one_there_where_total{arch="x86",code1="one1",foo1="bar1",instance="localhost:8081",job="cpu-exporter",os="linux"} %v`, 100+delta), } for _, w := range want { @@ -300,14 +300,14 @@ func TestPrometheusExporter_endToEnd(t *testing.T) { blob, _ := io.ReadAll(res.Body) _ = res.Body.Close() want := []string{ - `# HELP test_metric_1_this_one_there_where Extra ones`, - `# TYPE test_metric_1_this_one_there_where counter`, - fmt.Sprintf(`test_metric_1_this_one_there_where{arch="x86",code1="one1",foo1="bar1",instance="localhost:8080",job="cpu-exporter",os="windows"} %v`, 99+128), - fmt.Sprintf(`test_metric_1_this_one_there_where{arch="x86",code1="one1",foo1="bar1",instance="localhost:8080",job="cpu-exporter",os="linux"} %v`, 100+128), - `# HELP test_metric_2_this_one_there_where Extra ones`, - `# TYPE test_metric_2_this_one_there_where counter`, - fmt.Sprintf(`test_metric_2_this_one_there_where{arch="x86",code1="one1",foo1="bar1",instance="localhost:8080",job="cpu-exporter",os="windows"} %v`, 99+delta), - fmt.Sprintf(`test_metric_2_this_one_there_where{arch="x86",code1="one1",foo1="bar1",instance="localhost:8080",job="cpu-exporter",os="linux"} %v`, 100+delta), + `# HELP test_metric_1_this_one_there_where_total Extra ones`, + `# TYPE test_metric_1_this_one_there_where_total counter`, + fmt.Sprintf(`test_metric_1_this_one_there_where_total{arch="x86",code1="one1",foo1="bar1",instance="localhost:8080",job="cpu-exporter",os="windows"} %v`, 99+128), + fmt.Sprintf(`test_metric_1_this_one_there_where_total{arch="x86",code1="one1",foo1="bar1",instance="localhost:8080",job="cpu-exporter",os="linux"} %v`, 100+128), + `# HELP test_metric_2_this_one_there_where_total Extra ones`, + `# TYPE test_metric_2_this_one_there_where_total counter`, + fmt.Sprintf(`test_metric_2_this_one_there_where_total{arch="x86",code1="one1",foo1="bar1",instance="localhost:8080",job="cpu-exporter",os="windows"} %v`, 99+delta), + fmt.Sprintf(`test_metric_2_this_one_there_where_total{arch="x86",code1="one1",foo1="bar1",instance="localhost:8080",job="cpu-exporter",os="linux"} %v`, 100+delta), } for _, w := range want { @@ -377,14 +377,14 @@ func TestPrometheusExporter_endToEndWithTimestamps(t *testing.T) { blob, _ := io.ReadAll(res.Body) _ = res.Body.Close() want := []string{ - `# HELP test_metric_1_this_one_there_where Extra ones`, - `# TYPE test_metric_1_this_one_there_where counter`, - fmt.Sprintf(`test_metric_1_this_one_there_where{arch="x86",code2="one2",foo2="bar2",instance="localhost:8080",job="node-exporter",os="windows"} %v %v`, 99+128, 1543160298100+128000), - fmt.Sprintf(`test_metric_1_this_one_there_where{arch="x86",code2="one2",foo2="bar2",instance="localhost:8080",job="node-exporter",os="linux"} %v %v`, 100+128, 1543160298100), - `# HELP test_metric_2_this_one_there_where Extra ones`, - `# TYPE test_metric_2_this_one_there_where counter`, - fmt.Sprintf(`test_metric_2_this_one_there_where{arch="x86",code2="one2",foo2="bar2",instance="localhost:8080",job="node-exporter",os="windows"} %v %v`, 99+delta, 1543160298100+delta*1000), - fmt.Sprintf(`test_metric_2_this_one_there_where{arch="x86",code2="one2",foo2="bar2",instance="localhost:8080",job="node-exporter",os="linux"} %v %v`, 100+delta, 1543160298100), + `# HELP test_metric_1_this_one_there_where_total Extra ones`, + `# TYPE test_metric_1_this_one_there_where_total counter`, + fmt.Sprintf(`test_metric_1_this_one_there_where_total{arch="x86",code2="one2",foo2="bar2",instance="localhost:8080",job="node-exporter",os="windows"} %v %v`, 99+128, 1543160298100+128000), + fmt.Sprintf(`test_metric_1_this_one_there_where_total{arch="x86",code2="one2",foo2="bar2",instance="localhost:8080",job="node-exporter",os="linux"} %v %v`, 100+128, 1543160298100), + `# HELP test_metric_2_this_one_there_where_total Extra ones`, + `# TYPE test_metric_2_this_one_there_where_total counter`, + fmt.Sprintf(`test_metric_2_this_one_there_where_total{arch="x86",code2="one2",foo2="bar2",instance="localhost:8080",job="node-exporter",os="windows"} %v %v`, 99+delta, 1543160298100+delta*1000), + fmt.Sprintf(`test_metric_2_this_one_there_where_total{arch="x86",code2="one2",foo2="bar2",instance="localhost:8080",job="node-exporter",os="linux"} %v %v`, 100+delta, 1543160298100), } for _, w := range want { @@ -457,10 +457,10 @@ func TestPrometheusExporter_endToEndWithResource(t *testing.T) { _ = rsp.Body.Close() want := []string{ - `# HELP test_counter_int`, - `# TYPE test_counter_int counter`, - `test_counter_int{code2="one2",foo2="bar2",label_1="label-value-1",resource_attr="resource-attr-val-1"} 123 1581452773000`, - `test_counter_int{code2="one2",foo2="bar2",label_2="label-value-2",resource_attr="resource-attr-val-1"} 456 1581452773000`, + `# HELP test_counter_int_total`, + `# TYPE test_counter_int_total counter`, + `test_counter_int_total{code2="one2",foo2="bar2",label_1="label-value-1",resource_attr="resource-attr-val-1"} 123 1581452773000`, + `test_counter_int_total{code2="one2",foo2="bar2",label_2="label-value-2",resource_attr="resource-attr-val-1"} 456 1581452773000`, } for _, w := range want { diff --git a/pkg/translator/prometheus/README.md b/pkg/translator/prometheus/README.md index 7c29facac63c..700f442b45c3 100644 --- a/pkg/translator/prometheus/README.md +++ b/pkg/translator/prometheus/README.md @@ -12,10 +12,10 @@ > **Warning** > -> This feature can be enabled with [feature gate](https://github.com/open-telemetry/opentelemetry-collector/tree/main/featuregate) `pkg.translator.prometheus.NormalizeName`. It is disabled by default (alpha stage). +> This feature can be disabled with [feature gate](https://github.com/open-telemetry/opentelemetry-collector/tree/main/featuregate) `pkg.translator.prometheus.NormalizeName`. It is enabled by default (beta stage). > > ```shell-session -> $ otelcol --config=config.yaml --feature-gates=pkg.translator.prometheus.NormalizeName +> $ otelcol --config=config.yaml --feature-gates=-pkg.translator.prometheus.NormalizeName > ``` #### List of transformations to convert OpenTelemetry metrics to Prometheus metrics diff --git a/pkg/translator/prometheus/normalize_name.go b/pkg/translator/prometheus/normalize_name.go index dfb965e9793f..48af8ba95e7b 100644 --- a/pkg/translator/prometheus/normalize_name.go +++ b/pkg/translator/prometheus/normalize_name.go @@ -73,7 +73,7 @@ var perUnitMap = map[string]string{ var normalizeNameGate = featuregate.GlobalRegistry().MustRegister( "pkg.translator.prometheus.NormalizeName", - featuregate.StageAlpha, + featuregate.StageBeta, featuregate.WithRegisterDescription("Controls whether metrics names are automatically normalized to follow Prometheus naming convention"), featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/8950"), ) diff --git a/pkg/translator/prometheus/normalize_name_test.go b/pkg/translator/prometheus/normalize_name_test.go index 3175e9e04ed5..d4debc53af7b 100644 --- a/pkg/translator/prometheus/normalize_name_test.go +++ b/pkg/translator/prometheus/normalize_name_test.go @@ -8,6 +8,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/featuregate" "go.opentelemetry.io/collector/pdata/pmetric" "github.com/open-telemetry/opentelemetry-collector-contrib/internal/common/testutil" @@ -168,6 +169,16 @@ func TestTrimPromSuffixes(t *testing.T) { } +func TestTrimPromSuffixesWithFeatureGateDisabled(t *testing.T) { + registry := featuregate.NewRegistry() + _, err := registry.Register(normalizeNameGate.ID(), featuregate.StageAlpha) + require.NoError(t, err) + normalizer := NewNormalizer(registry) + + assert.Equal(t, "apache_current_connections", normalizer.TrimPromSuffixes("apache_current_connections", pmetric.MetricTypeGauge, "connections")) + assert.Equal(t, "apache_requests_total", normalizer.TrimPromSuffixes("apache_requests_total", pmetric.MetricTypeSum, "1")) +} + func TestNamespace(t *testing.T) { require.Equal(t, "space_test", normalizeName(createGauge("test", ""), "space")) require.Equal(t, "space_test", normalizeName(createGauge("#test", ""), "space")) diff --git a/pkg/translator/prometheusremotewrite/number_data_points_test.go b/pkg/translator/prometheusremotewrite/number_data_points_test.go index 39b13fcd3d9d..897be641a6b2 100644 --- a/pkg/translator/prometheusremotewrite/number_data_points_test.go +++ b/pkg/translator/prometheusremotewrite/number_data_points_test.go @@ -147,10 +147,10 @@ func TestAddSingleSumNumberDataPoint(t *testing.T) { }, want: func() map[string]*prompb.TimeSeries { labels := []prompb.Label{ - {Name: model.MetricNameLabel, Value: "test_sum"}, + {Name: model.MetricNameLabel, Value: "test_sum_total"}, } createdLabels := []prompb.Label{ - {Name: model.MetricNameLabel, Value: "test_sum" + createdSuffix}, + {Name: model.MetricNameLabel, Value: "test_sum_total" + createdSuffix}, } return map[string]*prompb.TimeSeries{ timeSeriesSignature(pmetric.MetricTypeSum.String(), &labels): { @@ -183,7 +183,7 @@ func TestAddSingleSumNumberDataPoint(t *testing.T) { }, want: func() map[string]*prompb.TimeSeries { labels := []prompb.Label{ - {Name: model.MetricNameLabel, Value: "test_sum"}, + {Name: model.MetricNameLabel, Value: "test_sum_total"}, } return map[string]*prompb.TimeSeries{ timeSeriesSignature(pmetric.MetricTypeSum.String(), &labels): { diff --git a/receiver/prometheusreceiver/metrics_receiver_helper_test.go b/receiver/prometheusreceiver/metrics_receiver_helper_test.go index d7d1dbbebc7c..ec567aef31b6 100644 --- a/receiver/prometheusreceiver/metrics_receiver_helper_test.go +++ b/receiver/prometheusreceiver/metrics_receiver_helper_test.go @@ -107,7 +107,6 @@ type testData struct { pages []mockPrometheusResponse attributes pcommon.Map validateScrapes bool - normalizedName bool validateFunc func(t *testing.T, td *testData, result []pmetric.ResourceMetrics) } @@ -222,13 +221,13 @@ func metricsCount(resourceMetric pmetric.ResourceMetrics) int { return metricsCount } -func getValidScrapes(t *testing.T, rms []pmetric.ResourceMetrics, normalizedNames bool) []pmetric.ResourceMetrics { +func getValidScrapes(t *testing.T, rms []pmetric.ResourceMetrics) []pmetric.ResourceMetrics { var out []pmetric.ResourceMetrics // rms will include failed scrapes and scrapes that received no metrics but have internal scrape metrics, filter those out for i := 0; i < len(rms); i++ { allMetrics := getMetrics(rms[i]) - if expectedScrapeMetricCount < len(allMetrics) && countScrapeMetrics(allMetrics, normalizedNames) == expectedScrapeMetricCount { - if isFirstFailedScrape(allMetrics, normalizedNames) { + if expectedScrapeMetricCount < len(allMetrics) && countScrapeMetrics(allMetrics) == expectedScrapeMetricCount { + if isFirstFailedScrape(allMetrics) { continue } assertUp(t, 1, allMetrics) @@ -240,7 +239,7 @@ func getValidScrapes(t *testing.T, rms []pmetric.ResourceMetrics, normalizedName return out } -func isFirstFailedScrape(metrics []pmetric.Metric, normalizedNames bool) bool { +func isFirstFailedScrape(metrics []pmetric.Metric) bool { for _, m := range metrics { if m.Name() == "up" { if m.Gauge().DataPoints().At(0).DoubleValue() == 1 { // assumed up will not have multiple datapoints @@ -250,7 +249,7 @@ func isFirstFailedScrape(metrics []pmetric.Metric, normalizedNames bool) bool { } for _, m := range metrics { - if isDefaultMetrics(m, normalizedNames) { + if isDefaultMetrics(m) { continue } @@ -295,13 +294,13 @@ func assertUp(t *testing.T, expected float64, metrics []pmetric.Metric) { t.Error("No 'up' metric found") } -func countScrapeMetricsRM(got pmetric.ResourceMetrics, normalizedNames bool) int { +func countScrapeMetricsRM(got pmetric.ResourceMetrics) int { n := 0 ilms := got.ScopeMetrics() for j := 0; j < ilms.Len(); j++ { ilm := ilms.At(j) for i := 0; i < ilm.Metrics().Len(); i++ { - if isDefaultMetrics(ilm.Metrics().At(i), normalizedNames) { + if isDefaultMetrics(ilm.Metrics().At(i)) { n++ } } @@ -309,29 +308,23 @@ func countScrapeMetricsRM(got pmetric.ResourceMetrics, normalizedNames bool) int return n } -func countScrapeMetrics(metrics []pmetric.Metric, normalizedNames bool) int { +func countScrapeMetrics(metrics []pmetric.Metric) int { n := 0 for _, m := range metrics { - if isDefaultMetrics(m, normalizedNames) { + if isDefaultMetrics(m) { n++ } } return n } -func isDefaultMetrics(m pmetric.Metric, normalizedNames bool) bool { +func isDefaultMetrics(m pmetric.Metric) bool { switch m.Name() { - case "up", "scrape_samples_scraped", "scrape_samples_post_metric_relabeling", "scrape_series_added": + case "up", "scrape_samples_scraped", "scrape_samples_post_metric_relabeling", "scrape_series_added", "scrape_duration": return true - - // if normalizedNames is true, we expect unit `_seconds` to be trimmed. - case "scrape_duration_seconds": - return !normalizedNames - case "scrape_duration": - return normalizedNames default: + return false } - return false } type metricTypeComparator func(*testing.T, pmetric.Metric) @@ -348,12 +341,8 @@ type dataPointExpectation struct { type testExpectation func(*testing.T, pmetric.ResourceMetrics) func doCompare(t *testing.T, name string, want pcommon.Map, got pmetric.ResourceMetrics, expectations []testExpectation) { - doCompareNormalized(t, name, want, got, expectations, false) -} - -func doCompareNormalized(t *testing.T, name string, want pcommon.Map, got pmetric.ResourceMetrics, expectations []testExpectation, normalizedNames bool) { t.Run(name, func(t *testing.T) { - assert.Equal(t, expectedScrapeMetricCount, countScrapeMetricsRM(got, normalizedNames)) + assert.Equal(t, expectedScrapeMetricCount, countScrapeMetricsRM(got)) assert.Equal(t, want.Len(), got.Resource().Attributes().Len()) for k, v := range want.AsRaw() { val, ok := got.Resource().Attributes().Get(k) @@ -630,7 +619,7 @@ func testComponent(t *testing.T, targets []*testData, useStartTimeMetric bool, t } scrapes := pResults[name] if !target.validateScrapes { - scrapes = getValidScrapes(t, pResults[name], target.normalizedName) + scrapes = getValidScrapes(t, pResults[name]) } target.validateFunc(t, target, scrapes) }) diff --git a/receiver/prometheusreceiver/metrics_receiver_honor_timestamp_test.go b/receiver/prometheusreceiver/metrics_receiver_honor_timestamp_test.go index 951934d646dd..63858421224b 100644 --- a/receiver/prometheusreceiver/metrics_receiver_honor_timestamp_test.go +++ b/receiver/prometheusreceiver/metrics_receiver_honor_timestamp_test.go @@ -43,8 +43,8 @@ var honorTimestampsPage1 = ` # TYPE go_thread gauge go_threads 19 %v -# HELP http_requests_total The total number of HTTP requests. -# TYPE http_requests_total counter +# HELP http_requests The total number of HTTP requests. +# TYPE http_requests counter http_requests_total{method="post",code="200"} 100 %v http_requests_total{method="post",code="400"} 5 %v @@ -71,8 +71,8 @@ var honorTimestampsPage2 = ` # TYPE go_thread gauge go_threads 18 %v -# HELP http_requests_total The total number of HTTP requests. -# TYPE http_requests_total counter +# HELP http_requests The total number of HTTP requests. +# TYPE http_requests counter http_requests_total{method="post",code="200"} 99 %v http_requests_total{method="post",code="400"} 3 %v @@ -101,8 +101,8 @@ var honorTimestampsPage3 = ` # TYPE go_thread gauge go_threads 19 %v -# HELP http_requests_total The total number of HTTP requests. -# TYPE http_requests_total counter +# HELP http_requests The total number of HTTP requests. +# TYPE http_requests counter http_requests_total{method="post",code="200"} 100 %v http_requests_total{method="post",code="400"} 5 %v @@ -216,7 +216,7 @@ func verifyHonorTimeStampsTrue(t *testing.T, td *testData, resourceMetrics []pme }, }, }), - assertMetricPresent("http_requests_total", + assertMetricPresent("http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -276,7 +276,7 @@ func verifyHonorTimeStampsTrue(t *testing.T, td *testData, resourceMetrics []pme }, }, }), - assertMetricPresent("http_requests_total", + assertMetricPresent("http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -336,7 +336,7 @@ func verifyHonorTimeStampsTrue(t *testing.T, td *testData, resourceMetrics []pme }, }, }), - assertMetricPresent("http_requests_total", + assertMetricPresent("http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -404,7 +404,7 @@ func verifyHonorTimeStampsFalse(t *testing.T, td *testData, resourceMetrics []pm }, }, }), - assertMetricPresent("http_requests_total", + assertMetricPresent("http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -466,7 +466,7 @@ func verifyHonorTimeStampsFalse(t *testing.T, td *testData, resourceMetrics []pm }, }, }), - assertMetricPresent("http_requests_total", + assertMetricPresent("http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { diff --git a/receiver/prometheusreceiver/metrics_receiver_metric_name_normalize_test.go b/receiver/prometheusreceiver/metrics_receiver_metric_name_normalize_test.go index 9cb4274d7650..ed3cc4ed7184 100644 --- a/receiver/prometheusreceiver/metrics_receiver_metric_name_normalize_test.go +++ b/receiver/prometheusreceiver/metrics_receiver_metric_name_normalize_test.go @@ -39,8 +39,7 @@ func TestMetricNormalize(t *testing.T) { pages: []mockPrometheusResponse{ {code: 200, data: normalizeMetric, useOpenMetrics: true}, }, - normalizedName: true, - validateFunc: verifyNormalizeMetric, + validateFunc: verifyNormalizeMetric, }, } @@ -132,5 +131,5 @@ func verifyNormalizeMetric(t *testing.T, td *testData, resourceMetrics []pmetric }, }), } - doCompareNormalized(t, "scrape-metricNormalize-1", wantAttributes, m1, e1, true) + doCompare(t, "scrape-metricNormalize-1", wantAttributes, m1, e1) } diff --git a/receiver/prometheusreceiver/metrics_receiver_non_numerical_test.go b/receiver/prometheusreceiver/metrics_receiver_non_numerical_test.go index 926760237f78..bde8fd328342 100644 --- a/receiver/prometheusreceiver/metrics_receiver_non_numerical_test.go +++ b/receiver/prometheusreceiver/metrics_receiver_non_numerical_test.go @@ -19,8 +19,8 @@ var staleNaNsPage1 = ` # TYPE go_threads gauge go_threads 19 -# HELP http_requests_total The total number of HTTP requests. -# TYPE http_requests_total counter +# HELP http_requests The total number of HTTP requests. +# TYPE http_requests counter http_requests_total{method="post",code="200"} 100 http_requests_total{method="post",code="400"} 5 @@ -103,7 +103,7 @@ func verifyStaleNaNsSuccessfulScrape(t *testing.T, td *testData, resourceMetric }, }, }), - assertMetricPresent("http_requests_total", + assertMetricPresent("http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -169,7 +169,7 @@ func verifyStaleNaNsFailedScrape(t *testing.T, td *testData, resourceMetric pmet }, }, }), - assertMetricPresent("http_requests_total", + assertMetricPresent("http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -304,8 +304,8 @@ go_threads +Inf # HELP redis_connected_clients Redis connected clients redis_connected_clients{name="rough-snowflake-web",port="6380"} -Inf -# HELP http_requests_total The total number of HTTP requests. -# TYPE http_requests_total counter +# HELP http_requests The total number of HTTP requests. +# TYPE http_requests counter http_requests_total{method="post",code="200"} +Inf # HELP rpc_duration_seconds A summary of the RPC duration in seconds. @@ -364,7 +364,7 @@ func verifyInfValues(t *testing.T, td *testData, resourceMetrics []pmetric.Resou }, }, }), - assertMetricPresent("http_requests_total", + assertMetricPresent("http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { diff --git a/receiver/prometheusreceiver/metrics_receiver_test.go b/receiver/prometheusreceiver/metrics_receiver_test.go index 805659627297..20deca7f3c15 100644 --- a/receiver/prometheusreceiver/metrics_receiver_test.go +++ b/receiver/prometheusreceiver/metrics_receiver_test.go @@ -34,8 +34,8 @@ var target1Page1 = ` # TYPE go_threads gauge go_threads 19 -# HELP http_requests_total The total number of HTTP requests. -# TYPE http_requests_total counter +# HELP http_requests The total number of HTTP requests. +# TYPE http_requests counter http_requests_total{method="post",code="200"} 100 http_requests_total{method="post",code="400"} 5 @@ -62,8 +62,8 @@ var target1Page2 = ` # TYPE go_threads gauge go_threads 18 -# HELP http_requests_total The total number of HTTP requests. -# TYPE http_requests_total counter +# HELP http_requests The total number of HTTP requests. +# TYPE http_requests counter http_requests_total{method="post",code="200"} 199 http_requests_total{method="post",code="400"} 12 @@ -92,8 +92,8 @@ var target1Page3 = ` # TYPE go_threads gauge go_threads 16 -# HELP http_requests_total The total number of HTTP requests. -# TYPE http_requests_total counter +# HELP http_requests The total number of HTTP requests. +# TYPE http_requests counter http_requests_total{method="post",code="200"} 99 http_requests_total{method="post",code="400"} 3 @@ -137,7 +137,7 @@ func verifyTarget1(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, }, }), - assertMetricPresent("http_requests_total", + assertMetricPresent("http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -199,7 +199,7 @@ func verifyTarget1(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, }, }), - assertMetricPresent("http_requests_total", + assertMetricPresent("http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -262,7 +262,7 @@ func verifyTarget1(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, }, }), - assertMetricPresent("http_requests_total", + assertMetricPresent("http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -331,8 +331,8 @@ http_request_duration_seconds_bucket{method="post",code="400",le="+Inf"} 50 http_request_duration_seconds_sum{method="post",code="400"} 25 http_request_duration_seconds_count{method="post",code="400"} 50 -# HELP http_requests_total The total number of HTTP requests. -# TYPE http_requests_total counter +# HELP http_requests The total number of HTTP requests. +# TYPE http_requests counter http_requests_total{method="post",code="200"} 10 http_requests_total{method="post",code="400"} 50 @@ -366,8 +366,8 @@ http_request_duration_seconds_bucket{method="post",code="400",le="+Inf"} 60 http_request_duration_seconds_sum{method="post",code="400"} 30 http_request_duration_seconds_count{method="post",code="400"} 60 -# HELP http_requests_total The total number of HTTP requests. -# TYPE http_requests_total counter +# HELP http_requests The total number of HTTP requests. +# TYPE http_requests counter http_requests_total{method="post",code="200"} 50 http_requests_total{method="post",code="300"} 3 http_requests_total{method="post",code="400"} 60 @@ -405,8 +405,8 @@ http_request_duration_seconds_bucket{method="post",code="400",le="+Inf"} 60 http_request_duration_seconds_sum{method="post",code="400"} 30 http_request_duration_seconds_count{method="post",code="400"} 60 -# HELP http_requests_total The total number of HTTP requests. -# TYPE http_requests_total counter +# HELP http_requests The total number of HTTP requests. +# TYPE http_requests counter http_requests_total{method="post",code="200"} 50 http_requests_total{method="post",code="300"} 5 http_requests_total{method="post",code="400"} 60 @@ -444,8 +444,8 @@ http_request_duration_seconds_bucket{method="post",code="400",le="+Inf"} 59 http_request_duration_seconds_sum{method="post",code="400"} 29 http_request_duration_seconds_count{method="post",code="400"} 59 -# HELP http_requests_total The total number of HTTP requests. -# TYPE http_requests_total counter +# HELP http_requests The total number of HTTP requests. +# TYPE http_requests counter http_requests_total{method="post",code="200"} 49 http_requests_total{method="post",code="300"} 3 http_requests_total{method="post",code="400"} 59 @@ -483,8 +483,8 @@ http_request_duration_seconds_bucket{method="post",code="400",le="+Inf"} 59 http_request_duration_seconds_sum{method="post",code="400"} 29 http_request_duration_seconds_count{method="post",code="400"} 59 -# HELP http_requests_total The total number of HTTP requests. -# TYPE http_requests_total counter +# HELP http_requests The total number of HTTP requests. +# TYPE http_requests counter http_requests_total{method="post",code="200"} 50 http_requests_total{method="post",code="300"} 5 http_requests_total{method="post",code="400"} 59 @@ -543,7 +543,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, }, }), - assertMetricPresent("http_requests_total", + assertMetricPresent("http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -631,7 +631,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, }, }), - assertMetricPresent("http_requests_total", + assertMetricPresent("http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -735,7 +735,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, }, }), - assertMetricPresent("http_requests_total", + assertMetricPresent("http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -839,7 +839,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, }, }), - assertMetricPresent("http_requests_total", + assertMetricPresent("http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -943,7 +943,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, }, }), - assertMetricPresent("http_requests_total", + assertMetricPresent("http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -1078,9 +1078,6 @@ rpc_duration_seconds_count{foo="no_quantile"} 55 var target4Page1 = ` # A simple counter # TYPE foo counter -foo 0 -# Another counter with the same name but also _total suffix -# TYPE foo_total counter foo_total 1 ` @@ -1197,8 +1194,8 @@ func verifyTarget4(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc verifyNumValidScrapeResults(t, td, resourceMetrics) m1 := resourceMetrics[0] - // m1 has 2 metrics + 5 internal scraper metrics - assert.Equal(t, 7, metricsCount(m1)) + // m1 has 1 metric + 5 internal scraper metrics + assert.Equal(t, 6, metricsCount(m1)) wantAttributes := td.attributes @@ -1206,16 +1203,6 @@ func verifyTarget4(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc ts1 := getTS(metrics1) e1 := []testExpectation{ assertMetricPresent("foo", - compareMetricIsMonotonic(true), - []dataPointExpectation{ - { - numberPointComparator: []numberPointComparator{ - compareTimestamp(ts1), - compareDoubleValue(0), - }, - }, - }), - assertMetricPresent("foo_total", compareMetricIsMonotonic(true), []dataPointExpectation{ { @@ -1281,8 +1268,8 @@ var startTimeMetricPage = ` # HELP go_threads Number of OS threads created # TYPE go_threads gauge go_threads 19 -# HELP http_requests_total The total number of HTTP requests. -# TYPE http_requests_total counter +# HELP http_requests The total number of HTTP requests. +# TYPE http_requests counter http_requests_total{method="post",code="200"} 100 http_requests_total{method="post",code="400"} 5 # HELP http_request_duration_seconds A histogram of the request duration. @@ -1368,8 +1355,8 @@ var startTimeMetricRegexPage = ` # HELP go_threads Number of OS threads created # TYPE go_threads gauge go_threads 19 -# HELP http_requests_total The total number of HTTP requests. -# TYPE http_requests_total counter +# HELP http_requests The total number of HTTP requests. +# TYPE http_requests counter http_requests_total{method="post",code="200"} 100 http_requests_total{method="post",code="400"} 5 # HELP http_request_duration_seconds A histogram of the request duration. diff --git a/receiver/prometheusreceiver/metrics_reciever_metric_rename_test.go b/receiver/prometheusreceiver/metrics_reciever_metric_rename_test.go index 70c945cba4ab..fe24f2442927 100644 --- a/receiver/prometheusreceiver/metrics_reciever_metric_rename_test.go +++ b/receiver/prometheusreceiver/metrics_reciever_metric_rename_test.go @@ -18,17 +18,17 @@ var renameMetric = ` # TYPE http_go_threads gauge http_go_threads 19 -# HELP http_connected_total connected clients -# TYPE http_connected_total counter +# HELP http_connected connected clients +# TYPE http_connected counter http_connected_total{method="post",port="6380"} 15.0 -# HELP redis_http_requests_total Redis connected clients -# TYPE redis_http_requests_total counter +# HELP redis_http_requests Redis connected clients +# TYPE redis_http_requests counter redis_http_requests_total{method="post",port="6380"} 10.0 redis_http_requests_total{method="post",port="6381"} 12.0 -# HELP rpc_duration_total RPC clients -# TYPE rpc_duration_total counter +# HELP rpc_duration RPC clients +# TYPE rpc_duration counter rpc_duration_total{method="post",port="6380"} 100.0 rpc_duration_total{method="post",port="6381"} 120.0 ` @@ -172,7 +172,7 @@ func verifyRenameMetricKeepAction(t *testing.T, td *testData, resourceMetrics [] metrics1 := m1.ScopeMetrics().At(0).Metrics() ts1 := getTS(metrics1) e1 := []testExpectation{ - assertMetricPresent("rpc_duration_total", + assertMetricPresent("rpc_duration", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -192,8 +192,8 @@ func verifyRenameMetricKeepAction(t *testing.T, td *testData, resourceMetrics [] }, }), assertMetricAbsent("http_go_threads"), - assertMetricAbsent("http_connected_total"), - assertMetricAbsent("redis_http_requests_total"), + assertMetricAbsent("http_connected"), + assertMetricAbsent("redis_http_requests"), } doCompare(t, "scrape-metricRenameKeepAction-1", wantAttributes, m1, e1) } @@ -203,17 +203,17 @@ var renamingLabel = ` # TYPE http_go_threads gauge http_go_threads 19 -# HELP http_connected_total connected clients -# TYPE http_connected_total counter +# HELP http_connected connected clients +# TYPE http_connected counter http_connected_total{url="localhost",status="ok"} 15.0 -# HELP redis_http_requests_total Redis connected clients -# TYPE redis_http_requests_total counter +# HELP redis_http_requests Redis connected clients +# TYPE redis_http_requests counter redis_http_requests_total{method="post",port="6380"} 10.0 redis_http_requests_total{job="sample-app",statusCode="200"} 12.0 -# HELP rpc_duration_total RPC clients -# TYPE rpc_duration_total counter +# HELP rpc_duration RPC clients +# TYPE rpc_duration counter rpc_duration_total{monitor="codeLab",host="local"} 100.0 rpc_duration_total{address="localhost:9090/metrics",contentType="application/json"} 120.0 ` @@ -290,7 +290,7 @@ func verifyRenameLabel(t *testing.T, td *testData, resourceMetrics []pmetric.Res }, }, }), - assertMetricPresent("http_connected_total", + assertMetricPresent("http_connected", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -301,7 +301,7 @@ func verifyRenameLabel(t *testing.T, td *testData, resourceMetrics []pmetric.Res }, }, }), - assertMetricPresent("redis_http_requests_total", + assertMetricPresent("redis_http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -321,7 +321,7 @@ func verifyRenameLabel(t *testing.T, td *testData, resourceMetrics []pmetric.Res }, }, }), - assertMetricPresent("rpc_duration_total", + assertMetricPresent("rpc_duration", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -393,7 +393,7 @@ func verifyRenameLabelKeepAction(t *testing.T, td *testData, resourceMetrics []p }, }, }), - assertMetricPresent("http_connected_total", + assertMetricPresent("http_connected", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -404,7 +404,7 @@ func verifyRenameLabelKeepAction(t *testing.T, td *testData, resourceMetrics []p }, }, }), - assertMetricPresent("redis_http_requests_total", + assertMetricPresent("redis_http_requests", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ { @@ -422,7 +422,7 @@ func verifyRenameLabelKeepAction(t *testing.T, td *testData, resourceMetrics []p }, }, }), - assertMetricPresent("rpc_duration_total", + assertMetricPresent("rpc_duration", compareMetricType(pmetric.MetricTypeSum), []dataPointExpectation{ {