Sha256: 416edd1d49803414fc9d17ff2ed470621520ef2f1cfb9966256127626154f7d5
Contents?: true
Size: 1.4 KB
Versions: 3
Compression:
Stored size: 1.4 KB
Contents
# encoding: UTF-8 require 'thread' require 'prometheus/client/counter' require 'prometheus/client/summary' require 'prometheus/client/gauge' require 'prometheus/client/histogram' module Prometheus module Client # Registry class Registry class AlreadyRegisteredError < StandardError; end def initialize @metrics = {} @mutex = Mutex.new end def register(metric) name = metric.name @mutex.synchronize do if exist?(name.to_sym) raise AlreadyRegisteredError, "#{name} has already been registered" end @metrics[name.to_sym] = metric end metric end def counter(name, docstring, base_labels = {}) register(Counter.new(name, docstring, base_labels)) end def summary(name, docstring, base_labels = {}) register(Summary.new(name, docstring, base_labels)) end def gauge(name, docstring, base_labels = {}) register(Gauge.new(name, docstring, base_labels)) end def histogram(name, docstring, base_labels = {}, buckets = Histogram::DEFAULT_BUCKETS) register(Histogram.new(name, docstring, base_labels, buckets)) end def exist?(name) @metrics.key?(name) end def get(name) @metrics[name.to_sym] end def metrics @metrics.values end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
prometheus-client-0.7.1 | lib/prometheus/client/registry.rb |
prometheus-client-0.7.0 | lib/prometheus/client/registry.rb |
prometheus-client-0.7.0.pre.rc.1 | lib/prometheus/client/registry.rb |