Sha256: d95321cb01e44f8268dbcc5a8df92e73cd81f8d288f5b71975750d41467f6eed
Contents?: true
Size: 1.38 KB
Versions: 3
Compression:
Stored size: 1.38 KB
Contents
# frozen_string_literal: true module WaterDrop module Instrumentation # Monitor is used to hookup external monitoring services to monitor how WaterDrop works # 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) class Monitor < Dry::Monitor::Notifications # 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 EVENTS = %w[ producer.closed message.produced_async message.produced_sync message.acknowledged message.buffered messages.produced_async messages.produced_sync messages.buffered buffer.flushed_async buffer.flushed_async.error buffer.flushed_sync buffer.flushed_sync.error statistics.emitted error.emitted ].freeze private_constant :EVENTS # @return [WaterDrop::Instrumentation::Monitor] monitor instance for system instrumentation def initialize super(:waterdrop) EVENTS.each(&method(:register_event)) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
waterdrop-2.0.7 | lib/water_drop/instrumentation/monitor.rb |
waterdrop-2.0.6 | lib/water_drop/instrumentation/monitor.rb |
waterdrop-2.0.5 | lib/water_drop/instrumentation/monitor.rb |