Skip to content

Commit ea68bfe

Browse files
committed
include timestamp in samples returned by MultiProcessCollector._accumulate_metrics
1 parent 7c45f84 commit ea68bfe

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

prometheus_client/multiprocess.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,11 @@ def _accumulate_metrics(metrics, accumulate):
9292
sample_timestamps = defaultdict(float)
9393
buckets = defaultdict(lambda: defaultdict(float))
9494
samples_setdefault = samples.setdefault
95+
generate_pidless_key = lambda x, y: (x, tuple(l for l in y if l[0] != 'pid'))
9596
for s in metric.samples:
9697
name, labels, value, timestamp, exemplar = s
9798
if metric.type == 'gauge':
98-
without_pid_key = (name, tuple(l for l in labels if l[0] != 'pid'))
99+
without_pid_key = generate_pidless_key(name, labels)
99100
if metric._multiprocess_mode in ('min', 'livemin'):
100101
current = samples_setdefault(without_pid_key, value)
101102
if value < current:
@@ -150,7 +151,13 @@ def _accumulate_metrics(metrics, accumulate):
150151
samples[(metric.name + '_count', labels)] = acc
151152

152153
# Convert to correct sample format.
153-
metric.samples = [Sample(name_, dict(labels), value) for (name_, labels), value in samples.items()]
154+
timestamped_samples = []
155+
for (name_, labels), value in samples.items():
156+
without_pid_key = generate_pidless_key(name_, labels)
157+
timestamped_samples.append(
158+
Sample(name_, dict(labels), value), sample_timestamps[without_pid_key]
159+
)
160+
metric.samples = timestamped_samples
154161
return metrics.values()
155162

156163
def collect(self):

0 commit comments

Comments
 (0)