This is an automated email from the ASF dual-hosted git repository.
jbonofre pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/karaf-decanter.git
The following commit(s) were added to refs/heads/main by this push:
new 7144b0f5 [collector] Prometheus - label values could have bracket -
Fix #553 (#554)
7144b0f5 is described below
commit 7144b0f561297f2223d92fac9c9efd63cf0e1676
Author: François Papon <[email protected]>
AuthorDate: Fri Oct 17 14:37:53 2025 +0200
[collector] Prometheus - label values could have bracket - Fix #553 (#554)
---
.../collector/prometheus/PrometheusCollector.java | 17 ++++++++++++-----
.../collector/prometheus/PrometheusCollectorTest.java | 2 +-
collector/prometheus/src/test/resources/sample.txt | 2 +-
3 files changed, 14 insertions(+), 7 deletions(-)
diff --git
a/collector/prometheus/src/main/java/org/apache/karaf/decanter/collector/prometheus/PrometheusCollector.java
b/collector/prometheus/src/main/java/org/apache/karaf/decanter/collector/prometheus/PrometheusCollector.java
index 7563c5dd..73385ad1 100644
---
a/collector/prometheus/src/main/java/org/apache/karaf/decanter/collector/prometheus/PrometheusCollector.java
+++
b/collector/prometheus/src/main/java/org/apache/karaf/decanter/collector/prometheus/PrometheusCollector.java
@@ -83,14 +83,21 @@ public class PrometheusCollector implements Runnable {
data.put("type", type);
if (line.contains("{")) {
final String name = line.substring(0,
line.indexOf("{"));
- String[] labels =
line.substring(line.indexOf("{")+1, line.indexOf("}")).split(",");
+ String[] labels =
line.substring(line.indexOf("{")+1, line.lastIndexOf("}")).split(",");
Stream.of(labels).forEach(it -> {
- String labelName = it.substring(0,
it.indexOf("=")).replace("\"", "");
- String labelValue =
it.substring(it.indexOf("=")+1).replace("\"", "");
- data.put(labelName, labelValue);
+ try {
+ // we don't want to store label without
value
+ if (it.contains("=")) {
+ String labelName = it.substring(0,
it.indexOf("=")).replace("\"", "");
+ String labelValue =
it.substring(it.indexOf("=") + 1).replace("\"", "");
+ data.put(labelName, labelValue);
+ }
+ } catch (Exception e) {
+ LOGGER.error("[collector-prometheus] error
while parsing label {} :: {}",it, e.getMessage());
+ }
});
- String value = line.substring(line.indexOf("}")+2);
+ String value =
line.substring(line.lastIndexOf("}")+2);
Double parseValue = Double.parseDouble(value);
data.put(name, parseValue);
} else {
diff --git
a/collector/prometheus/src/test/java/org/apache/karaf/decanter/collector/prometheus/PrometheusCollectorTest.java
b/collector/prometheus/src/test/java/org/apache/karaf/decanter/collector/prometheus/PrometheusCollectorTest.java
index 551baa49..aa51e144 100644
---
a/collector/prometheus/src/test/java/org/apache/karaf/decanter/collector/prometheus/PrometheusCollectorTest.java
+++
b/collector/prometheus/src/test/java/org/apache/karaf/decanter/collector/prometheus/PrometheusCollectorTest.java
@@ -47,7 +47,7 @@ public class PrometheusCollectorTest {
Assert.assertEquals("prometheus",
dispatcher.postedEvents.get(1).getProperty("type"));
Assert.assertEquals(1.0,
dispatcher.postedEvents.get(2).getProperty("request_time_total_seconds"));
- Assert.assertEquals("/send",
dispatcher.postedEvents.get(2).getProperty("endpoint"));
+ Assert.assertEquals("/send/{id}/time",
dispatcher.postedEvents.get(2).getProperty("endpoint"));
Assert.assertEquals("prometheus",
dispatcher.postedEvents.get(2).getProperty("type"));
Assert.assertEquals(2.2561752E7,
dispatcher.postedEvents.get(3).getProperty("memoryPool_usage_bytes"));
diff --git a/collector/prometheus/src/test/resources/sample.txt
b/collector/prometheus/src/test/resources/sample.txt
index 52662482..b8930206 100644
--- a/collector/prometheus/src/test/resources/sample.txt
+++ b/collector/prometheus/src/test/resources/sample.txt
@@ -6,7 +6,7 @@ Test1 0.0
Test2 8.0
# HELP request_time_total
# TYPE request_time_total counter
-request_time_total_seconds{api="my-api",endpoint="/send",method="POST"} 1.0
+request_time_total_seconds{api="my-api",endpoint="/send/{id}/time",method="POST"}
1.0
# HELP memoryPool_usage_bytes Current usage of the memory pool
# TYPE memoryPool_usage_bytes gauge
memoryPool_usage_bytes{name="Compressed Class Space"} 2.2561752E7