lib/prometheus/client/helper/metrics_processing.rb in prometheus-client-mmap-0.7.0.beta32 vs lib/prometheus/client/helper/metrics_processing.rb in prometheus-client-mmap-0.7.0.beta33

- old
+ new

@@ -1,57 +1,40 @@ module Prometheus module Client module Helper module MetricsProcessing def self.merge_metrics(metrics) - metrics - end - - def self.min(a, b) - if a < b - a - else - b + metrics.each_value do |metric| + metric[:samples] = merge_samples(metric[:samples], metric[:type], metric[:multiprocess_mode]).map do |(name, labels), value| + [name, labels.to_h, value] + end end end - def self.max(a, b) - if a > b - a - else - b - end - end - def self.merge_samples(raw_samples, metric_type, multiprocess_mode) samples = {} raw_samples.each do |name, labels, value| - key = { name: name, labels: labels } - # without_pid = labels.delete(:pid) + without_pid = labels.reject { |l| l[0] == 'pid' } case metric_type when :gauge case multiprocess_mode when 'min' - labels.delete(:pid) - s = samples.fetch(key, value) - samples[key] = min(s, value) + s = samples.fetch([name, without_pid], value) + samples[[name, without_pid]] = [s, value].min when 'max' - labels.delete(:pid) - s = samples.fetch(key, value) - samples[key] = max(s, value) + s = samples.fetch([name, without_pid], value) + samples[[name, without_pid]] = [s, value].max when 'livesum' - labels.delete(:pid) - s = samples.fetch(key, 0.0) - samples[key] = s + value + s = samples.fetch([name, without_pid], 0.0) + samples[[name, without_pid]] = s + value else # all/liveall - samples[key] = value + samples[[name, labels]] = value end else - labels.delete(:pid) # Counter, Histogram and Summary. - s = samples.fetch(key, 0.0) - samples[key] = s + value + s = samples.fetch([name, without_pid], 0.0) + samples[[name, without_pid]] = s + value end end samples end