Skip to content

Commit

Permalink
Metrics colleciton simplification (#5)
Browse files Browse the repository at this point in the history
  • Loading branch information
denis256 authored Dec 31, 2023
1 parent 051b190 commit 338e861
Showing 1 changed file with 49 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -62,109 +62,126 @@ public MetricService(String prefix, String listenAddress, int prometheusPort, Ma
public Counter.Child counter(String name, Map<String, String> labels) {
try {
TreeMap<String, String> 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();
}
return new Counter.Child();
}

public Counter.Child counter(String name) {
return counter(name, Map.of());
}

/**
* Increment counter
*/
public void inc(String name, Map<String, String> labels) {
counter(name, labels).inc();
}

public void inc(String name) {
counter(name, Map.of()).inc();
}

/**
* Register Gauge
*/
public Gauge.Child gauge(String name, Map<String, String> labels) {
TreeMap<String, String> 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();
}
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<String, String> labels) {
TreeMap<String, String> 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();
}
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<String, String> labels) {
TreeMap<String, String> 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();
}
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<String, String> labels) {
String name = t.getClass().getCanonicalName();
TreeMap<String, String> 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<String, String> map) {
return map.keySet().toArray(new String[0]);
}
Expand Down

0 comments on commit 338e861

Please sign in to comment.