From 8fbd2ed2b61eb3aa1c3c68e0fa4aad27f64d795a Mon Sep 17 00:00:00 2001 From: Laxman Ch Date: Tue, 29 Aug 2023 18:26:40 +0530 Subject: [PATCH] remove tenant tag from enricher level metrics to fix too many metrics problem --- .../enrichment/EnrichmentProcessor.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/hypertrace-trace-enricher/hypertrace-trace-enricher-impl/src/main/java/org/hypertrace/traceenricher/enrichment/EnrichmentProcessor.java b/hypertrace-trace-enricher/hypertrace-trace-enricher-impl/src/main/java/org/hypertrace/traceenricher/enrichment/EnrichmentProcessor.java index d842cd4e9..3220ddd4b 100644 --- a/hypertrace-trace-enricher/hypertrace-trace-enricher-impl/src/main/java/org/hypertrace/traceenricher/enrichment/EnrichmentProcessor.java +++ b/hypertrace-trace-enricher/hypertrace-trace-enricher-impl/src/main/java/org/hypertrace/traceenricher/enrichment/EnrichmentProcessor.java @@ -1,7 +1,6 @@ package org.hypertrace.traceenricher.enrichment; import static org.hypertrace.core.serviceframework.metrics.PlatformMetricsRegistry.registerCounter; -import static org.hypertrace.core.serviceframework.metrics.PlatformMetricsRegistry.registerTimer; import static org.hypertrace.traceenricher.enrichedspan.constants.EnrichedSpanConstants.DROP_TRACE_ATTRIBUTE; import com.google.common.util.concurrent.ExecutionError; @@ -24,6 +23,7 @@ import org.hypertrace.core.datamodel.StructuredTrace; import org.hypertrace.core.datamodel.shared.DataflowMetricUtils; import org.hypertrace.core.datamodel.shared.HexUtils; +import org.hypertrace.core.serviceframework.metrics.PlatformMetricsRegistry; import org.hypertrace.traceenricher.enrichment.clients.ClientRegistry; import org.hypertrace.traceenricher.util.AvroToJsonLogger; import org.slf4j.Logger; @@ -34,7 +34,7 @@ public class EnrichmentProcessor { private static final Logger LOG = LoggerFactory.getLogger(EnrichmentProcessor.class); private static final String ENRICHMENT_ARRIVAL_TIME = "enrichment.arrival.time"; private static final Timer enrichmentArrivalTimer = - registerTimer(DataflowMetricUtils.ARRIVAL_LAG, new HashMap<>()); + PlatformMetricsRegistry.registerTimer(DataflowMetricUtils.ARRIVAL_LAG, new HashMap<>()); // Must use linked hashmap private final Map enrichers = new LinkedHashMap<>(); @@ -75,17 +75,21 @@ public void process(StructuredTrace trace) { trace, enrichmentArrivalTimer, ENRICHMENT_ARRIVAL_TIME); AvroToJsonLogger.log(LOG, "Structured Trace before all the enrichment is: {}", trace); for (Entry entry : enrichers.entrySet()) { - String metricKey = String.format("%s/%s", trace.getCustomerId(), entry.getKey()); + String enricherName = entry.getKey(); + Map metricTags = Map.of("enricher", enricherName); try { Instant start = Instant.now(); applyEnricher(entry.getValue(), trace); long timeElapsed = Duration.between(start, Instant.now()).toMillis(); traceCounters - .computeIfAbsent(metricKey, k -> registerCounter(ENRICHED_TRACES_COUNTER, null)) + .computeIfAbsent( + enricherName, k -> registerCounter(ENRICHED_TRACES_COUNTER, metricTags)) .increment(); traceTimers - .computeIfAbsent(metricKey, k -> registerTimer(ENRICHED_TRACES_TIMER, null)) + .computeIfAbsent( + enricherName, + k -> PlatformMetricsRegistry.registerTimer(ENRICHED_TRACES_TIMER, metricTags)) .record(timeElapsed, TimeUnit.MILLISECONDS); } catch (Exception | ExecutionError throwable) { String errorMessage = @@ -93,7 +97,8 @@ public void process(StructuredTrace trace) { "Could not apply the enricher: %s to the trace with traceId: %s", entry.getKey(), HexUtils.getHex(trace.getTraceId())); traceErrorsCounters - .computeIfAbsent(metricKey, k -> registerCounter(TRACE_ENRICHMENT_ERRORS_COUNTER, null)) + .computeIfAbsent( + enricherName, k -> registerCounter(TRACE_ENRICHMENT_ERRORS_COUNTER, metricTags)) .increment(); LOG.error(errorMessage, throwable); }