Module: Philiprehberger::Metric

Defined in:
lib/philiprehberger/metric.rb,
lib/philiprehberger/metric/gauge.rb,
lib/philiprehberger/metric/counter.rb,
lib/philiprehberger/metric/summary.rb,
lib/philiprehberger/metric/version.rb,
lib/philiprehberger/metric/registry.rb,
lib/philiprehberger/metric/histogram.rb

Defined Under Namespace

Classes: Counter, Error, Gauge, Histogram, Registry, Summary

Constant Summary collapse

VERSION =
'0.4.0'

Class Method Summary collapse

Class Method Details

.counter(name, help: '') ⇒ Counter

Register a counter metric on the default registry.

Parameters:

  • name (String)

    the metric name

  • help (String) (defaults to: '')

    the help description

Returns:



24
25
26
# File 'lib/philiprehberger/metric.rb', line 24

def self.counter(name, help: '')
  default_registry.counter(name, help: help)
end

.default_registryRegistry

Return the default global registry.

Returns:



13
14
15
16
17
# File 'lib/philiprehberger/metric.rb', line 13

def self.default_registry
  @registry_mutex.synchronize do
    @default_registry ||= Registry.new
  end
end

.gauge(name, help: '') ⇒ Gauge

Register a gauge metric on the default registry.

Parameters:

  • name (String)

    the metric name

  • help (String) (defaults to: '')

    the help description

Returns:



33
34
35
# File 'lib/philiprehberger/metric.rb', line 33

def self.gauge(name, help: '')
  default_registry.gauge(name, help: help)
end

.get(name) ⇒ Counter, ...

Get a registered metric from the default registry.

Parameters:

  • name (String)

    the metric name

Returns:



90
91
92
# File 'lib/philiprehberger/metric.rb', line 90

def self.get(name)
  default_registry.get(name)
end

.histogram(name, help: '', buckets: Histogram::DEFAULT_BUCKETS) ⇒ Histogram

Register a histogram metric on the default registry.

Parameters:

  • name (String)

    the metric name

  • help (String) (defaults to: '')

    the help description

  • buckets (Array<Numeric>) (defaults to: Histogram::DEFAULT_BUCKETS)

    bucket boundaries

Returns:



43
44
45
# File 'lib/philiprehberger/metric.rb', line 43

def self.histogram(name, help: '', buckets: Histogram::DEFAULT_BUCKETS)
  default_registry.histogram(name, help: help, buckets: buckets)
end

.increment(name, labels: {}) ⇒ void

This method returns an undefined value.

Increment a counter on the default registry.

Parameters:

  • name (String)

    the metric name

  • labels (Hash) (defaults to: {})

    optional labels



62
63
64
# File 'lib/philiprehberger/metric.rb', line 62

def self.increment(name, labels: {})
  default_registry.increment(name, labels: labels)
end

.namesArray<String>

List the names of all metrics on the default registry.

Returns:

  • (Array<String>)


135
136
137
# File 'lib/philiprehberger/metric.rb', line 135

def self.names
  default_registry.names
end

.observe(name, value, labels: {}) ⇒ void

This method returns an undefined value.

Observe a histogram value on the default registry.

Parameters:

  • name (String)

    the metric name

  • value (Numeric)

    the observed value

  • labels (Hash) (defaults to: {})

    optional labels



82
83
84
# File 'lib/philiprehberger/metric.rb', line 82

def self.observe(name, value, labels: {})
  default_registry.observe(name, value, labels: labels)
end

.registered?(name) ⇒ Boolean

Check whether a metric is registered on the default registry.

Parameters:

  • name (String)

    the metric name

Returns:

  • (Boolean)


143
144
145
# File 'lib/philiprehberger/metric.rb', line 143

def self.registered?(name)
  default_registry.registered?(name)
end

.resetvoid

This method returns an undefined value.

Reset the default registry.



158
159
160
161
162
163
# File 'lib/philiprehberger/metric.rb', line 158

def self.reset
  @registry_mutex.synchronize do
    @default_registry&.reset
    @default_registry = nil
  end
end

.set(name, value, labels: {}) ⇒ void

This method returns an undefined value.

Set a gauge value on the default registry.

Parameters:

  • name (String)

    the metric name

  • value (Numeric)

    the value to set

  • labels (Hash) (defaults to: {})

    optional labels



72
73
74
# File 'lib/philiprehberger/metric.rb', line 72

def self.set(name, value, labels: {})
  default_registry.set(name, value, labels: labels)
end

.snapshot(name) ⇒ Hash

Get a snapshot of a metric from the default registry.

Parameters:

  • name (String)

    the metric name

Returns:

  • (Hash)


98
99
100
# File 'lib/philiprehberger/metric.rb', line 98

def self.snapshot(name)
  default_registry.snapshot(name)
end

.summary(name, help: '', quantiles: Summary::DEFAULT_QUANTILES) ⇒ Summary

Register a summary metric on the default registry.

Parameters:

  • name (String)

    the metric name

  • help (String) (defaults to: '')

    the help description

  • quantiles (Array<Float>) (defaults to: Summary::DEFAULT_QUANTILES)

    quantiles to compute

Returns:



53
54
55
# File 'lib/philiprehberger/metric.rb', line 53

def self.summary(name, help: '', quantiles: Summary::DEFAULT_QUANTILES)
  default_registry.summary(name, help: help, quantiles: quantiles)
end

.time(name, labels: {}, &block) ⇒ Object

Measure block execution time and record as a histogram observation.

Parameters:

  • name (String)

    the histogram metric name

  • labels (Hash) (defaults to: {})

    optional labels

Returns:

  • (Object)

    the block’s return value



107
108
109
# File 'lib/philiprehberger/metric.rb', line 107

def self.time(name, labels: {}, &block)
  default_registry.time(name, labels: labels, &block)
end

.to_json(*args) ⇒ String

Export all metrics as JSON.

Returns:

  • (String)


121
122
123
# File 'lib/philiprehberger/metric.rb', line 121

def self.to_json(*args)
  default_registry.to_json(*args)
end

.to_prometheusString

Export all metrics in Prometheus text exposition format.

Returns:

  • (String)


114
115
116
# File 'lib/philiprehberger/metric.rb', line 114

def self.to_prometheus
  default_registry.to_prometheus
end

.to_statsdString

Export all metrics in StatsD line protocol format.

Returns:

  • (String)


128
129
130
# File 'lib/philiprehberger/metric.rb', line 128

def self.to_statsd
  default_registry.to_statsd
end

.unregister(name) ⇒ Counter, ...

Unregister a metric from the default registry.

Parameters:

  • name (String)

    the metric name

Returns:



151
152
153
# File 'lib/philiprehberger/metric.rb', line 151

def self.unregister(name)
  default_registry.unregister(name)
end