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 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
Public Instance Methods
add_counter(name, description, instance_labels)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# File lib/dynflow/telemetry_adapters/statsd.rb, line 33 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 43 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