Module: Datadog::MeasuredBuffer
- Includes:
- Kernel
- Included in:
- CRubyTraceBuffer, ThreadSafeTraceBuffer
- Defined in:
- lib/ddtrace/buffer.rb
Overview
Health metrics for trace buffers.
Instance Method Summary collapse
- #add!(trace) ⇒ Object
- #add_all!(traces) ⇒ Object
-
#drain! ⇒ Object
Stored traces are returned and the local buffer is reset.
- #initialize(*_) ⇒ Object
- #measure_accept(trace) ⇒ Object
- #measure_drop(trace) ⇒ Object
- #measure_pop(traces) ⇒ Object
- #replace!(trace) ⇒ Object
Instance Method Details
#add!(trace) ⇒ Object
239 240 241 242 243 244 |
# File 'lib/ddtrace/buffer.rb', line 239 def add!(trace) super # Emit health metrics measure_accept(trace) end |
#add_all!(traces) ⇒ Object
246 247 248 249 250 251 |
# File 'lib/ddtrace/buffer.rb', line 246 def add_all!(traces) super # Emit health metrics traces.each { |trace| measure_accept(trace) } end |
#drain! ⇒ Object
Stored traces are returned and the local buffer is reset.
264 265 266 267 268 |
# File 'lib/ddtrace/buffer.rb', line 264 def drain! traces = super measure_pop(traces) traces end |
#initialize(*_) ⇒ Object
230 231 232 233 234 235 236 237 |
# File 'lib/ddtrace/buffer.rb', line 230 def initialize(*_) super @buffer_accepted = 0 @buffer_accepted_lengths = 0 @buffer_dropped = 0 @buffer_spans = 0 end |
#measure_accept(trace) ⇒ Object
270 271 272 273 274 275 276 277 |
# File 'lib/ddtrace/buffer.rb', line 270 def measure_accept(trace) @buffer_accepted += 1 @buffer_accepted_lengths += trace.length @buffer_spans += trace.length rescue StandardError => e Datadog.logger.debug("Failed to measure queue accept. Cause: #{e.} Source: #{Array(e.backtrace).first}") end |
#measure_drop(trace) ⇒ Object
279 280 281 282 283 284 285 |
# File 'lib/ddtrace/buffer.rb', line 279 def measure_drop(trace) @buffer_dropped += 1 @buffer_spans -= trace.length rescue StandardError => e Datadog.logger.debug("Failed to measure queue drop. Cause: #{e.} Source: #{Array(e.backtrace).first}") end |
#measure_pop(traces) ⇒ Object
287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 |
# File 'lib/ddtrace/buffer.rb', line 287 def measure_pop(traces) # Accepted, cumulative totals Datadog.health_metrics.queue_accepted(@buffer_accepted) Datadog.health_metrics.queue_accepted_lengths(@buffer_accepted_lengths) # Dropped, cumulative totals Datadog.health_metrics.queue_dropped(@buffer_dropped) # TODO: are we missing a +queue_dropped_lengths+ metric? # Queue gauges, current values Datadog.health_metrics.queue_max_length(@max_size) Datadog.health_metrics.queue_spans(@buffer_spans) Datadog.health_metrics.queue_length(traces.length) # Reset aggregated metrics @buffer_accepted = 0 @buffer_accepted_lengths = 0 @buffer_dropped = 0 @buffer_spans = 0 rescue StandardError => e Datadog.logger.debug("Failed to measure queue. Cause: #{e.} Source: #{Array(e.backtrace).first}") end |
#replace!(trace) ⇒ Object
253 254 255 256 257 258 259 260 261 |
# File 'lib/ddtrace/buffer.rb', line 253 def replace!(trace) discarded_trace = super # Emit health metrics measure_accept(trace) measure_drop(discarded_trace) if discarded_trace discarded_trace end |