Class: Evil::Metrics::Prometheus::Adapter

Inherits:
BaseAdapter
  • Object
show all
Defined in:
lib/evil/metrics/prometheus/adapter.rb

Instance Method Summary collapse

Instance Method Details

#build_name(metric) ⇒ Object



44
45
46
# File 'lib/evil/metrics/prometheus/adapter.rb', line 44

def build_name(metric)
  [metric.group, metric.name, metric.unit].compact.join("_").to_sym
end

#perform_counter_increment!Object



21
22
23
# File 'lib/evil/metrics/prometheus/adapter.rb', line 21

def perform_counter_increment!(*)
  # Do nothing. Prometheus will read current value from evil metric
end

#perform_gauge_set!Object



30
31
32
# File 'lib/evil/metrics/prometheus/adapter.rb', line 30

def perform_gauge_set!(*)
  # Do nothing. Prometheus will read current value from evil metric
end

#perform_histogram_measure!(metric, tags, value) ⇒ Object



40
41
42
# File 'lib/evil/metrics/prometheus/adapter.rb', line 40

def perform_histogram_measure!(metric, tags, value)
  registry.get(build_name(metric)).observe(tags, value)
end

#register_counter!(metric) ⇒ Object



16
17
18
19
# File 'lib/evil/metrics/prometheus/adapter.rb', line 16

def register_counter!(metric)
  validate_metric!(metric)
  registry.register(Prometheus::CounterWrapper.new(metric))
end

#register_gauge!(metric) ⇒ Object



25
26
27
28
# File 'lib/evil/metrics/prometheus/adapter.rb', line 25

def register_gauge!(metric)
  validate_metric!(metric)
  registry.register(Prometheus::GaugeWrapper.new(metric))
end

#register_histogram!(metric) ⇒ Object



34
35
36
37
38
# File 'lib/evil/metrics/prometheus/adapter.rb', line 34

def register_histogram!(metric)
  validate_metric!(metric)
  buckets = metric.buckets || ::Prometheus::Client::Histogram::DEFAULT_BUCKETS
  registry.histogram(build_name(metric), metric.comment, {}, buckets)
end

#registryObject



12
13
14
# File 'lib/evil/metrics/prometheus/adapter.rb', line 12

def registry
  @registry ||= ::Prometheus::Client.registry
end

#validate_metric!(metric) ⇒ Object

Raises:

  • (ArgumentError)


48
49
50
51
52
# File 'lib/evil/metrics/prometheus/adapter.rb', line 48

def validate_metric!(metric)
  return if metric.comment

  raise ArgumentError, "Prometheus require metrics to have comments"
end