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.



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

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



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

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



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

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



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

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



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

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

#observe_histogram(name, value, tags) ⇒ Object



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

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

#set_gauge(name, value, tags) ⇒ Object



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

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