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
227 228 229 230 231 232 |
# File 'lib/ddtrace/buffer.rb', line 227 def add!(trace) super # Emit health metrics measure_accept(trace) end |
#add_all!(traces) ⇒ Object
234 235 236 237 238 239 |
# File 'lib/ddtrace/buffer.rb', line 234 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.
252 253 254 255 256 |
# File 'lib/ddtrace/buffer.rb', line 252 def drain! traces = super measure_pop(traces) traces end |
#initialize(*_) ⇒ Object
218 219 220 221 222 223 224 225 |
# File 'lib/ddtrace/buffer.rb', line 218 def initialize(*_) super @buffer_accepted = 0 @buffer_accepted_lengths = 0 @buffer_dropped = 0 @buffer_spans = 0 end |
#measure_accept(trace) ⇒ Object
258 259 260 261 262 263 264 265 |
# File 'lib/ddtrace/buffer.rb', line 258 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.message} Source: #{Array(e.backtrace).first}") end |
#measure_drop(trace) ⇒ Object
267 268 269 270 271 272 273 |
# File 'lib/ddtrace/buffer.rb', line 267 def measure_drop(trace) @buffer_dropped += 1 @buffer_spans -= trace.length rescue StandardError => e Datadog.logger.debug("Failed to measure queue drop. Cause: #{e.message} Source: #{Array(e.backtrace).first}") end |
#measure_pop(traces) ⇒ Object
275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 |
# File 'lib/ddtrace/buffer.rb', line 275 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.message} Source: #{Array(e.backtrace).first}") end |
#replace!(trace) ⇒ Object
241 242 243 244 245 246 247 248 249 |
# File 'lib/ddtrace/buffer.rb', line 241 def replace!(trace) discarded_trace = super # Emit health metrics measure_accept(trace) measure_drop(discarded_trace) if discarded_trace discarded_trace end |