class HealthMonitor::Providers::Sidekiq

Public Instance Methods

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

Private Instance Methods

check_amount_of_retries!() click to toggle source
# File lib/health_monitor/providers/sidekiq.rb, line 101
def check_amount_of_retries!
  jobs_over_limit = ::Sidekiq::RetrySet.new.select do |job|
    job.item['retry_count'] >= configuration.maximum_amount_of_retries
  end

  return unless jobs_over_limit.any?

  raise "amount of retries for a job is greater than #{configuration.maximum_amount_of_retries}"
end
check_latency!() click to toggle source
# File lib/health_monitor/providers/sidekiq.rb, line 85
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 77
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 93
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 111
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 73
def check_workers!
  ::Sidekiq::Workers.new.size
end
configuration_class() click to toggle source
# File lib/health_monitor/providers/sidekiq.rb, line 69
def configuration_class
  ::HealthMonitor::Providers::Sidekiq::Configuration
end
queue(queue_name) click to toggle source
# File lib/health_monitor/providers/sidekiq.rb, line 119
def queue(queue_name)
  @queue ||= {}
  @queue[queue_name] ||= ::Sidekiq::Queue.new(queue_name)
end