class Bipbip::Plugin::Resque

Public Instance Methods

metrics_schema() click to toggle source
# File lib/bipbip/plugin/resque.rb, line 6
def metrics_schema
  schema_list = [
    { name: 'num_workers', type: 'counter', unit: 'Workers' },
    { name: 'num_idle_workers', type: 'counter', unit: 'Workers' },
    { name: 'num_active_workers', type: 'counter', unit: 'Workers' },
    { name: 'num_failures', type: 'counter', unit: 'Jobs' }
  ]

  with_resque_connection do
    ::Resque.queues.each do |queue|
      schema_list << { name: "queue_size_#{sanitize_queue_name(queue)}", type: 'gauge', unit: 'Jobs' }
    end
  end

  schema_list
end
monitor() click to toggle source
# File lib/bipbip/plugin/resque.rb, line 41
def monitor
  data = {}
  with_resque_connection do
    data['num_workers'] = ::Resque.workers.count
    data['num_idle_workers'] = ::Resque.workers.count(&:idle?)
    data['num_active_workers'] = data['num_workers'] - data['num_idle_workers']
    data['num_failures'] = ::Resque::Failure.count
    ::Resque.queues.each do |queue|
      data["queue_size_#{sanitize_queue_name(queue)}"] = ::Resque.size(queue).to_i
    end
  end
  data
end
sanitize_queue_name(queue) click to toggle source
# File lib/bipbip/plugin/resque.rb, line 23
def sanitize_queue_name(queue)
  queue.gsub(/\s/, '-')
end
with_resque_connection() { || ... } click to toggle source
# File lib/bipbip/plugin/resque.rb, line 27
def with_resque_connection
  redis = ::Redis.new(
    host: config['hostname'] || 'localhost',
    port: config['port'] || 6369
  )
  redis.select config['database']
  ::Resque.redis = redis
  ::Resque.redis.namespace = config['namespace'] unless config['namespace'].nil?

  yield

  redis.quit
end