class Riemann::Tools::Sidekiq

Public Class Methods

new() click to toggle source
# File bin/riemann-sidekiq, line 17
def initialize
  ::Sidekiq.configure_client do |config|
    config.redis = { url: opts[:sidekiq_url], namespace: opts[:sidekiq_namespace] }
  end

  ::Sidekiq.configure_server do |config|
    config.redis = { url: opts[:sidekiq_url], namespace: opts[:sidekiq_namespace] }
  end

  @enqueued_warning = opts.fetch(:enqueued_warning)
  @enqueued_critical = opts.fetch(:enqueued_critical)
end

Public Instance Methods

tick() click to toggle source
# File bin/riemann-sidekiq, line 30
def tick
  stats = ::Sidekiq::Stats.new
  begin
    %w(processed failed workers_size enqueued scheduled_size retry_size dead_size).each do |m|
      metric = stats.send(m)

      state = if m.eql?("enqueued") && metric >= @enqueued_critical
        'critical'
      elsif m.eql?("enqueued") && metric >= @enqueued_warning
        'warning'
      else
        'ok'
      end

      report(
        service: "sidekiq #{m}",
        metric: metric,
        state: state
      )
    end

    stats.queues.each do |name, metric|
      report(
        service: "sidekiq queues #{name}",
        metric: metric
      )
    end
  rescue => e
    puts e
  end
end