[rabbitmq-discuss] Fwd: Monitoring A Queue

Jason Antman jason at jasonantman.com
Tue Oct 16 18:00:30 BST 2012


I've been tasked with monitoring a queue used by two applications, which 
are considered black boxes from my point of view (App A puts messages 
into a queue, App B consumes them; I have no control over the code for 
either app). I need to measure the rate of messages (messages/second) 
moving successfully from App A to App B through the queue. We're 
concerned with both pileups in the queue (producer working normally, 
consumer halted) and lack of new messages (producer halted). The end 
result will be a Nagios check plugin, which alerts when messages/second 
throughput falls below a given level, and also produces performance data 
for graphing.

I've been examining the JSON results from the management API 
(/api/queues/vhost_name/queue_name), and have come to the following 
conclusions:

1) There are no monotonically increasing counters of the number of 
messages in to the queue and number of messages out of the queue. 
Therefore, there's no way for me to figure the rate on an arbitrary time 
scale.

2) The "messages" element in the JSON array is the number of messages 
currently sitting in the queue, not a counter of the number that have 
passed through it.

3) The API does provide backing_queue_status.avg_ingress_rate and 
backing_queue_status.avg_egress_rate. Going by Matthew's post to 
"Monitoring Message Throughput" 
(http://rabbitmq.1065348.n5.nabble.com/Monitoring-Message-Throughput-td17436.html#a17438 
<http://rabbitmq.1065348.n5.nabble.com/Monitoring-Message-Throughput-td17436.html#a17438>) 
from February, 2010, I gather that these values are averaged over 
approx. 10 seconds. I'm also assuming that ingress is *every* message 
into the queue, and egress is... *every* message grabbed from the queue, 
regardless of ACK? So even if consumers are not acking any messages, 
this rate will still show them? And I assume that means these values 
wouldn't be useful for a low-utilization, bursty queue (i.e., say, a 
30-message burst every few minutes)?

Are these correct?

It would be really helpful if someone could explain exactly what 
avg_in/egress_rate and avg_ack_in/egress_rate mean in the JSON output - 
I've done a bunch of testing with a Pika client connected to RabbitMQ 
2.8.7 on my workstation, but I can't seem to draw a clear connection 
between what my client is doing and what avg_ingress_rate and 
avg_egress_rate show in the JSON, or what the avg_ack_[in|e]gress_rate  
show, when I watch everything simultaneously.

I also found some reference to a Ticket 23 (though I don't see any links 
to the RMQ ticketing system) that dealt with monitoring, but no 
reference to any updates to it:
http://grokbase.com/t/rabbitmq/rabbitmq-discuss/10ag2hejbb/ticket-23-new-comment-monitoring-message-throughput 
<http://grokbase.com/t/rabbitmq/rabbitmq-discuss/10ag2hejbb/ticket-23-new-comment-monitoring-message-throughput>

Any guidance/advice/pointers would be greatly appreciated. I've been 
working on this monitoring for two days now, and I can't find anything 
that I'm confident is a correct solution...

Thanks,
Jason Antman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20121016/4e5f2859/attachment.htm>


More information about the rabbitmq-discuss mailing list