class QueueLength

Public Class Methods

new() click to toggle source
# File bin/queue-lengths, line 17
def initialize
  @rabbitmq = RabbitMQ::HTTP::Client.new("http://guest:guest@localhost:15672")
end

Public Instance Methods

tick() click to toggle source
# File bin/queue-lengths, line 21
def tick
  @rabbitmq.list_queues.each do |queue|
    over_limit(queue)
  end
end

Private Instance Methods

alert(queue, state, metric, description) click to toggle source
# File bin/queue-lengths, line 43
def alert(queue, state, metric, description)
  report(
    :service => normliased_queue_name(queue),
    :state => state.to_s,
    :metric => metric.to_f,
    :description => description
  )
end
limit(queue) click to toggle source
# File bin/queue-lengths, line 52
def limit(queue)
  (limits[normliased_queue_name(queue)] || limits['default'])
end
limits() click to toggle source
# File bin/queue-lengths, line 60
def limits
  @limits ||= MultiJson.load(Pathname.new(opts[:limits]))
end
normliased_queue_name(queue) click to toggle source
# File bin/queue-lengths, line 56
def normliased_queue_name(queue)
  queue.name.sub(Regexp.new("#{opts[:queue_prefix]}."), '')
end
over_limit(queue) click to toggle source
# File bin/queue-lengths, line 29
def over_limit(queue)
  alert(queue, state(queue), queue.messages, "Number of messages")
end
state(queue) click to toggle source
# File bin/queue-lengths, line 33
def state(queue)
  if queue.messages > limit(queue)['critical']
    state = :critial
  elsif queue.messages > limit(queue)['warning']
    state = :warning
  else
    state = :ok
  end
end