From 395fdf4d503337defe6ec3c5b5aa8fa3bf6aa918 Mon Sep 17 00:00:00 2001 From: Vamsi Manohar Date: Thu, 19 Mar 2026 13:59:26 -0700 Subject: [PATCH] Fix duplicate _seconds suffix in APM latency metric name The Prometheus sink appends unit suffixes to metric names (e.g., unit "s" becomes "_seconds"). The APM service map processor was naming the histogram metric "latency_seconds" with unit "s", resulting in "latency_seconds_seconds" when exported to Prometheus. Rename the metric to "latency" so the final Prometheus metric name is correctly "latency_seconds". Signed-off-by: Vamsi Manohar --- .../otel-apm-service-map-processor/README.md | 2 +- .../utils/ApmServiceMapMetricsUtil.java | 2 +- .../OTelApmServiceMapProcessorTest.java | 2 +- .../utils/ApmServiceMapMetricsUtilTest.java | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/data-prepper-plugins/otel-apm-service-map-processor/README.md b/data-prepper-plugins/otel-apm-service-map-processor/README.md index d94444eaee..9ae39c9394 100644 --- a/data-prepper-plugins/otel-apm-service-map-processor/README.md +++ b/data-prepper-plugins/otel-apm-service-map-processor/README.md @@ -205,7 +205,7 @@ The processor generates time-series metrics as JacksonMetric events: | `request` | Sum (monotonic) | `1` | Number of requests | | `error` | Sum (monotonic) | `1` | Number of error requests (HTTP 4xx) | | `fault` | Sum (monotonic) | `1` | Number of fault requests (HTTP 5xx or ERROR status) | -| `latency_seconds` | Histogram | `s` | Request latency distribution | +| `latency` | Histogram | `s` | Request latency distribution | **Histogram Bucket Boundaries:** `[0.0, 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1.0, 2.5, 5.0, 7.5, 10.0]` diff --git a/data-prepper-plugins/otel-apm-service-map-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/otel_apm_service_map/utils/ApmServiceMapMetricsUtil.java b/data-prepper-plugins/otel-apm-service-map-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/otel_apm_service_map/utils/ApmServiceMapMetricsUtil.java index bb4f7f5042..ac4f4caec6 100644 --- a/data-prepper-plugins/otel-apm-service-map-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/otel_apm_service_map/utils/ApmServiceMapMetricsUtil.java +++ b/data-prepper-plugins/otel-apm-service-map-processor/src/main/java/org/opensearch/dataprepper/plugins/processor/otel_apm_service_map/utils/ApmServiceMapMetricsUtil.java @@ -196,7 +196,7 @@ public static List createMetricsFromAggregatedState(final Map metrics = ApmServiceMapMetricsUtil.createMetricsFromAggregatedState(metricsStateByKey); // Then - assertEquals(3, metrics.size()); // Only request, error, fault (no latency_seconds) + assertEquals(3, metrics.size()); // Only request, error, fault (no latency) } @Test @@ -521,7 +521,7 @@ void testCreateMetricsFromAggregatedState_Success() { List metrics = ApmServiceMapMetricsUtil.createMetricsFromAggregatedState(metricsStateByKey); // Then - assertEquals(4, metrics.size()); // request, error, fault, latency_seconds + assertEquals(4, metrics.size()); // request, error, fault, latency // Verify metric names List metricNames = metrics.stream() @@ -530,7 +530,7 @@ void testCreateMetricsFromAggregatedState_Success() { assertTrue(metricNames.contains("request")); assertTrue(metricNames.contains("error")); assertTrue(metricNames.contains("fault")); - assertTrue(metricNames.contains("latency_seconds")); + assertTrue(metricNames.contains("latency")); } @Test