class Datadog::Statsd::Telemetry
Constants
- MAX_TELEMETRY_MESSAGE_SIZE_WT_TAGS
Rough estimation of maximum telemetry message size without tags
Attributes
bytes_dropped[R]
bytes_dropped_queue[R]
bytes_dropped_writer[R]
bytes_sent[R]
events[R]
metrics[R]
packets_dropped[R]
packets_dropped_queue[R]
packets_dropped_writer[R]
packets_sent[R]
service_checks[R]
Public Class Methods
new(flush_interval, global_tags: [], transport_type: :udp)
click to toggle source
# File lib/datadog/statsd/telemetry.rb, line 22 def initialize(flush_interval, global_tags: [], transport_type: :udp) @flush_interval = flush_interval @global_tags = global_tags @transport_type = transport_type reset # TODO: Karim: I don't know why but telemetry tags are serialized # before global tags so by refactoring this, I am keeping the same behavior @serialized_tags = Serialization::TagSerializer.new( client: 'ruby', client_version: VERSION, client_transport: transport_type, ).format(global_tags) end
Public Instance Methods
dropped_queue(bytes: 0, packets: 0)
click to toggle source
# File lib/datadog/statsd/telemetry.rb, line 65 def dropped_queue(bytes: 0, packets: 0) @bytes_dropped += bytes @bytes_dropped_queue += bytes @packets_dropped += packets @packets_dropped_queue += packets end
dropped_writer(bytes: 0, packets: 0)
click to toggle source
# File lib/datadog/statsd/telemetry.rb, line 72 def dropped_writer(bytes: 0, packets: 0) @bytes_dropped += bytes @bytes_dropped_writer += bytes @packets_dropped += packets @packets_dropped_writer += packets end
flush()
click to toggle source
# File lib/datadog/statsd/telemetry.rb, line 83 def flush [ sprintf(pattern, 'metrics', @metrics), sprintf(pattern, 'events', @events), sprintf(pattern, 'service_checks', @service_checks), sprintf(pattern, 'bytes_sent', @bytes_sent), sprintf(pattern, 'bytes_dropped', @bytes_dropped), sprintf(pattern, 'bytes_dropped_queue', @bytes_dropped_queue), sprintf(pattern, 'bytes_dropped_writer', @bytes_dropped_writer), sprintf(pattern, 'packets_sent', @packets_sent), sprintf(pattern, 'packets_dropped', @packets_dropped), sprintf(pattern, 'packets_dropped_queue', @packets_dropped_queue), sprintf(pattern, 'packets_dropped_writer', @packets_dropped_writer), ] end
reset()
click to toggle source
# File lib/datadog/statsd/telemetry.rb, line 41 def reset @metrics = 0 @events = 0 @service_checks = 0 @bytes_sent = 0 @bytes_dropped = 0 @bytes_dropped_queue = 0 @bytes_dropped_writer = 0 @packets_sent = 0 @packets_dropped = 0 @packets_dropped_queue = 0 @packets_dropped_writer = 0 @next_flush_time = now_in_s + @flush_interval end
sent(metrics: 0, events: 0, service_checks: 0, bytes: 0, packets: 0)
click to toggle source
# File lib/datadog/statsd/telemetry.rb, line 56 def sent(metrics: 0, events: 0, service_checks: 0, bytes: 0, packets: 0) @metrics += metrics @events += events @service_checks += service_checks @bytes_sent += bytes @packets_sent += packets end
should_flush?()
click to toggle source
# File lib/datadog/statsd/telemetry.rb, line 79 def should_flush? @next_flush_time < now_in_s end
would_fit_in?(max_buffer_payload_size)
click to toggle source
# File lib/datadog/statsd/telemetry.rb, line 37 def would_fit_in?(max_buffer_payload_size) MAX_TELEMETRY_MESSAGE_SIZE_WT_TAGS + serialized_tags.size < max_buffer_payload_size end
Private Instance Methods
now_in_s()
click to toggle source
# File lib/datadog/statsd/telemetry.rb, line 107 def now_in_s Process.clock_gettime(Process::CLOCK_MONOTONIC, :second) end
pattern()
click to toggle source
# File lib/datadog/statsd/telemetry.rb, line 102 def pattern @pattern ||= "datadog.dogstatsd.client.%s:%d|#{COUNTER_TYPE}|##{serialized_tags}" end