diff --git a/data-prepper-plugins/prometheus-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/prometheus/service/PrometheusTimeSeries.java b/data-prepper-plugins/prometheus-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/prometheus/service/PrometheusTimeSeries.java index 423f651056..b42fbe43c6 100644 --- a/data-prepper-plugins/prometheus-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/prometheus/service/PrometheusTimeSeries.java +++ b/data-prepper-plugins/prometheus-sink/src/main/java/org/opensearch/dataprepper/plugins/sink/prometheus/service/PrometheusTimeSeries.java @@ -302,11 +302,15 @@ static String sanitizeMetricName(final Metric metric) { final boolean isGauge = metric.getKind().equals(Metric.KIND.GAUGE.toString()); final boolean isCounter = metric.getKind().equals(Metric.KIND.SUM.toString()) && ((Sum) metric).isMonotonic() && - ((Sum) metric).getAggregationTemporality().equals("AGGREGATION_TEMPORALITY_CUMULATIVE"); + "AGGREGATION_TEMPORALITY_CUMULATIVE".equals(((Sum) metric).getAggregationTemporality()); StringBuilder metricNameBuilder = new StringBuilder(sanitizeName(name, true, false)); String suffix = isCounter ? TOTAL_SUFFIX : ""; + if (unit == null) { + return metricNameBuilder.append(suffix).toString(); + } + if (unit.startsWith("{")) { return metricNameBuilder.append(suffix).toString(); } diff --git a/data-prepper-plugins/prometheus-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/prometheus/service/PrometheusTimeSeriesTest.java b/data-prepper-plugins/prometheus-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/prometheus/service/PrometheusTimeSeriesTest.java index e6ff20855f..69fc67b6dc 100644 --- a/data-prepper-plugins/prometheus-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/prometheus/service/PrometheusTimeSeriesTest.java +++ b/data-prepper-plugins/prometheus-sink/src/test/java/org/opensearch/dataprepper/plugins/sink/prometheus/service/PrometheusTimeSeriesTest.java @@ -12,6 +12,7 @@ import org.apache.commons.lang3.RandomStringUtils; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -187,6 +188,38 @@ public void testHistogramMetricKey(String unit, String expectedUnitName) throws assertTrue(timeSeries.getMetricKey().equals(expectedKey1) || timeSeries.getMetricKey().equals(expectedKey2)); } + @Test + public void testSumMetricWithNullAggregationTemporality() { + final String name = RandomStringUtils.randomAlphabetic(10); + Sum sum = createSumMetric(name, "s", true, null); + String sanitizedName = PrometheusTimeSeries.sanitizeMetricName(sum); + assertThat(sanitizedName, equalTo(name + "_seconds")); + } + + @Test + public void testGaugeMetricWithNullUnit() { + final String name = RandomStringUtils.randomAlphabetic(10); + Gauge gauge = createGaugeMetric(name, null); + String sanitizedName = PrometheusTimeSeries.sanitizeMetricName(gauge); + assertThat(sanitizedName, equalTo(name)); + } + + @Test + public void testSumMetricCounterWithNullUnit() { + final String name = RandomStringUtils.randomAlphabetic(10); + Sum sum = createSumMetric(name, null, true, "AGGREGATION_TEMPORALITY_CUMULATIVE"); + String sanitizedName = PrometheusTimeSeries.sanitizeMetricName(sum); + assertThat(sanitizedName, equalTo(name + "_total")); + } + + @Test + public void testSumMetricWithNullUnitAndNullAggregationTemporality() { + final String name = RandomStringUtils.randomAlphabetic(10); + Sum sum = createSumMetric(name, null, true, null); + String sanitizedName = PrometheusTimeSeries.sanitizeMetricName(sum); + assertThat(sanitizedName, equalTo(name)); + } + private Summary createSummaryMetric(final String name, final String unit) { List quantiles = Arrays.asList( new DefaultQuantile(0.5d, 10d),