Class: WaterDrop::Instrumentation::Vendors::Datadog::MetricsListener

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Karafka::Core::Configurable
Defined in:
lib/waterdrop/instrumentation/vendors/datadog/metrics_listener.rb

Overview

Note:

You need to setup the dogstatsd-ruby client and assign it

Listener that can be used to subscribe to WaterDrop producer to receive stats via StatsD and/or Datadog

Defined Under Namespace

Classes: RdKafkaMetric

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ MetricsListener

Returns a new instance of MetricsListener.

Parameters:

  • block (Proc)

    configuration block



56
57
58
59
# File 'lib/waterdrop/instrumentation/vendors/datadog/metrics_listener.rb', line 56

def initialize(&block)
  configure
  setup(&block) if block
end

Instance Method Details

#on_error_occurred(_event) ⇒ Object

Increases the errors count by 1

Parameters:

  • _event (Karafka::Core::Monitoring::Event)


81
82
83
# File 'lib/waterdrop/instrumentation/vendors/datadog/metrics_listener.rb', line 81

def on_error_occurred(_event)
  count('error_occurred', 1, tags: default_tags)
end

#on_message_acknowledged(_event) ⇒ Object

Increases acknowledged messages counter

Parameters:

  • _event (Karafka::Core::Monitoring::Event)


87
88
89
# File 'lib/waterdrop/instrumentation/vendors/datadog/metrics_listener.rb', line 87

def on_message_acknowledged(_event)
  increment('acknowledged', tags: default_tags)
end

#on_statistics_emitted(event) ⇒ Object

Hooks up to WaterDrop instrumentation for emitted statistics

Parameters:

  • event (Karafka::Core::Monitoring::Event)


70
71
72
73
74
75
76
# File 'lib/waterdrop/instrumentation/vendors/datadog/metrics_listener.rb', line 70

def on_statistics_emitted(event)
  statistics = event[:statistics]

  rd_kafka_metrics.each do |metric|
    report_metric(metric, statistics)
  end
end

#setup(&block) ⇒ Object

Note:

We define this alias to be consistent with WaterDrop#setup

Parameters:

  • block (Proc)

    configuration block



63
64
65
# File 'lib/waterdrop/instrumentation/vendors/datadog/metrics_listener.rb', line 63

def setup(&block)
  configure(&block)
end