class StatsD::Instrument::DatagramBuilder
@note This class is part of the new Client implementation that is intended
to become the new default in the next major release of this library.
Attributes
prefix[R]
Public Class Methods
datagram_class()
click to toggle source
# File lib/statsd/instrument/datagram_builder.rb, line 25 def self.datagram_class StatsD::Instrument::Datagram end
new(prefix: nil, default_tags: nil)
click to toggle source
# File lib/statsd/instrument/datagram_builder.rb, line 29 def initialize(prefix: nil, default_tags: nil) @prefix = prefix.nil? ? "" : "#{normalize_name(prefix)}." @default_tags = normalize_tags(default_tags) end
unsupported_datagram_types(*types)
click to toggle source
# File lib/statsd/instrument/datagram_builder.rb, line 17 def self.unsupported_datagram_types(*types) types.each do |type| define_method(type) do |_, _, _, _| raise NotImplementedError, "Type #{type} metrics are not supported by #{self.class.name}." end end end
Public Instance Methods
c(name, value, sample_rate, tags)
click to toggle source
# File lib/statsd/instrument/datagram_builder.rb, line 34 def c(name, value, sample_rate, tags) generate_generic_datagram(name, value, 'c', sample_rate, tags) end
d(name, value, sample_rate, tags)
click to toggle source
# File lib/statsd/instrument/datagram_builder.rb, line 54 def d(name, value, sample_rate, tags) generate_generic_datagram(name, value, 'd', sample_rate, tags) end
g(name, value, sample_rate, tags)
click to toggle source
# File lib/statsd/instrument/datagram_builder.rb, line 38 def g(name, value, sample_rate, tags) generate_generic_datagram(name, value, 'g', sample_rate, tags) end
h(name, value, sample_rate, tags)
click to toggle source
# File lib/statsd/instrument/datagram_builder.rb, line 50 def h(name, value, sample_rate, tags) generate_generic_datagram(name, value, 'h', sample_rate, tags) end
kv(name, value, sample_rate, tags)
click to toggle source
# File lib/statsd/instrument/datagram_builder.rb, line 58 def kv(name, value, sample_rate, tags) generate_generic_datagram(name, value, 'kv', sample_rate, tags) end
latency_metric_type()
click to toggle source
# File lib/statsd/instrument/datagram_builder.rb, line 62 def latency_metric_type :ms end
ms(name, value, sample_rate, tags)
click to toggle source
# File lib/statsd/instrument/datagram_builder.rb, line 42 def ms(name, value, sample_rate, tags) generate_generic_datagram(name, value, 'ms', sample_rate, tags) end
s(name, value, sample_rate, tags)
click to toggle source
# File lib/statsd/instrument/datagram_builder.rb, line 46 def s(name, value, sample_rate, tags) generate_generic_datagram(name, value, 's', sample_rate, tags) end
Protected Instance Methods
generate_generic_datagram(name, value, type, sample_rate, tags)
click to toggle source
# File lib/statsd/instrument/datagram_builder.rb, line 93 def generate_generic_datagram(name, value, type, sample_rate, tags) tags = normalize_tags(tags) + default_tags datagram = +"#{@prefix}#{normalize_name(name)}:#{value}|#{type}" datagram << "|@#{sample_rate}" if sample_rate && sample_rate < 1 datagram << "|##{tags.join(',')}" unless tags.empty? datagram end
normalize_name(name)
click to toggle source
Utility function to remove invalid characters from a StatsD metric name
# File lib/statsd/instrument/datagram_builder.rb, line 87 def normalize_name(name) # Fast path when no normalization is needed to avoid copying the string return name unless /[:|@]/.match?(name) name.tr(':|@', '_') end