class HealthMonitor::Providers::Sidekiq

Private Class Methods

configuration_class() click to toggle source
# File lib/health_monitor/providers/sidekiq.rb, line 65
def configuration_class
  ::HealthMonitor::Providers::Sidekiq::Configuration
end

Public Instance Methods

check!() click to toggle source
# File lib/health_monitor/providers/sidekiq.rb, line 50
def check!
  check_workers!
  check_processes!
  check_latency!
  check_queue_size!
  check_redis!
rescue Exception => e
  raise SidekiqException.new(e)
end

Private Instance Methods

check_latency!() click to toggle source
# File lib/health_monitor/providers/sidekiq.rb, line 81
def check_latency!
  configuration.queues.each do |queue, config|
    latency = queue(queue).latency

    raise "queue '#{queue}': latency #{latency} is greater than #{config[:latency]}" if latency > config[:latency]
  end
end
check_processes!() click to toggle source
# File lib/health_monitor/providers/sidekiq.rb, line 74
def check_processes!
  sidekiq_stats = ::Sidekiq::Stats.new
  return unless sidekiq_stats.processes_size.zero?

  raise 'Sidekiq alive processes number is 0!'
end
check_queue_size!() click to toggle source
# File lib/health_monitor/providers/sidekiq.rb, line 89
def check_queue_size!
  configuration.queues.each do |queue, config|
    size = queue(queue).size
    raise "queue '#{queue}': size #{size} is greater than #{config[:queue_size]}" if size > config[:queue_size]
  end
end
check_redis!() click to toggle source
# File lib/health_monitor/providers/sidekiq.rb, line 96
def check_redis!
  if ::Sidekiq.respond_to?(:redis_info)
    ::Sidekiq.redis_info
  else
    ::Sidekiq.redis(&:info)
  end
end
check_workers!() click to toggle source
# File lib/health_monitor/providers/sidekiq.rb, line 70
def check_workers!
  ::Sidekiq::Workers.new.size
end
queue(queue_name) click to toggle source
# File lib/health_monitor/providers/sidekiq.rb, line 104
def queue(queue_name)
  @queue ||= {}
  @queue[queue_name] ||= ::Sidekiq::Queue.new(queue_name)
end