Class: StatsD::Instrument::Backends::UDPBackend::DogStatsDProtocol

Inherits:
Object
  • Object
show all
Defined in:
lib/statsd/instrument/backends/udp_backend.rb

Constant Summary collapse

EVENT_OPTIONS =
{
  date_happened: 'd',
  hostname: 'h',
  aggregation_key: 'k',
  priority: 'p',
  source_type_name: 's',
  alert_type: 't',
}
SERVICE_CHECK_OPTIONS =
{
  timestamp: 'd',
  hostname: 'h',
  message: 'm',
}
SUPPORTED_METRIC_TYPES =
BASE_SUPPORTED_METRIC_TYPES.merge(h: true, _e: true, _sc: true, d: true)

Instance Method Summary collapse

Instance Method Details

#generate_packet(metric) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/statsd/instrument/backends/udp_backend.rb', line 27

def generate_packet(metric)
  packet = +""

  if metric.type == :_e
    escaped_title = metric.name.gsub("\n", "\\n")
    escaped_text = metric.value.gsub("\n", "\\n")

    packet << "_e{#{escaped_title.size},#{escaped_text.size}}:#{escaped_title}|#{escaped_text}"
    packet << (metric, EVENT_OPTIONS)
  elsif metric.type == :_sc
    packet << "_sc|#{metric.name}|#{metric.value}"
    packet << (metric, SERVICE_CHECK_OPTIONS)
  else
    packet << "#{metric.name}:#{metric.value}|#{metric.type}"
  end

  packet << "|@#{metric.sample_rate}" if metric.sample_rate < 1
  packet << "|##{metric.tags.join(',')}" if metric.tags

  packet
end