Class: Flare::TraceHealthReporter
- Inherits:
-
Object
- Object
- Flare::TraceHealthReporter
- Defined in:
- lib/flare/trace_health_reporter.rb
Overview
Records client-side tracing health into MetricStorage so flare-web can warn when local buffering, URL exhaustion, or export errors reduce trace fidelity.
Constant Summary collapse
- NAMESPACE =
"sdk"- SERVICE =
"flare-ruby"- TARGET =
"tracing"
Instance Method Summary collapse
-
#initialize(processor:, pool:, exporter:) ⇒ TraceHealthReporter
constructor
A new instance of TraceHealthReporter.
- #record(storage, bucket: Time.now.utc) ⇒ Object
Constructor Details
#initialize(processor:, pool:, exporter:) ⇒ TraceHealthReporter
Returns a new instance of TraceHealthReporter.
14 15 16 17 18 19 20 |
# File 'lib/flare/trace_health_reporter.rb', line 14 def initialize(processor:, pool:, exporter:) @processor = processor @pool = pool @exporter = exporter @last = {} @mutex = Mutex.new end |
Instance Method Details
#record(storage, bucket: Time.now.utc) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/flare/trace_health_reporter.rb', line 22 def record(storage, bucket: Time.now.utc) @mutex.synchronize do record_counter(storage, bucket, "dropped_spans", @processor.dropped_count.value) record_counter(storage, bucket, "export_failures", @processor.failed_export_count.value) record_counter(storage, bucket, "processor_exceptions", @processor.exception_count.value) record_counter(storage, bucket, "upload_url_pool_empty", @pool.empty_count.value) record_counter(storage, bucket, "upload_url_expired", @pool.expired_count.value) record_counter(storage, bucket, "r2_put_failures", @exporter.put_failure_count.value) record_counter(storage, bucket, "notify_failures", @exporter.notify_failure_count.value) record_counter(storage, bucket, "trace_pool_empty", @exporter.pool_empty_count.value) record_counter(storage, bucket, "trace_export_exceptions", @exporter.exception_count.value) buffer_size = @processor.buffer_size buffer_high_watermark = @processor.buffer_high_watermark.value record_gauge(storage, bucket, "buffer_size", buffer_size) record_gauge(storage, bucket, "buffer_high_watermark", buffer_high_watermark) record_gauge(storage, bucket, "buffer_limit", @processor.max_queue) if buffer_size.positive? || buffer_high_watermark.positive? @processor.reset_buffer_high_watermark end end |