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