Class: Datadog::Statsd::Telemetry

Inherits:
Object
  • Object
show all
Defined in:
lib/datadog/statsd/telemetry.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(disabled, tags, flush_interval) ⇒ Telemetry

Returns a new instance of Telemetry.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/datadog/statsd/telemetry.rb', line 16

def initialize(disabled, tags, flush_interval)
  @disabled = disabled
  @tags = tags
  @flush_interval = flush_interval
  reset

  # estimate_max_size is an estimation or the maximum size of the
  # telemetry payload. Since we don't want our packet to go over
  # 'max_buffer_bytes', we have to adjust with the size of the telemetry
  # (and any tags used). The telemetry payload size will change depending
  # on the actual value of metrics: metrics received, packet dropped,
  # etc. This is why we add a 63bytes margin: 9 bytes for each of the 7
  # telemetry metrics.
  @estimate_max_size = @disabled ? 0 : flush().length + 9 * 7
end

Instance Attribute Details

#bytes_droppedObject

Returns the value of attribute bytes_dropped.



11
12
13
# File 'lib/datadog/statsd/telemetry.rb', line 11

def bytes_dropped
  @bytes_dropped
end

#bytes_sentObject

Returns the value of attribute bytes_sent.



10
11
12
# File 'lib/datadog/statsd/telemetry.rb', line 10

def bytes_sent
  @bytes_sent
end

#estimate_max_sizeObject (readonly)

Returns the value of attribute estimate_max_size.



14
15
16
# File 'lib/datadog/statsd/telemetry.rb', line 14

def estimate_max_size
  @estimate_max_size
end

#eventsObject

Returns the value of attribute events.



8
9
10
# File 'lib/datadog/statsd/telemetry.rb', line 8

def events
  @events
end

#metricsObject

Returns the value of attribute metrics.



7
8
9
# File 'lib/datadog/statsd/telemetry.rb', line 7

def metrics
  @metrics
end

#packets_droppedObject

Returns the value of attribute packets_dropped.



13
14
15
# File 'lib/datadog/statsd/telemetry.rb', line 13

def packets_dropped
  @packets_dropped
end

#packets_sentObject

Returns the value of attribute packets_sent.



12
13
14
# File 'lib/datadog/statsd/telemetry.rb', line 12

def packets_sent
  @packets_sent
end

#service_checksObject

Returns the value of attribute service_checks.



9
10
11
# File 'lib/datadog/statsd/telemetry.rb', line 9

def service_checks
  @service_checks
end

Instance Method Details

#flushObject



50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/datadog/statsd/telemetry.rb', line 50

def flush
  return '' if @disabled

  # using shorthand syntax to reduce the garbage collection
  return %Q(
datadog.dogstatsd.client.metrics:#{@metrics}|#{COUNTER_TYPE}|##{@tags}
datadog.dogstatsd.client.events:#{@events}|#{COUNTER_TYPE}|##{@tags}
datadog.dogstatsd.client.service_checks:#{@service_checks}|#{COUNTER_TYPE}|##{@tags}
datadog.dogstatsd.client.bytes_sent:#{@bytes_sent}|#{COUNTER_TYPE}|##{@tags}
datadog.dogstatsd.client.bytes_dropped:#{@bytes_dropped}|#{COUNTER_TYPE}|##{@tags}
datadog.dogstatsd.client.packets_sent:#{@packets_sent}|#{COUNTER_TYPE}|##{@tags}
datadog.dogstatsd.client.packets_dropped:#{@packets_dropped}|#{COUNTER_TYPE}|##{@tags})
end

#flush?Boolean

Returns:

  • (Boolean)


43
44
45
46
47
48
# File 'lib/datadog/statsd/telemetry.rb', line 43

def flush?
  if @next_flush_time < Time.now.to_i
    return true
  end
  return false
end

#resetObject



32
33
34
35
36
37
38
39
40
41
# File 'lib/datadog/statsd/telemetry.rb', line 32

def reset
  @metrics = 0
  @events = 0
  @service_checks = 0
  @bytes_sent = 0
  @bytes_dropped = 0
  @packets_sent = 0
  @packets_dropped = 0
  @next_flush_time = Time.now.to_i + @flush_interval
end