class Deimos::Metrics::Manager

Constants

TYPES

Attributes

registry[R]

Public Class Methods

new(registry: Prometheus::Client.registry) click to toggle source
# File lib/deimos/metrics/manager.rb, line 14
def initialize(registry: Prometheus::Client.registry)
  @registry = registry
end

Public Instance Methods

collectors() click to toggle source
# File lib/deimos/metrics/manager.rb, line 18
def collectors
  @collectors ||= {}
end
subscribe(event_name, type:, label:, **kwargs) { |event, collector| ... } click to toggle source
# File lib/deimos/metrics/manager.rb, line 22
def subscribe(event_name, type:, label:, **kwargs, &block)
  Deimos.logger.info "Metrics: Subscribed to #{event_name}..."
  ActiveSupport::Notifications.subscribe(event_name) do |*args|
    event = ActiveSupport::Notifications::Event.new(*args)
    collector = register_collector!(event_name, type, label, kwargs)
    if block_given?
      yield(event, collector)
    else
      Deimos.logger.info event
    end
  end
end

Private Instance Methods

register_collector!(event_name, type, about, **kwargs) click to toggle source
# File lib/deimos/metrics/manager.rb, line 37
def register_collector!(event_name, type, about, **kwargs)
  return collectors[event_name] if collectors[event_name]
  name = event_name.gsub(".", "_").to_sym
  collectors[event_name] = TYPES[type].new(name, about, kwargs).tap { |x| registry.register(x) }
end