module Sidekiq::QueueMetrics

Constants

VERSION

Public Class Methods

failed_jobs(queue) click to toggle source
# File lib/sidekiq_queue_metrics/queue_metrics.rb, line 51
def failed_jobs(queue)
  Storage.failed_jobs(queue).reverse
end
fetch() click to toggle source
# File lib/sidekiq_queue_metrics/queue_metrics.rb, line 7
def fetch
  queues = []
  enqueued_jobs = scheduled_jobs = retry_stats = {}

  together do
    async do
      queues = Sidekiq::Queue.all.map(&:name).map(&:to_s)
      queues.each {|queue| enqueued_jobs[queue] = fetch_enqueued_jobs(queue)}
    end

    async {retry_stats = fetch_retry_stats}
    async {scheduled_jobs = fetch_scheduled_stats}
  end

  queues.reduce({}) do |stats, queue|
    stats[queue] = {
      'enqueued' => val_or_default(enqueued_jobs[queue]),
      'in_retry' => val_or_default(retry_stats[queue]),
      'scheduled' => val_or_default(scheduled_jobs[queue])
    }.merge(fetch_success_and_failed_stats(queue))

    stats
  end
end
fetch_enqueued_jobs(queue) click to toggle source
# File lib/sidekiq_queue_metrics/queue_metrics.rb, line 39
def fetch_enqueued_jobs(queue)
  Sidekiq::Queue.new(queue).size
end
fetch_retry_stats() click to toggle source
# File lib/sidekiq_queue_metrics/queue_metrics.rb, line 43
def fetch_retry_stats
  Sidekiq::RetrySet.new.group_by(&:queue).map {|queue, jobs| [queue, jobs.count]}.to_h
end
fetch_scheduled_stats() click to toggle source
# File lib/sidekiq_queue_metrics/queue_metrics.rb, line 47
def fetch_scheduled_stats
  Sidekiq::ScheduledSet.new.group_by(&:queue).map {|queue, jobs| [queue, jobs.count]}.to_h
end
fetch_success_and_failed_stats(queue) click to toggle source
# File lib/sidekiq_queue_metrics/queue_metrics.rb, line 32
def fetch_success_and_failed_stats(queue)
  default_metric_values = { 'processed' => 0, 'failed' => 0 }
  default_metric_values.merge(
    Sidekiq::QueueMetrics::Storage.get_stats(queue)
  )
end
init(config) click to toggle source
# File lib/sidekiq_queue_metrics/configuration.rb, line 6
def self.init(config)
  config.server_middleware do |chain|
    chain.add Sidekiq::QueueMetrics::JobSuccessMonitor
  end

  config.on(:startup) { UpgradeManager.upgrade_if_needed }

  if support_death_handlers?
    config.death_handlers << Sidekiq::QueueMetrics::JobDeathMonitor.proc
  else
    config.server_middleware do |chain|
      chain.add Sidekiq::QueueMetrics::JobDeathMiddleware
    end
  end
end
max_recently_failed_jobs() click to toggle source
# File lib/sidekiq_queue_metrics/configuration.rb, line 30
def self.max_recently_failed_jobs
  @max_recently_failed_jobs || 50
end
max_recently_failed_jobs=(count) click to toggle source
# File lib/sidekiq_queue_metrics/configuration.rb, line 26
def self.max_recently_failed_jobs=(count)
  @max_recently_failed_jobs = count
end
storage_location() click to toggle source
# File lib/sidekiq_queue_metrics/configuration.rb, line 34
def self.storage_location
  @storage_location
end
storage_location=(key) click to toggle source
# File lib/sidekiq_queue_metrics/configuration.rb, line 22
def self.storage_location=(key)
  @storage_location = key
end
support_death_handlers?() click to toggle source
# File lib/sidekiq_queue_metrics/configuration.rb, line 2
def self.support_death_handlers?
  Sidekiq::VERSION >= '5.1'
end

Private Class Methods

val_or_default(val, default = 0) click to toggle source
# File lib/sidekiq_queue_metrics/queue_metrics.rb, line 55
        def val_or_default(val, default = 0)
  val || default
end