class Dynflow::TelemetryAdapters::StatsD

Public Class Methods

new(host = '127.0.0.1:8125') click to toggle source
# File lib/dynflow/telemetry_adapters/statsd.rb, line 4
def initialize(host = '127.0.0.1:8125')
  require 'statsd-instrument'

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

Public Instance Methods

add_counter(name, description, instance_labels) click to toggle source
# File lib/dynflow/telemetry_adapters/statsd.rb, line 12
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) click to toggle source
# File lib/dynflow/telemetry_adapters/statsd.rb, line 17
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) click to toggle source
# File lib/dynflow/telemetry_adapters/statsd.rb, line 22
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) click to toggle source
# File lib/dynflow/telemetry_adapters/statsd.rb, line 27
def increment_counter(name, value, tags)
  ::StatsD.increment(name_tag_mapping(name, tags), value)
end
observe_histogram(name, value, tags) click to toggle source
# File lib/dynflow/telemetry_adapters/statsd.rb, line 35
def observe_histogram(name, value, tags)
  ::StatsD.measure(name_tag_mapping(name, tags), value)
end
set_gauge(name, value, tags) click to toggle source
# File lib/dynflow/telemetry_adapters/statsd.rb, line 31
def set_gauge(name, value, tags)
  ::StatsD.gauge(name_tag_mapping(name, tags), value)
end

Private Instance Methods

name_tag_mapping(name, tags) click to toggle source
# File lib/dynflow/telemetry_adapters/statsd.rb, line 41
def name_tag_mapping(name, tags)
  instances = @instances[name]
  return name if instances.nil? || instances.empty?
  (name.to_s + '.' + instances.map {|x| tags[x]}.compact.join('.')).tr('-:/ ', '____')
end