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



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

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

#perform_counter_increment!(metric, tags, increment) ⇒ Object



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

def perform_counter_increment!(metric, tags, increment)
  registry.get(build_name(metric)).increment(tags, increment)
end

#perform_gauge_set!(metric, tags, increment) ⇒ Object



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

def perform_gauge_set!(metric, tags, increment)
  registry.get(build_name(metric)).set(tags, increment)
end

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



37
38
39
# File 'lib/evil/metrics/prometheus/adapter.rb', line 37

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

#register_counter!(metric) ⇒ Object



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

def register_counter!(metric)
  validate_metric!(metric)
  registry.counter(build_name(metric), metric.comment)
end

#register_gauge!(metric) ⇒ Object



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

def register_gauge!(metric)
  validate_metric!(metric)
  registry.gauge(build_name(metric), metric.comment)
end

#register_histogram!(metric) ⇒ Object



31
32
33
34
35
# File 'lib/evil/metrics/prometheus/adapter.rb', line 31

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



9
10
11
# File 'lib/evil/metrics/prometheus/adapter.rb', line 9

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

#validate_metric!(metric) ⇒ Object

Raises:

  • (ArgumentError)


45
46
47
48
49
# File 'lib/evil/metrics/prometheus/adapter.rb', line 45

def validate_metric!(metric)
  return if metric.comment

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