Class: Journaled::Outbox::MetricEmitter
- Inherits:
-
Object
- Object
- Journaled::Outbox::MetricEmitter
- Defined in:
- lib/journaled/outbox/metric_emitter.rb
Overview
Handles metric emission for the Worker
This class is responsible for collecting and emitting metrics about the outbox queue.
Instance Method Summary collapse
-
#emit_batch_metrics(stats) ⇒ Object
Emit batch processing metrics.
-
#emit_queue_metrics ⇒ Object
Collect and emit queue metrics.
-
#initialize(worker_id:) ⇒ MetricEmitter
constructor
A new instance of MetricEmitter.
Constructor Details
#initialize(worker_id:) ⇒ MetricEmitter
Returns a new instance of MetricEmitter.
9 10 11 |
# File 'lib/journaled/outbox/metric_emitter.rb', line 9 def initialize(worker_id:) @worker_id = worker_id end |
Instance Method Details
#emit_batch_metrics(stats) ⇒ Object
Emit batch processing metrics
16 17 18 19 20 21 22 23 |
# File 'lib/journaled/outbox/metric_emitter.rb', line 16 def emit_batch_metrics(stats) total_events = stats[:succeeded] + stats[:failed_permanently] + stats[:failed_transiently] emit_metric('journaled.worker.batch_process', value: total_events) emit_metric('journaled.worker.batch_sent', value: stats[:succeeded]) emit_metric('journaled.worker.batch_failed_permanently', value: stats[:failed_permanently]) emit_metric('journaled.worker.batch_failed_transiently', value: stats[:failed_transiently]) end |
#emit_queue_metrics ⇒ Object
Collect and emit queue metrics
This calculates various queue statistics and emits individual metrics for each.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/journaled/outbox/metric_emitter.rb', line 28 def emit_queue_metrics metrics = calculate_queue_metrics emit_metric('journaled.worker.queue_total_count', value: metrics[:total_count]) emit_metric('journaled.worker.queue_workable_count', value: metrics[:workable_count]) emit_metric('journaled.worker.queue_erroring_count', value: metrics[:erroring_count]) emit_metric('journaled.worker.queue_oldest_age_seconds', value: metrics[:oldest_age_seconds]) Rails.logger.info( "Queue metrics: total=#{metrics[:total_count]}, " \ "workable=#{metrics[:workable_count]}, " \ "erroring=#{metrics[:erroring_count]}, " \ "oldest_age=#{metrics[:oldest_age_seconds].round(2)}s", ) end |