From 338e861aaa2a52925bb31fe66f322696cb4d3ed8 Mon Sep 17 00:00:00 2001 From: Denis O Date: Sun, 31 Dec 2023 23:58:09 +0200 Subject: [PATCH] Metrics colleciton simplification (#5) --- .../platform/prometheus/MetricService.java | 81 +++++++++++-------- 1 file changed, 49 insertions(+), 32 deletions(-) diff --git a/unidev-prometheus/src/main/java/com/unidev/platform/prometheus/MetricService.java b/unidev-prometheus/src/main/java/com/unidev/platform/prometheus/MetricService.java index a090b96..9fef790 100644 --- a/unidev-prometheus/src/main/java/com/unidev/platform/prometheus/MetricService.java +++ b/unidev-prometheus/src/main/java/com/unidev/platform/prometheus/MetricService.java @@ -62,15 +62,13 @@ public MetricService(String prefix, String listenAddress, int prometheusPort, Ma public Counter.Child counter(String name, Map labels) { try { TreeMap labelMap = new TreeMap<>(labels); + labelMap.put("labelName", name); labelMap.putAll(defaultLabels); String prometheusName = buildName(name); - counters.computeIfAbsent(prometheusName, s -> { - Counter value = Counter.build() - .name(prometheusName) - .labelNames(mapKeys(labelMap)) - .help("Counter " + name).register(); - return value; - }); + counters.computeIfAbsent(prometheusName, s -> Counter.build() + .name(prometheusName) + .labelNames(mapKeys(labelMap)) + .help("Counter " + name).register()); return counters.get(prometheusName).labels(mapValues(labelMap)); } catch (Throwable t) { t.printStackTrace(); @@ -78,6 +76,10 @@ public Counter.Child counter(String name, Map labels) { return new Counter.Child(); } + public Counter.Child counter(String name) { + return counter(name, Map.of()); + } + /** * Increment counter */ @@ -85,22 +87,24 @@ public void inc(String name, Map labels) { counter(name, labels).inc(); } + public void inc(String name) { + counter(name, Map.of()).inc(); + } + /** * Register Gauge */ public Gauge.Child gauge(String name, Map labels) { TreeMap labelMap = new TreeMap<>(labels); + labelMap.put("labelName", name); labelMap.putAll(defaultLabels); try { String prometheusName = buildName(name); - gauges.computeIfAbsent(prometheusName, s -> { - Gauge value = Gauge.build() - .name(prometheusName) - .help("Gauge " + prometheusName) - .labelNames(mapKeys(labelMap)) - .register(); - return value; - }); + gauges.computeIfAbsent(prometheusName, s -> Gauge.build() + .name(prometheusName) + .help("Gauge " + prometheusName) + .labelNames(mapKeys(labelMap)) + .register()); return gauges.get(prometheusName).labels(mapValues(labelMap)); }catch (Throwable t) { t.printStackTrace(); @@ -108,22 +112,24 @@ public Gauge.Child gauge(String name, Map labels) { return Gauge.build().create().labels(); } + public Gauge.Child gauge(String name) { + return gauge(name, Map.of()); + } + /** * Build summary */ public Summary.Child summary(String name, Map labels) { TreeMap labelMap = new TreeMap<>(labels); + labelMap.put("labelName", name); labelMap.putAll(defaultLabels); try { String prometheusName = buildName(name); - summaries.computeIfAbsent(prometheusName, s -> { - Summary value = Summary.build() - .name(prometheusName) - .help("Summary " + prometheusName) - .labelNames(mapKeys(labelMap)) - .register(); - return value; - }); + summaries.computeIfAbsent(prometheusName, s -> Summary.build() + .name(prometheusName) + .help("Summary " + prometheusName) + .labelNames(mapKeys(labelMap)) + .register()); return summaries.get(prometheusName).labels(mapValues(labelMap)); }catch (Throwable t) { t.printStackTrace(); @@ -131,22 +137,24 @@ public Summary.Child summary(String name, Map labels) { return Summary.build().create().labels(mapValues(labelMap)); } + public Summary.Child summary(String name) { + return summary(name, Map.of()); + } + /** * Register histogram */ public Histogram.Child histogram(String name, Map labels) { TreeMap labelMap = new TreeMap<>(labels); + labelMap.put("labelName", name); labelMap.putAll(defaultLabels); try { String prometheusName = buildName(name); - histograms.computeIfAbsent(prometheusName, s -> { - Histogram value = Histogram.build() - .name(prometheusName) - .help("Histogram " + prometheusName) - .labelNames(mapKeys(labelMap)) - .register(); - return value; - }); + histograms.computeIfAbsent(prometheusName, s -> Histogram.build() + .name(prometheusName) + .help("Histogram " + prometheusName) + .labelNames(mapKeys(labelMap)) + .register()); return histograms.get(prometheusName).labels(mapValues(labelMap)); }catch (Throwable t) { t.printStackTrace(); @@ -154,17 +162,26 @@ public Histogram.Child histogram(String name, Map labels) { return Histogram.build().create().labels(mapValues(labelMap)); } + public Histogram.Child histogram(String name) { + return histogram(name, Map.of()); + } + /** * Count exceptions. */ public void countException(Throwable t, Map labels) { + String name = t.getClass().getCanonicalName(); TreeMap labelMap = new TreeMap<>(labels); + labelMap.put("labelName", name); labelMap.putAll(defaultLabels); - String name = t.getClass().getCanonicalName(); labelMap.put("exception", name); counter("exception", labelMap).inc(); } + public void countException(Throwable t) { + countException(t, Map.of()); + } + String[] mapKeys(Map map) { return map.keySet().toArray(new String[0]); }