Sha256: 6f8b7c726522ad182f38e076ae8709bd1cb990950b8dd78d026210d1d33328f1
Contents?: true
Size: 1.36 KB
Versions: 3
Compression:
Stored size: 1.36 KB
Contents
# encoding: UTF-8 require 'quantile' require 'prometheus/client/metric' module Prometheus module Client # Summary is an accumulator for samples. It captures Numeric data and # provides an efficient quantile calculation mechanism. class Summary < Metric # Value represents the state of a Summary at a given point. class Value < Hash attr_accessor :sum, :total def initialize(estimator) @sum, @total = estimator.sum, estimator.observations estimator.invariants.each do |invariant| self[invariant.quantile] = estimator.query(invariant.quantile) end end end def type :summary end # Records a given value. def add(labels, value) label_set = label_set_for(labels) synchronize { @values[label_set].observe(value) } end # Returns the value for the given label set def get(labels = {}) @validator.valid?(labels) synchronize do Value.new(@values[labels]) end end # Returns all label sets with their values def values synchronize do @values.each_with_object({}) do |(labels, value), memo| memo[labels] = Value.new(value) end end end private def default Quantile::Estimator.new end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
prometheus-client-0.4.1 | lib/prometheus/client/summary.rb |
prometheus-client-0.4.0 | lib/prometheus/client/summary.rb |
prometheus-client-0.3.1 | lib/prometheus/client/summary.rb |