Skip to content

Commit 902ff4a

Browse files
adoroszlaielek
authored andcommitted
HDDS-1867. Invalid Prometheus metric name from JvmMetrics
Closes #1172
1 parent 02bd02b commit 902ff4a

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/server/PrometheusMetricsSink.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ public class PrometheusMetricsSink implements MetricsSink {
4949
private static final Pattern SPLIT_PATTERN =
5050
Pattern.compile("(?<!(^|[A-Z_]))(?=[A-Z])|(?<!^)(?=[A-Z][a-z])");
5151

52+
private static final Pattern REPLACE_PATTERN =
53+
Pattern.compile("[^a-zA-Z0-9]+");
54+
5255
public PrometheusMetricsSink() {
5356
}
5457

@@ -101,9 +104,9 @@ public String prometheusName(String recordName,
101104

102105
String baseName = StringUtils.capitalize(recordName)
103106
+ StringUtils.capitalize(metricName);
104-
baseName = baseName.replace('-', '_');
105107
String[] parts = SPLIT_PATTERN.split(baseName);
106-
return String.join("_", parts).toLowerCase();
108+
String result = String.join("_", parts).toLowerCase();
109+
return REPLACE_PATTERN.matcher(result).replaceAll("_");
107110
}
108111

109112
@Override

hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/server/TestPrometheusMetricsSink.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,17 @@ public void testNamingPipeline() {
107107
sink.prometheusName(recordName, metricName));
108108
}
109109

110+
@Test
111+
public void testNamingSpaces() {
112+
PrometheusMetricsSink sink = new PrometheusMetricsSink();
113+
114+
String recordName = "JvmMetrics";
115+
String metricName = "GcTimeMillisG1 Young Generation";
116+
Assert.assertEquals(
117+
"jvm_metrics_gc_time_millis_g1_young_generation",
118+
sink.prometheusName(recordName, metricName));
119+
}
120+
110121
/**
111122
* Example metric pojo.
112123
*/

0 commit comments

Comments
 (0)