From f978d0ea007c7b1890a3709d7acea0c9269f8f78 Mon Sep 17 00:00:00 2001 From: Quentin Smith Date: Fri, 7 Apr 2023 15:30:58 -0400 Subject: [PATCH 1/4] Add broken integration test cases for the GMP exporter --- .../metrics/google_managed_prometheus.json | 80 ++++++++- .../google_managed_prometheus_expect.json | 170 +++++++++++++++++- 2 files changed, 248 insertions(+), 2 deletions(-) diff --git a/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus.json b/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus.json index 1395cdb42..af44bd594 100644 --- a/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus.json +++ b/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus.json @@ -379,10 +379,88 @@ } ] } + }, + { + "name":"otlp.test.gauge", + "description":"Normal metric name", + "unit":"seconds", + "gauge":{ + "dataPoints":[ + { + "timeUnixNano":"1649443516286000000", + "asDouble":0.00699415 + } + ] + } + }, + { + "name":"workload.googleapis.com/otlp.test.prefix1", + "description":"URI-style metric name", + "unit":"seconds", + "gauge":{ + "dataPoints":[ + { + "timeUnixNano":"1649443516286000000", + "asDouble":0.00699415 + } + ] + } + }, + { + "name":".invalid.googleapis.com/otlp.test.prefix2", + "description":"URI-style metric name with invalid domain", + "unit":"seconds", + "gauge":{ + "dataPoints":[ + { + "timeUnixNano":"1649443516286000000", + "asDouble":0.00699415 + } + ] + } + }, + { + "name":"otlp.test.prefix3/workload.googleapis.com/abc", + "description":"Broken URI-style metric name", + "unit":"seconds", + "gauge":{ + "dataPoints":[ + { + "timeUnixNano":"1649443516286000000", + "asDouble":0.00699415 + } + ] + } + }, + { + "name":"WORKLOAD.GOOGLEAPIS.COM/otlp.test.prefix4", + "description":"Uppercase URI-style metric name", + "unit":"seconds", + "gauge":{ + "dataPoints":[ + { + "timeUnixNano":"1649443516286000000", + "asDouble":0.00699415 + } + ] + } + }, + { + "name":"WORKLOAD.googleapis.com/otlp.test.prefix5", + "description":"Partial uppercase URI-style metric name", + "unit":"seconds", + "gauge":{ + "dataPoints":[ + { + "timeUnixNano":"1649443516286000000", + "asDouble":0.00699415 + } + ] + } } ] } ] } ] -} \ No newline at end of file +} diff --git a/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus_expect.json b/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus_expect.json index 1afb63a00..c7f3c2ce9 100644 --- a/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus_expect.json +++ b/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus_expect.json @@ -704,6 +704,174 @@ } ] }, + { + "metric": { + "type": "prometheus.googleapis.com/otlp_test_gauge/gauge" + }, + "resource": { + "type": "prometheus_target", + "labels": { + "cluster": "rabbitmq-test-dev", + "instance": "10.92.5.2:15692", + "job": "demo", + "location": "us-central1-c", + "namespace": "default" + } + }, + "metricKind": "GAUGE", + "valueType": "DOUBLE", + "points": [ + { + "interval": { + "endTime": "1970-01-01T00:00:00Z" + }, + "value": { + "doubleValue": 0.00699415 + } + } + ], + "unit": "seconds" + }, + { + "metric": { + "type": "workload_googleapis_com_otlp_test_prefix1/gauge" + }, + "resource": { + "type": "prometheus_target", + "labels": { + "cluster": "rabbitmq-test-dev", + "instance": "10.92.5.2:15692", + "job": "demo", + "location": "us-central1-c", + "namespace": "default" + } + }, + "metricKind": "GAUGE", + "valueType": "DOUBLE", + "points": [ + { + "interval": { + "endTime": "1970-01-01T00:00:00Z" + }, + "value": { + "doubleValue": 0.00699415 + } + } + ], + "unit": "seconds" + }, + { + "metric": { + "type": "invalid_googleapis_com_otlp_test_prefix2/gauge" + }, + "resource": { + "type": "prometheus_target", + "labels": { + "cluster": "rabbitmq-test-dev", + "instance": "10.92.5.2:15692", + "job": "demo", + "location": "us-central1-c", + "namespace": "default" + } + }, + "metricKind": "GAUGE", + "valueType": "DOUBLE", + "points": [ + { + "interval": { + "endTime": "1970-01-01T00:00:00Z" + }, + "value": { + "doubleValue": 0.00699415 + } + } + ], + "unit": "seconds" + }, + { + "metric": { + "type": "otlp_test_prefix3_workload_googleapis_com_abc/gauge" + }, + "resource": { + "type": "prometheus_target", + "labels": { + "cluster": "rabbitmq-test-dev", + "instance": "10.92.5.2:15692", + "job": "demo", + "location": "us-central1-c", + "namespace": "default" + } + }, + "metricKind": "GAUGE", + "valueType": "DOUBLE", + "points": [ + { + "interval": { + "endTime": "1970-01-01T00:00:00Z" + }, + "value": { + "doubleValue": 0.00699415 + } + } + ], + "unit": "seconds" + }, + { + "metric": { + "type": "prometheus.googleapis.com/WORKLOAD_GOOGLEAPIS_COM_otlp_test_prefix4/gauge" + }, + "resource": { + "type": "prometheus_target", + "labels": { + "cluster": "rabbitmq-test-dev", + "instance": "10.92.5.2:15692", + "job": "demo", + "location": "us-central1-c", + "namespace": "default" + } + }, + "metricKind": "GAUGE", + "valueType": "DOUBLE", + "points": [ + { + "interval": { + "endTime": "1970-01-01T00:00:00Z" + }, + "value": { + "doubleValue": 0.00699415 + } + } + ], + "unit": "seconds" + }, + { + "metric": { + "type": "WORKLOAD_googleapis_com_otlp_test_prefix5/gauge" + }, + "resource": { + "type": "prometheus_target", + "labels": { + "cluster": "rabbitmq-test-dev", + "instance": "10.92.5.2:15692", + "job": "demo", + "location": "us-central1-c", + "namespace": "default" + } + }, + "metricKind": "GAUGE", + "valueType": "DOUBLE", + "points": [ + { + "interval": { + "endTime": "1970-01-01T00:00:00Z" + }, + "value": { + "doubleValue": 0.00699415 + } + } + ], + "unit": "seconds" + }, { "metric": { "type": "prometheus.googleapis.com/target_info/gauge", @@ -765,7 +933,7 @@ "startTime": "1970-01-01T00:00:00Z" }, "value": { - "int64Value": "22" + "int64Value": "28" } } ] From c72614dcd2c8e22523639905130725c9cfbb98d8 Mon Sep 17 00:00:00 2001 From: Quentin Smith Date: Fri, 7 Apr 2023 15:31:26 -0400 Subject: [PATCH 2/4] Fix handling of degenerate OTLP metric names in GMP exporter --- .../metrics/google_managed_prometheus_expect.json | 8 ++++---- exporter/collector/metrics.go | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus_expect.json b/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus_expect.json index c7f3c2ce9..456323ac9 100644 --- a/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus_expect.json +++ b/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus_expect.json @@ -734,7 +734,7 @@ }, { "metric": { - "type": "workload_googleapis_com_otlp_test_prefix1/gauge" + "type": "prometheus.googleapis.com/workload_googleapis_com_otlp_test_prefix1/gauge" }, "resource": { "type": "prometheus_target", @@ -762,7 +762,7 @@ }, { "metric": { - "type": "invalid_googleapis_com_otlp_test_prefix2/gauge" + "type": "prometheus.googleapis.com/invalid_googleapis_com_otlp_test_prefix2/gauge" }, "resource": { "type": "prometheus_target", @@ -790,7 +790,7 @@ }, { "metric": { - "type": "otlp_test_prefix3_workload_googleapis_com_abc/gauge" + "type": "prometheus.googleapis.com/otlp_test_prefix3_workload_googleapis_com_abc/gauge" }, "resource": { "type": "prometheus_target", @@ -846,7 +846,7 @@ }, { "metric": { - "type": "WORKLOAD_googleapis_com_otlp_test_prefix5/gauge" + "type": "prometheus.googleapis.com/WORKLOAD_googleapis_com_otlp_test_prefix5/gauge" }, "resource": { "type": "prometheus_target", diff --git a/exporter/collector/metrics.go b/exporter/collector/metrics.go index 888ad3d9e..bdd0998c3 100644 --- a/exporter/collector/metrics.go +++ b/exporter/collector/metrics.go @@ -929,7 +929,7 @@ func (m *metricMapper) metricNameToType(name string, metric pmetric.Metric) (str if err != nil { return "", err } - return path.Join(m.getMetricNamePrefix(name), metricName), nil + return path.Join(m.getMetricNamePrefix(metricName), metricName), nil } // defaultGetMetricName does not (further) customize the baseName. From 027e69b1947128fe7028de9d1dab7a5e11950953 Mon Sep 17 00:00:00 2001 From: Quentin Smith Date: Fri, 7 Apr 2023 15:39:32 -0400 Subject: [PATCH 3/4] Add test case with prometheus.googleapis.com --- .../metrics/google_managed_prometheus.json | 13 ++++++++ .../google_managed_prometheus_expect.json | 30 ++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus.json b/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus.json index af44bd594..29d5d3206 100644 --- a/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus.json +++ b/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus.json @@ -457,6 +457,19 @@ } ] } + }, + { + "name":"prometheus.googleapis.com/otlp.test.prefix6", + "description":"GMP metric names are not special", + "unit":"seconds", + "gauge":{ + "dataPoints":[ + { + "timeUnixNano":"1649443516286000000", + "asDouble":0.00699415 + } + ] + } } ] } diff --git a/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus_expect.json b/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus_expect.json index 456323ac9..7f8a190be 100644 --- a/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus_expect.json +++ b/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus_expect.json @@ -872,6 +872,34 @@ ], "unit": "seconds" }, + { + "metric": { + "type": "prometheus.googleapis.com/prometheus_googleapis_com_otlp_test_prefix6/gauge" + }, + "resource": { + "type": "prometheus_target", + "labels": { + "cluster": "rabbitmq-test-dev", + "instance": "10.92.5.2:15692", + "job": "demo", + "location": "us-central1-c", + "namespace": "default" + } + }, + "metricKind": "GAUGE", + "valueType": "DOUBLE", + "points": [ + { + "interval": { + "endTime": "1970-01-01T00:00:00Z" + }, + "value": { + "doubleValue": 0.00699415 + } + } + ], + "unit": "seconds" + }, { "metric": { "type": "prometheus.googleapis.com/target_info/gauge", @@ -933,7 +961,7 @@ "startTime": "1970-01-01T00:00:00Z" }, "value": { - "int64Value": "28" + "int64Value": "29" } } ] From eb29886ab56a34b499f7c75cb2f62abe26dda8d0 Mon Sep 17 00:00:00 2001 From: Quentin Smith Date: Fri, 7 Apr 2023 15:40:58 -0400 Subject: [PATCH 4/4] Fix GMP-style metric name to be fully correct --- .../testdata/fixtures/metrics/google_managed_prometheus.json | 2 +- .../fixtures/metrics/google_managed_prometheus_expect.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus.json b/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus.json index 29d5d3206..c75d9086a 100644 --- a/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus.json +++ b/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus.json @@ -459,7 +459,7 @@ } }, { - "name":"prometheus.googleapis.com/otlp.test.prefix6", + "name":"prometheus.googleapis.com/otlp_test_prefix6/gauge", "description":"GMP metric names are not special", "unit":"seconds", "gauge":{ diff --git a/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus_expect.json b/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus_expect.json index 7f8a190be..1ab6f5282 100644 --- a/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus_expect.json +++ b/exporter/collector/integrationtest/testdata/fixtures/metrics/google_managed_prometheus_expect.json @@ -874,7 +874,7 @@ }, { "metric": { - "type": "prometheus.googleapis.com/prometheus_googleapis_com_otlp_test_prefix6/gauge" + "type": "prometheus.googleapis.com/prometheus_googleapis_com_otlp_test_prefix6_gauge/gauge" }, "resource": { "type": "prometheus_target",