[rabbitmq-discuss] Management API and monitoring

Jason McIntosh mcintoshj at gmail.com
Fri Oct 25 20:00:56 BST 2013

Hrmm, looking at the API's now,

   - incoming:
         - stats:
            - publish: 44,
            - publish_details:
               - rate: 0.4
         - exchange:
            - name: "phi",
            - vhost: "phi"

Is the publish details time delayed?  e.g. for the last "5 minutes" or how
is that reset?  I don't see a "published since" kinda of field that would
let me calculate a rate of incoming message flow.  I can image that's a
"transactions per minute" kinda rate, but that'll never hit 0 if the queue
received one message since the beginning of time and nothing since.

Now I did see this:

   - backing_queue_status:
      - q1: 0,
      - q2: 0,
      - delta:
         - "delta",
         - 0,
         - 0,
         - 0
      - q3: 0,
      - q4: 0,
      - len: 0,
      - pending_acks: 0,
      - target_ram_count: "infinity",
      - ram_msg_count: 0,
      - ram_ack_count: 0,
      - next_seq_id: 71,
      - persistent_count: 0,
      - avg_ingress_rate: 0,
      - avg_egress_rate: 0,
      - avg_ack_ingress_rate: 0,
      - avg_ack_egress_rate: 0,
      - mirror_seen: 0,
      - mirror_senders: 1

Is the next_seq_id used perhaps?  I COULD store the previous value and if
the value hasn't changed in 5 minutes on the monitoring side, alert on
that, assuming that that changes based upon each message received?

SO also going to release this:

This is built off of some of the other monitoring stuff I've been working
on, but focused on zabbix.  The code gives an example template that (to me)
is a pretty solid set of monitoring items for each server, auto-discovery,
and basic stuff to monitor rabbitmq using zabbix.  Eventually, I'd like to
do a more push vs. pull type system, using zabbix_sender and a background
process that regularly polls the API (perhaps even a plugin if I can learn
enough erlang) and submits data to zabbix, instead of zabbix polling the


On Fri, Oct 25, 2013 at 3:59 AM, Simon MacMullen <simon at rabbitmq.com> wrote:

> On 24/10/2013 5:48PM, Jason McIntosh wrote:
>> The question I have is on the queue - I'd like to be able to monitor
>> when the queue was last "accessed" for message publishes.
> Probably your best bet is to look at the inbound message rate from the
> mgmt API.
>  I was looking
>> at the idle_since but it looks like the date there gets reset anytime
>> you even look at the list of queues.
> That reports on the last time anything contacted the queue to wake it up -
> this would include publishing, consuming, (re)declaring, or listing it with
> rabbitmqctl (not mgmt).
>  One interesting thing I noticed while working on monitoring.
>>   rabbitmqctl does not seem like a very efficient mechanism for use by
>> monitoring tools.  I started off using ctl to get various queue and
>> server information and found that it was extremely expensive to call
>> repeatedly.  I tried using some python scripts to hit the management API
>> and my CPU load went down by about 70%.  Not sure if other people have
>> seem the same using rabbitmqctl?
> This is expected. rabbitmqctl and the management API have quite different
> designs - in brief the management API maintains a database of current stats
> for everything that's going on, based on stats events emitted by queues,
> channels and connections. On the other hand when rabbitmqctl wants to know
> something it just goes and asks the queue / channel / connection directly -
> so it's a much simpler design but not as performant.
> Cheers, Simon
> --
> Simon MacMullen
> RabbitMQ, Pivotal

Jason McIntosh
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20131025/c5909422/attachment.htm>

More information about the rabbitmq-discuss mailing list