-
Notifications
You must be signed in to change notification settings - Fork 823
Description
This was tested using v1.4.2 of prometheus-metrics-exposition-text-formats.
Issue 1:
If a metric name contains a : it is being output in curly brackets. This seems unexpected and is a behavior change from older versions.
Issue 2:
The "le" label is not separated from the metric name in the case of histograms with no other labels. This is a bug.
Test code (still using the pre 1.0 artifacts here)
Counter
.build()
.name("mytest:withcolon_total")
.help("test counter")
.register();
Histogram
.build()
.name("myhistogram:withcolon")
.help("test histogram")
.buckets(new double[]{2, 10, 50, 200, 1_000, 5_000, 10_000})
.register();
These are output as follows:
{mytest:withcolon_total} 0.0
{myhistogram:withcolon_bucketle="2.0"} 0
Looking at the code, PrometheusTextFormatWriter.writeNameAndLabels has:
// If the name does not pass the legacy validity check, we must put the
// metric name inside the braces.
if (!PrometheusNaming.isValidLegacyLabelName(name)) {
metricInsideBraces = true;
writer.write('{');
}
I feel that this should be calling isValidLegacyMetricName rather than isValidLegacyLabelName. The former does allow : in the name.
For the issue with the histogram, TextFormatUtil.writeLabels should probably be checking metricInsideBraces if an additionalName is present.