class Karafka::Instrumentation::Monitor
Monitor
is used to hookup external monitoring services to monitor how Karafka
works It provides a standardized API for checking incoming messages/enqueueing etc Since it is a pub-sub based on dry-monitor, you can use as many subscribers/loggers at the same time, which means that you might have for example file logging and NewRelic at the same time @note This class acts as a singleton because we are only permitted to have single monitor
per running process (just as logger)
Constants
- BASE_EVENTS
List of events that we support in the system and to which a monitor client can hook up @note The non-error once support timestamp benchmarking @note Depending on
Karafka
extensions and additional engines, this might not be thecomplete list of all the events. Please use the #available_events on fully loaded Karafka system to determine all of the events you can use. Last 4 events are from WaterDrop but for convenience we use the same monitor for the whole karafka ecosystem
Public Class Methods
@return [Karafka::Instrumentation::Monitor] monitor instance for system instrumentation
# File lib/karafka/instrumentation/monitor.rb, line 49 def initialize super(:karafka) BASE_EVENTS.each(&method(:register_event)) end
Public Instance Methods
@return [Array<String>] names of available events to which we can subscribe
# File lib/karafka/instrumentation/monitor.rb, line 65 def available_events __bus__.events.keys end
Allows us to subscribe to events with a code that will be yielded upon events @param event_name_or_listener [String, Object] name of the event we want to subscribe to
or a listener if we decide to go with object listener
# File lib/karafka/instrumentation/monitor.rb, line 57 def subscribe(event_name_or_listener) return super unless event_name_or_listener.is_a?(String) return super if available_events.include?(event_name_or_listener) raise Errors::UnregisteredMonitorEventError, event_name_or_listener end