Sha256: d36dfdd017c526bcc6d6f4afd978570f66c2ab0ccfc0494137b265e9d71c10a1

Contents?: true

Size: 1.81 KB

Versions: 5

Compression:

Stored size: 1.81 KB

Contents

# frozen_string_literal: true

module Karafka
  # Namespace for all the things related with Karafka instrumentation process
  module Instrumentation
    # 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)
    class Notifications < Karafka::Core::Monitoring::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
      # @note Depending on Karafka extensions and additional engines, this might not be the
      #   complete list of all the events. Please use the #available_events on fully loaded
      #   Karafka system to determine all of the events you can use.
      EVENTS = %w[
        app.initialized
        app.running
        app.stopping
        app.stopped

        consumer.consumed
        consumer.revoked
        consumer.shutdown

        process.notice_signal

        connection.listener.before_fetch_loop
        connection.listener.fetch_loop
        connection.listener.fetch_loop.received

        worker.process
        worker.processed

        statistics.emitted

        error.occurred
      ].freeze

      private_constant :EVENTS

      # @return [Karafka::Instrumentation::Monitor] monitor instance for system instrumentation
      def initialize
        super
        EVENTS.each { |event| register_event(event) }
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
karafka-2.0.1 lib/karafka/instrumentation/notifications.rb
karafka-2.0.0 lib/karafka/instrumentation/notifications.rb
karafka-2.0.0.rc6 lib/karafka/instrumentation/notifications.rb
karafka-2.0.0.rc5 lib/karafka/instrumentation/notifications.rb
karafka-2.0.0.rc4 lib/karafka/instrumentation/notifications.rb