Skip to content

Commit 43bd3b0

Browse files
authored
BE: Sanitize metric names before indexing (#1283)
1 parent c1d1e62 commit 43bd3b0

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.prometheus.metrics.core.metrics.Gauge;
44
import io.prometheus.metrics.model.snapshots.MetricSnapshot;
5+
import io.prometheus.metrics.model.snapshots.PrometheusNaming;
56
import java.math.BigDecimal;
67
import java.util.Arrays;
78
import java.util.Collection;
@@ -26,13 +27,19 @@ static RawMetric create(String name, Map<String, String> labels, BigDecimal valu
2627
static Stream<MetricSnapshot> groupIntoSnapshot(Collection<RawMetric> rawMetrics) {
2728
Map<String, Gauge> map = new LinkedHashMap<>();
2829
for (RawMetric m : rawMetrics) {
29-
var lbls = m.labels().keySet().toArray(String[]::new);
30-
var lblVals = Arrays.stream(lbls).map(l -> m.labels().get(l)).toArray(String[]::new);
30+
var lbls = m.labels().keySet()
31+
.stream()
32+
.map(PrometheusNaming::sanitizeLabelName)
33+
.toArray(String[]::new);
34+
var lblVals = Arrays.stream(lbls)
35+
.map(l -> m.labels().get(l))
36+
.toArray(String[]::new);
37+
var sanitizedName = PrometheusNaming.sanitizeMetricName(m.name());
3138
var gauge = map.computeIfAbsent(
32-
m.name(),
39+
sanitizedName,
3340
n -> Gauge.builder()
34-
.name(m.name())
35-
.help(m.name())
41+
.name(sanitizedName)
42+
.help(sanitizedName)
3643
.labelNames(lbls)
3744
.build()
3845
);

0 commit comments

Comments
 (0)