13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/prometheus/client/helper/metrics_processing.rb', line 13
def self.merge_samples(raw_samples, metric_type, multiprocess_mode)
samples = {}
raw_samples.each do |name, labels, value|
without_pid = labels.reject { |l| l[0] == 'pid' }
case metric_type
when :gauge
case multiprocess_mode
when 'min'
s = samples.fetch([name, without_pid], value)
samples[[name, without_pid]] = [s, value].min
when 'max'
s = samples.fetch([name, without_pid], value)
samples[[name, without_pid]] = [s, value].max
when 'livesum'
s = samples.fetch([name, without_pid], 0.0)
samples[[name, without_pid]] = s + value
else samples[[name, labels]] = value
end
else
s = samples.fetch([name, without_pid], 0.0)
samples[[name, without_pid]] = s + value
end
end
samples
end
|