Class: StandardCircuit::Notifiers::Metrics

Inherits:
Object
  • Object
show all
Defined in:
lib/standard_circuit/notifiers/metrics.rb

Overview

Subscribes to all standard_circuit.circuit.opened,closed,degraded events and emits a Sentry::Metrics counter with the canonical state name.

Constant Summary collapse

STATE_FOR_EVENT =
{
  "standard_circuit.circuit.opened"   => "opened",
  "standard_circuit.circuit.closed"   => "closed",
  "standard_circuit.circuit.degraded" => "half_open"
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(metric_prefix: "external") ⇒ Metrics

Returns a new instance of Metrics.



12
13
14
# File 'lib/standard_circuit/notifiers/metrics.rb', line 12

def initialize(metric_prefix: "external")
  @metric_prefix = metric_prefix
end

Instance Method Details

#call(event_name, payload) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/standard_circuit/notifiers/metrics.rb', line 16

def call(event_name, payload)
  state = STATE_FOR_EVENT[event_name]
  return unless state

  ::Sentry::Metrics.count(
    "#{@metric_prefix}.circuit_breaker",
    value: 1,
    attributes: { service: payload[:circuit], state: state }
  )
end