Skip to content

Commit c17b792

Browse files
author
iliax
committed
RawMetric.groupIntoSnapshot fix for jmx metrics with same name, but diff lbls
1 parent 43bd3b0 commit c17b792

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

api/src/main/java/io/kafbat/ui/service/metrics/RawMetric.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
import java.math.BigDecimal;
77
import java.util.Arrays;
88
import java.util.Collection;
9+
import java.util.HashMap;
910
import java.util.LinkedHashMap;
1011
import java.util.Map;
12+
import java.util.Set;
1113
import java.util.stream.Stream;
1214

1315
public interface RawMetric {
@@ -26,24 +28,27 @@ static RawMetric create(String name, Map<String, String> labels, BigDecimal valu
2628

2729
static Stream<MetricSnapshot> groupIntoSnapshot(Collection<RawMetric> rawMetrics) {
2830
Map<String, Gauge> map = new LinkedHashMap<>();
31+
Map<String, String[]> gaugeLabels = new HashMap<>();
2932
for (RawMetric m : rawMetrics) {
3033
var lbls = m.labels().keySet()
3134
.stream()
3235
.map(PrometheusNaming::sanitizeLabelName)
3336
.toArray(String[]::new);
34-
var lblVals = Arrays.stream(lbls)
37+
var lblVals = m.labels().keySet()
38+
.stream()
3539
.map(l -> m.labels().get(l))
3640
.toArray(String[]::new);
3741
var sanitizedName = PrometheusNaming.sanitizeMetricName(m.name());
3842
var gauge = map.computeIfAbsent(
39-
sanitizedName,
40-
n -> Gauge.builder()
41-
.name(sanitizedName)
42-
.help(sanitizedName)
43-
.labelNames(lbls)
44-
.build()
43+
sanitizedName, n -> {
44+
gaugeLabels.put(n, lbls);
45+
return Gauge.builder().name(n).help(n).labelNames(lbls).build();
46+
}
4547
);
46-
gauge.labelValues(lblVals).set(m.value().doubleValue());
48+
if (Arrays.equals(lbls, gaugeLabels.get(sanitizedName))) {
49+
//using labels of first registered gauge, if not fit - skipping
50+
gauge.labelValues(lblVals).set(m.value().doubleValue());
51+
}
4752
}
4853
return map.values().stream().map(Gauge::collect);
4954
}

0 commit comments

Comments
 (0)