Class: Dynflow::TelemetryAdapters::StatsD

Inherits:
Abstract
  • Object
show all
Defined in:
lib/dynflow/telemetry_adapters/statsd.rb

Constant Summary

Constants inherited from Abstract

Abstract::DEFAULT_BUCKETS

Instance Method Summary collapse

Methods inherited from Abstract

#measure, #with_instance

Constructor Details

#initialize(host = '127.0.0.1:8125') ⇒ StatsD

Returns a new instance of StatsD.



5
6
7
8
9
10
11
# File 'lib/dynflow/telemetry_adapters/statsd.rb', line 5

def initialize(host = '127.0.0.1:8125')
  require 'statsd-instrument'

  @instances = {}
  @host = host
  ::StatsD.backend = ::StatsD::Instrument::Backends::UDPBackend.new(host, :statsd)
end

Instance Method Details

#add_counter(name, description, instance_labels) ⇒ Object



13
14
15
16
# File 'lib/dynflow/telemetry_adapters/statsd.rb', line 13

def add_counter(name, description, instance_labels)
  raise "Metric already registered: #{name}" if @instances[name]
  @instances[name] = instance_labels
end

#add_gauge(name, description, instance_labels) ⇒ Object



18
19
20
21
# File 'lib/dynflow/telemetry_adapters/statsd.rb', line 18

def add_gauge(name, description, instance_labels)
  raise "Metric already registered: #{name}" if @instances[name]
  @instances[name] = instance_labels
end

#add_histogram(name, description, instance_labels, buckets = DEFAULT_BUCKETS) ⇒ Object



23
24
25
26
# File 'lib/dynflow/telemetry_adapters/statsd.rb', line 23

def add_histogram(name, description, instance_labels, buckets = DEFAULT_BUCKETS)
  raise "Metric already registered: #{name}" if @instances[name]
  @instances[name] = instance_labels
end

#increment_counter(name, value, tags) ⇒ Object



28
29
30
# File 'lib/dynflow/telemetry_adapters/statsd.rb', line 28

def increment_counter(name, value, tags)
  ::StatsD.increment(name_tag_mapping(name, tags), value)
end

#observe_histogram(name, value, tags) ⇒ Object



36
37
38
# File 'lib/dynflow/telemetry_adapters/statsd.rb', line 36

def observe_histogram(name, value, tags)
  ::StatsD.measure(name_tag_mapping(name, tags), value)
end

#set_gauge(name, value, tags) ⇒ Object



32
33
34
# File 'lib/dynflow/telemetry_adapters/statsd.rb', line 32

def set_gauge(name, value, tags)
  ::StatsD.gauge(name_tag_mapping(name, tags), value)
end