class Datadog::Statsd::Serialization::StatSerializer
Attributes
Public Class Methods
Source
# File lib/datadog/statsd/serialization/stat_serializer.rb, line 7 def initialize(prefix, container_id, external_data, global_tags: []) @prefix = prefix @prefix_str = prefix.to_s @tag_serializer = TagSerializer.new(global_tags) @field_serializer = FieldSerializer.new(container_id, external_data) end
Public Instance Methods
Source
# File lib/datadog/statsd/serialization/stat_serializer.rb, line 14 def format(metric_name, delta, type, tags: [], sample_rate: 1, cardinality: nil) metric_name = formatted_metric_name(metric_name) fields = field_serializer.format(cardinality) if sample_rate != 1 if tags_list = tag_serializer.format(tags) "#{@prefix_str}#{metric_name}:#{delta}|#{type}|@#{sample_rate}|##{tags_list}#{fields}" else "#{@prefix_str}#{metric_name}:#{delta}|#{type}|@#{sample_rate}#{fields}" end else if tags_list = tag_serializer.format(tags) "#{@prefix_str}#{metric_name}:#{delta}|#{type}|##{tags_list}#{fields}" else "#{@prefix_str}#{metric_name}:#{delta}|#{type}#{fields}" end end end
Private Instance Methods
Source
# File lib/datadog/statsd/serialization/stat_serializer.rb, line 53 def formatted_metric_name(metric_name) formatted = metric_name_to_string(metric_name) if formatted.include?('::') formatted = formatted.gsub('::', '.') formatted.tr!(':|@', '_') formatted elsif formatted.include?(':') || formatted.include?('@') || formatted.include?('|') formatted.tr(':|@', '_') else formatted end end
Source
# File lib/datadog/statsd/serialization/stat_serializer.rb, line 44 def metric_name_to_string(metric_name) metric_name.to_s end