class SidekiqMonitoring::Global
Attributes
elapsed_thresholds[RW]
latency_thresholds[RW]
queue_size_thresholds[RW]
Public Class Methods
new(queue_size_thresholds = nil, latency_thresholds = nil, elapsed_thresholds = nil)
click to toggle source
# File lib/sidekiq-monitoring.rb, line 155 def initialize(queue_size_thresholds = nil, latency_thresholds = nil, elapsed_thresholds = nil) @queue_size_thresholds = queue_size_thresholds || {} @latency_thresholds = latency_thresholds || {} @elapsed_thresholds = elapsed_thresholds || {} end
Public Instance Methods
as_json(options = {})
click to toggle source
# File lib/sidekiq-monitoring.rb, line 141 def as_json(options = {}) { 'global_status' => global_status, 'queues' => queues.select { |q| q.size > 0 }.sort_by(&:criticality).reverse!.map!(&:as_json), 'workers' => workers.sort_by(&:criticality).reverse!.map!(&:as_json), } end
global_status()
click to toggle source
# File lib/sidekiq-monitoring.rb, line 149 def global_status queue_status = (queues.sort.last && queues.sort.last.status) || 'UNKNOWN' worker_status = (workers.sort.last && workers.sort.last.status) || 'UNKNOWN' @global_status ||= (worker_status != 'UNKNOWN' && criticality(worker_status) > criticality(queue_status)) ? worker_status : queue_status end
queues()
click to toggle source
# File lib/sidekiq-monitoring.rb, line 161 def queues @queues ||= Sidekiq::Queue.all.map do |queue| Queue.new(queue.name, queue.size, queue.latency, queue_size_thresholds[queue.name], latency_thresholds[queue.name]) end end
workers()
click to toggle source
# File lib/sidekiq-monitoring.rb, line 167 def workers @workers ||= Sidekiq::Workers.new.map do |process_id, thread_id, work| payload = work['payload'] Worker.new(process_id, payload['jid'], work['run_at'], work['queue'], payload['class'], elapsed_thresholds[work['queue']]) end end