Closed zkx5xkt closed 8 months ago
same issue is present for counters as well, I created a similar patch for anyone wanting this feature:
diff --git a/lib/counter.js b/lib/counter.js
index 22a440eca40ed13d088789903eb4c04cc70e8128..8c5c1b0d9f2c2134460c248fbc181881cbaef063 100644
--- a/lib/counter.js
+++ b/lib/counter.js
@@ -85,9 +85,12 @@ class Counter extends Metric {
}
updateExemplar(exemplarLabels, value, hash) {
+ if (Object.keys(exemplarLabels).length === 0) return;
+
if (!isObject(this.hashMap[hash].exemplar)) {
this.hashMap[hash].exemplar = new Exemplar();
}
+
this.hashMap[hash].exemplar.validateExemplarLabelSet(exemplarLabels);
this.hashMap[hash].exemplar.labelSet = exemplarLabels;
this.hashMap[hash].exemplar.value = value ? value : 1;
I also noticed that Go's client lib already does this by default https://github.com/prometheus/client_golang/blob/26e3055e5133a9d64e8e5a07a7cf026875d5f55d/prometheus/counter.go#L172.
Happy to take a PR fixing this 🙂
I have a setup where I only upload a small percentage of my traces. This means that for majority of my samples in a histogram there won't be a corresponding trace.
Current library implementation:
When presented with a new sample with no exemplar labels the library overrides the bucket's exemplar labels with an empty object essentially purging the existing exemplar
Example of metric after sample is published with an exemplar labels:
example_duration_bucket{le="5"} 1 # {traceID="9899898"} 3.0005617 1708951967.457
Example of metric after sample is published with no exemplar labels afterwards:example_duration_bucket{le="5"} 1 # {} 3.0000431 1708975949.123
Desired library implementation:
When presented with a new sample with no exemplar labels the library should retain the existing exemplar so it can be scraped with the metric.
Example of metric after sample is published with an exemplar labels:
example_duration_bucket{le="5"} 1 # {traceID="9899898"} 3.0005617 1708951967.457
Example of metric after sample is published with no exemplar labels afterwards:example_duration_bucket{le="5"} 1 # {traceID="9899898"} 3.0005617 1708951967.457
Example
currently for
prom-client@15.1.0
i'm applying the following hotpatch for Histogram (do not overwrite exemplar values when no exemplar labels given):This can probably be done in a backwards compatible manner with an additional flag or something to specifically disable the overriding of exemplars when no exemplar is provided.
# prom-client version: 15.1.0