Module: SolidQueueGuard::Metrics::DepthEmitter
- Defined in:
- lib/solid_queue_guard/metrics/depth_emitter.rb
Overview
Snapshot gauges answering "are jobs stuck right now?" (same DB source as Mission Control /jobs).
Class Method Summary collapse
- .emit! ⇒ Object
- .emit_execution_gauges! ⇒ Object
- .emit_ready_ages!(oldest_by_queue) ⇒ Object
- .emit_ready_counts!(ready_counts) ⇒ Object
- .emit_ready_gauges! ⇒ Object
- .enabled? ⇒ Boolean
- .statsd ⇒ Object
Class Method Details
.emit! ⇒ Object
10 11 12 13 14 15 16 |
# File 'lib/solid_queue_guard/metrics/depth_emitter.rb', line 10 def emit! return unless enabled? emit_ready_gauges! emit_execution_gauges! statsd.flush if statsd.respond_to?(:flush) end |
.emit_execution_gauges! ⇒ Object
55 56 57 58 59 |
# File 'lib/solid_queue_guard/metrics/depth_emitter.rb', line 55 def emit_execution_gauges! statsd.gauge('solid_queue.failed.count', SolidQueue::FailedExecution.count) statsd.gauge('solid_queue.claimed.count', SolidQueue::ClaimedExecution.count) statsd.gauge('solid_queue.scheduled.count', SolidQueue::ScheduledExecution.count) end |
.emit_ready_ages!(oldest_by_queue) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/solid_queue_guard/metrics/depth_emitter.rb', line 47 def emit_ready_ages!(oldest_by_queue) now = Time.current oldest_by_queue.each do |queue_name, created_at| age = created_at ? [(now - created_at).to_i, 0].max : 0 statsd.gauge('solid_queue.ready.oldest_age_seconds', age, tags: ["queue:#{queue_name}"]) end end |
.emit_ready_counts!(ready_counts) ⇒ Object
41 42 43 44 45 |
# File 'lib/solid_queue_guard/metrics/depth_emitter.rb', line 41 def emit_ready_counts!(ready_counts) ready_counts.each do |queue_name, count| statsd.gauge('solid_queue.ready.count', count, tags: ["queue:#{queue_name}"]) end end |
.emit_ready_gauges! ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/solid_queue_guard/metrics/depth_emitter.rb', line 27 def emit_ready_gauges! ready_counts = SolidQueue::ReadyExecution.group(:queue_name).count oldest_by_queue = SolidQueue::ReadyExecution.group(:queue_name).minimum(:created_at) if ready_counts.empty? statsd.gauge('solid_queue.ready.count', 0) statsd.gauge('solid_queue.ready.oldest_age_seconds', 0) return end emit_ready_counts!(ready_counts) emit_ready_ages!(oldest_by_queue) end |
.enabled? ⇒ Boolean
18 19 20 21 |
# File 'lib/solid_queue_guard/metrics/depth_emitter.rb', line 18 def enabled? SolidQueueGuard.config.emit_depth_metrics && %w[production staging].include?(Rails.env.to_s) end |
.statsd ⇒ Object
23 24 25 |
# File 'lib/solid_queue_guard/metrics/depth_emitter.rb', line 23 def statsd DogstatsdClient.statsd end |