From 1dbb9ee3f7aadc301a2851ae7459ceba2c749e65 Mon Sep 17 00:00:00 2001 From: Ola Aunronning Date: Thu, 15 Sep 2022 14:21:51 +0200 Subject: Sanitize label names --- .../com/yahoo/container/jdisc/state/PrometheusHelper.java | 12 ++++++++++-- .../container/jdisc/state/MetricsPacketsHandlerTest.java | 6 +++--- 2 files changed, 13 insertions(+), 5 deletions(-) (limited to 'container-core/src') diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/state/PrometheusHelper.java b/container-core/src/main/java/com/yahoo/container/jdisc/state/PrometheusHelper.java index adb5f389d54..ca4eca1595f 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/state/PrometheusHelper.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/state/PrometheusHelper.java @@ -25,7 +25,11 @@ public class PrometheusHelper { var dimensionBuilder = new StringBuilder(); for (var dimension : metricDimensions) { - dimensionBuilder.append(dimension.getKey()).append("=\"").append(dimension.getValue()).append("\","); + dimensionBuilder + .append(sanitize(dimension.getKey())) + .append("=\"") + .append(dimension.getValue()) + .append("\","); } dimensionBuilder.append("vespa_service=\"").append(application).append("\","); var dimensions = dimensionBuilder.toString(); @@ -70,7 +74,11 @@ public class PrometheusHelper { } private static String getSanitizedMetricName(String metricName, String suffix) { - return metricName.replaceAll("([-.])", "_") + "_" + suffix; + return sanitize(metricName) + "_" + suffix; + } + + private static String sanitize(String name) { + return name.replaceAll("([-.])", "_"); } } diff --git a/container-core/src/test/java/com/yahoo/container/jdisc/state/MetricsPacketsHandlerTest.java b/container-core/src/test/java/com/yahoo/container/jdisc/state/MetricsPacketsHandlerTest.java index 75344f10c07..434622852e9 100644 --- a/container-core/src/test/java/com/yahoo/container/jdisc/state/MetricsPacketsHandlerTest.java +++ b/container-core/src/test/java/com/yahoo/container/jdisc/state/MetricsPacketsHandlerTest.java @@ -162,7 +162,7 @@ public class MetricsPacketsHandlerTest extends StateHandlerTestBase { @Test public void prometheus_metrics() { - var context = StateMetricContext.newInstance(Map.of("dim1", "value1")); + var context = StateMetricContext.newInstance(Map.of("dim-1", "value1")); var snapshot = new MetricSnapshot(); snapshot.set(context, "gauge.metric", 0.2); snapshot.add(context, "counter.metric", 5); @@ -171,10 +171,10 @@ public class MetricsPacketsHandlerTest extends StateHandlerTestBase { var expectedResponse = """ # HELP gauge_metric_last\s # TYPE gauge_metric_last untyped - gauge_metric_last{dim1="value1",vespa_service="state-handler-test-base",} 0.2 0 + gauge_metric_last{dim_1="value1",vespa_service="state-handler-test-base",} 0.2 0 # HELP counter_metric_count\s # TYPE counter_metric_count untyped - counter_metric_count{dim1="value1",vespa_service="state-handler-test-base",} 5 0 + counter_metric_count{dim_1="value1",vespa_service="state-handler-test-base",} 5 0 """; assertEquals(expectedResponse, response); } -- cgit v1.2.3