class StatsD::Instrument::Backends::UDPBackend::DogStatsDProtocol
Constants
- SERVICE_CHECK_STATUSES
- SUPPORTED_METRIC_TYPES
Public Instance Methods
generate_packet(metric)
click to toggle source
# File lib/statsd/instrument/backends/udp_backend.rb, line 14 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 << "|h:#{metric.metadata[:hostname]}" if metric.metadata[:hostname] packet << "|d:#{metric.metadata[:timestamp].to_i}" if metric.metadata[:timestamp] packet << "|k:#{metric.metadata[:aggregation_key]}" if metric.metadata[:aggregation_key] packet << "|p:#{metric.metadata[:priority]}" if metric.metadata[:priority] packet << "|s:#{metric.metadata[:source_type_name]}" if metric.metadata[:source_type_name] packet << "|t:#{metric.metadata[:alert_type]}" if metric.metadata[:alert_type] packet << "|##{metric.tags.join(',')}" if metric.tags elsif metric.type == :_sc status = metric.value.is_a?(Integer) ? metric.value : SERVICE_CHECK_STATUSES.fetch(metric.value.to_sym) packet << "_sc|#{metric.name}|#{status}" packet << "|h:#{metric.metadata[:hostname]}" if metric.metadata[:hostname] packet << "|d:#{metric.metadata[:timestamp].to_i}" if metric.metadata[:timestamp] packet << "|##{metric.tags.join(',')}" if metric.tags packet << "|m:#{metric.metadata[:message]}" if metric.metadata[:message] else packet << "#{metric.name}:#{metric.value}|#{metric.type}" packet << "|@#{metric.sample_rate}" if metric.sample_rate < 1 packet << "|##{metric.tags.join(',')}" if metric.tags end packet end