Docs » Integrations Guide » Integrations Reference » RabbitMQ

image0 RabbitMQ

Metadata associated with the RabbitMQ collectd plugin can be found here. The relevant code for the plugin can be found here.

DESCRIPTION

The RabbitMQ plugin that collects statistics from RabbitMQ. The plugin uses the RabbitMQ Management HTTPAPI to poll for statistics on a RabbitMQ server, then reports them to collectd.

FEATURES

Built-in dashboards

  • RabbitMQ: Overview of data from all RabbitMQ nodes.

image1

  • RabbitMQ Node: Focus on a single RabbitMQ node.

image2

REQUIREMENTS AND DEPENDENCIES

This plugin requires:

Software Version
collectd 4.9+
Python plugin for collectd (included with SignalFx collectd agent)
Python 2.6+
RabbitMQ 3.0+
RabbitMQ Management plugin (match with RabbitMQ version)

INSTALLATION

If you are using the new Smart Agent, see the docs for thecollectd/rabbitmqmonitor for more information. The configuration documentation below may be helpful as well, but consult the Smart Agent repo’s docs for the exact schema.

  1. Download the collectd-rabbitmq Python module
  2. Download SignalFxs sample configuration file to /etc/collectd/managed_config.
  3. Modify the configuration file as described in Configuration below.
  4. Restart collectd.

CONFIGURATION

Using the example configuration file 10-rabbitmq.conf as a guide, provide values for the configuration options listed below that make sense for your environment and allow you to connect to the RabbitMQ instance to be monitored.

configuration option definition example value
Username Username that collectd will use to connect to RabbitMQ “guest”
Password Password for user indicated in Username “guest”
Host Hostname at which collectd can connect to RabbitMQ “localhost”
Port Port number at which collectd can connect to RabbitMQ “15672”
CollectChannels Toggles the collection of channels metrics false
CollectConnections Toggles the collection of connections metrics false
CollectExchanges Toggles the collection of exchanges metrics true
CollectNodes Toggles the collection of nodes metrics true
CollectQueues Toggles the collection of queues metrics true
HTTPTimeout Timeout in seconds for connecting to the RabbitMQ Management API 60
FieldLength This option should only be specified if you are not running the SignalFx fork of collectd. It should be set to 1 less than the value for DATA_MAX_NAME_LEN in plugin.h that you compiled collectd with. Typically this would be 127 for collectd versions 5.6.0 or newer, or 63 for versions earlier than 5.6.0. 63
VerbosityLevel Representation of the quantity of metrics generated by RabbitMQ that are actually reported to SignalFx. If not specified, the default value is info. The verbosity levels are as follows: info: Only the most commonly-used metrics are reported``debug``: Additonal metrics useful for debugging are reported``trace``: All available metrics are reported “info”

USAGE

Sample of built-in dashboard in SignalFx:

image3

Metric naming

When collectd is configured to publish metrics to SignalFx, metrics from this plugin will be named according to the format: <metric type>.<category>.<statistic>

For example:

  • gauge.connection.recv_oct_details.rate
  • counter.connection.send_oct
  • gauge.queue.message_stats.deliver_get_details.rate

METRICS

Below is a list of all metrics.

Metric Name Brief Type
counter.channel.message_stats.ack The number of acknowledged messages counter
counter.channel.message_stats.confirm Count of messages confirmed. counter
counter.channel.message_stats.deliver Count of messages delivered in acknowledgement mode to consumers. counter
counter.channel.message_stats.deliver_get Count of all messages delivered on the channel counter
counter.channel.message_stats.publish Count of messages published. counter
counter.connection.channel_max The maximum number of channels on the connection counter
counter.connection.recv_cnt Number of packets received on the connection counter
counter.connection.recv_oct Number of octets received on the connection counter
counter.connection.send_cnt Number of packets sent by the connection counter
counter.connection.send_oct Number of octets sent by the connection counter
counter.exchange.message_stats.confirm Count of messages confirmed. counter
counter.exchange.message_stats.publish_in Count of messages published “in” to an exchange, i.e. not taking account of routing. counter
counter.exchange.message_stats.publish_out Count of messages published “out” of an exchange, i.e. taking account of routing. counter
counter.node.io_read_bytes Total number of bytes read from disk by the persister. counter
counter.node.io_read_count Total number of read operations by the persister. counter
counter.node.mnesia_disk_tx_count Number of Mnesia transactions which have been performed that required writes to disk. counter
counter.node.mnesia_ram_tx_count Number of Mnesia transactions which have been performed that did not require writes to disk. counter
counter.queue.disk_reads Total number of times messages have been read from disk by this queue since it started. counter
counter.queue.disk_writes Total number of times messages have been written to disk by this queue since it started. counter
counter.queue.message_stats.ack Number of acknowledged messages processed by the queue counter
counter.queue.message_stats.deliver Count of messages delivered in acknowledgement mode to consumers. counter
counter.queue.message_stats.deliver_get Count of all messages delivered on the queue counter
counter.queue.message_stats.publish Count of messages published. counter
gauge.channel.connection_details.peer_port The peer port number of the channel gauge
gauge.channel.consumer_count The number of consumers the channel has gauge
gauge.channel.global_prefetch_count QoS prefetch limit for the entire channel, 0 if unlimited. gauge
gauge.channel.message_stats.ack_details.rate How much the channel message ack count has changed per second in the most recent sampling interval. gauge
gauge.channel.message_stats.confirm_details.rate How much the channel message confirm count has changed per second in the most recent sampling interval. gauge
gauge.channel.message_stats.deliver_details.rate How much the channel deliver count has changed per second in the most recent sampling interval. gauge
gauge.channel.message_stats.deliver_get_details.rate How much the channel message count has changed per second in the most recent sampling interval. gauge
gauge.channel.message_stats.publish_details.rate How much the channel message publish count has changed per second in the most recent sampling interval. gauge
gauge.channel.messages_unacknowledged Number of messages delivered via this channel but not yet acknowledged. gauge
gauge.channel.messages_uncommitted Number of messages received in an as yet uncommitted transaction. gauge
gauge.channel.messages_unconfirmed Number of published messages not yet confirmed. On channels not in confirm mode, this remains 0. gauge
gauge.channel.number The number of the channel, which uniquely identifies it within a connection. gauge
gauge.channel.prefetch_count QoS prefetch limit for new consumers, 0 if unlimited. gauge
gauge.connection.channels The current number of channels on the connection gauge
gauge.connection.connected_at The integer timestamp of the most recent time the connection was established gauge
gauge.connection.frame_max Maximum permissible size of a frame (in bytes) to negotiate with clients. gauge
gauge.connection.peer_port The peer port of the connection gauge
gauge.connection.port The port the connection is established on gauge
gauge.connection.recv_oct_details.rate How much the connection’s octets received count has changed per second in the most recent sampling interval. gauge
gauge.connection.send_oct_details.rate How much the connection’s octets sent count has changed per second in the most recent sampling interval. gauge
gauge.connection.send_pend The number of messages in the send queue of the connection gauge
gauge.connection.timeout The current timeout setting (in seconds) of the connection gauge
gauge.exchange.message_stats.confirm_details.rate How much the message confirm count has changed per second in the most recent sampling interval. gauge
gauge.exchange.message_stats.publish_in_details.rate How much the exchange publish-in count has changed per second in the most recent sampling interval. gauge
gauge.exchange.message_stats.publish_out_details.rate How much the exchange publish-out count has changed per second in the most recent sampling interval. gauge
gauge.node.disk_free Disk free space (in bytes) on the node gauge
gauge.node.disk_free_details.rate How much the disk free space has changed per second in the most recent sampling interval. gauge
gauge.node.disk_free_limit Point (in bytes) at which the disk alarm will go off. gauge
gauge.node.fd_total Total number of file descriptors available. gauge
gauge.node.fd_used Number of used file descriptors. gauge
gauge.node.fd_used_details.rate How much the number of used file descriptors has changed per second in the most recent sampling interval. gauge
gauge.node.io_read_avg_time Average wall time (milliseconds) for each disk read operation in the last statistics interval. gauge
gauge.node.io_read_avg_time_details.rate How much the I/O read average time has changed per second in the most recent sampling interval. gauge
gauge.node.io_read_bytes_details.rate How much the number of bytes read from disk has changed per second in the most recent sampling interval. gauge
gauge.node.io_read_count_details.rate How much the number of read operations has changed per second in the most recent sampling interval. gauge
gauge.node.io_sync_avg_time Average wall time (milliseconds) for each fsync() operation in the last statistics interval. gauge
gauge.node.io_sync_avg_time_details.rate How much the average I/O sync time has changed per second in the most recent sampling interval. gauge
gauge.node.io_write_avg_time Average wall time (milliseconds) for each disk write operation in the last statistics interval. gauge
gauge.node.io_write_avg_time_details.rate How much the I/O write time has changed per second in the most recent sampling interval. gauge
gauge.node.mem_limit Point (in bytes) at which the memory alarm will go off. gauge
gauge.node.mem_used Memory used in bytes. gauge
gauge.node.mem_used_details.rate How much the count has changed per second in the most recent sampling interval. gauge
gauge.node.mnesia_disk_tx_count_details.rate How much the Mnesia disk transaction count has changed per second in the most recent sampling interval. gauge
gauge.node.mnesia_ram_tx_count_details.rate How much the RAM-only Mnesia transaction count has changed per second in the most recent sampling interval. gauge
gauge.node.net_ticktime Current kernel net_ticktime setting for the node. gauge
gauge.node.proc_total The maximum number of Erlang processes that can run in an Erlang VM. gauge
gauge.node.proc_used Number of Erlang processes currently running in use. gauge
gauge.node.proc_used_details.rate How much the number of erlang processes in use has changed per second in the most recent sampling interval. gauge
gauge.node.processors Number of cores detected and usable by Erlang. gauge
gauge.node.run_queue Average number of Erlang processes waiting to run. gauge
gauge.node.sockets_total Number of file descriptors available for use as sockets. gauge
gauge.node.sockets_used Number of file descriptors used as sockets. gauge
gauge.node.sockets_used_details.rate How much the number of sockets used has changed per second in the most recent sampling interval. gauge
gauge.node.uptime Time since the Erlang VM started, in milliseconds. gauge
gauge.queue.backing_queue_status.avg_ack_egress_rate Rate at which unacknowledged message records leave RAM, e.g. because acks arrive or unacked messages are paged out gauge
gauge.queue.backing_queue_status.avg_ack_ingress_rate Rate at which unacknowledged message records enter RAM, e.g. because messages are delivered requiring acknowledgement gauge
gauge.queue.backing_queue_status.avg_egress_rate Average egress (outbound) rate, not including messages that are sent straight through to auto-acking consumers. gauge
gauge.queue.backing_queue_status.avg_ingress_rate Average ingress (inbound) rate, not including messages that are sent straight through to auto-acking consumers. gauge
gauge.queue.backing_queue_status.len Total backing queue length, in messages gauge
gauge.queue.backing_queue_status.next_seq_id The next sequence ID to be used in the backing queue gauge
gauge.queue.backing_queue_status.q1 Number of messages in backing queue q1 gauge
gauge.queue.backing_queue_status.q2 Number of messages in backing queue q2 gauge
gauge.queue.backing_queue_status.q3 Number of messages in backing queue q3 gauge
gauge.queue.backing_queue_status.q4 Number of messages in backing queue q4 gauge
gauge.queue.consumer_utilisation Fraction of the time (between 0.0 and 1.0) that the queue is able to immediately deliver messages to consumers. gauge
gauge.queue.consumers Number of consumers of the queue gauge
gauge.queue.memory Bytes of memory consumed by the Erlang process associated with the queue, including stack, heap and internal structures. gauge
gauge.queue.message_bytes Sum of the size of all message bodies in the queue. This does not include the message properties (including headers) or any overhead. gauge
gauge.queue.message_bytes_persistent Total number of persistent messages in the queue (will always be 0 for transient queues). gauge
gauge.queue.message_bytes_ram Like message_bytes but counting only those messages which are in RAM. gauge
gauge.queue.message_bytes_ready Like message_bytes but counting only those messages ready to be delivered to clients. gauge
gauge.queue.message_bytes_unacknowledged Like message_bytes but counting only those messages delivered to clients but not yet acknowledged. gauge
gauge.queue.message_stats.ack_details.rate How much the number of acknowledged messages has changed per second in the most recent sampling interval. gauge
gauge.queue.message_stats.deliver_details.rate How much the count of messages delivered has changed per second in the most recent sampling interval. gauge
gauge.queue.message_stats.deliver_get_details.rate How much the count of all messages delivered has changed per second in the most recent sampling interval. gauge
gauge.queue.message_stats.publish_details.rate How much the count of messages published has changed per second in the most recent sampling interval. gauge
gauge.queue.messages Sum of ready and unacknowledged messages (queue depth). gauge
gauge.queue.messages_details.rate How much the queue depth has changed per second in the most recent sampling interval. gauge
gauge.queue.messages_persistent Total number of persistent messages in the queue (will always be 0 for transient queues). gauge
gauge.queue.messages_ram Total number of messages which are resident in RAM. gauge
gauge.queue.messages_ready Number of messages ready to be delivered to clients. gauge
gauge.queue.messages_ready_details.rate How much the count of messages ready has changed per second in the most recent sampling interval. gauge
gauge.queue.messages_ready_ram Number of messages from messages_ready which are resident in RAM. gauge
gauge.queue.messages_unacknowledged Number of messages delivered to clients but not yet acknowledged. gauge
gauge.queue.messages_unacknowledged_details.rate How much the count of unacknowledged messages has changed per second in the most recent sampling interval. gauge
gauge.queue.messages_unacknowledged_ram Number of messages from messages_unacknowledged which are resident in RAM. gauge

counter.channel.message_stats.ack

counter

The number of acknowledged messages

counter.channel.message_stats.confirm

counter

Count of messages confirmed.

counter.channel.message_stats.deliver

counter

Count of messages delivered in acknowledgement mode to consumers.

counter.channel.message_stats.deliver_get

counter

Count of all messages delivered on the channel

counter.channel.message_stats.publish

counter

Count of messages published.

counter.connection.channel_max

counter

The maximum number of channels on the connection

counter.connection.recv_cnt

counter

Number of packets received on the connection

counter.connection.recv_oct

counter

Number of octets received on the connection

counter.connection.send_cnt

counter

Number of packets sent by the connection

counter.connection.send_oct

counter

Number of octets sent by the connection

counter.exchange.message_stats.confirm

counter

Count of messages confirmed.

counter.exchange.message_stats.publish_in

counter

Count of messages published “in” to an exchange, i.e. not taking account of routing.

counter.exchange.message_stats.publish_out

counter

Count of messages published “out” of an exchange, i.e. taking account of routing.

counter.node.io_read_bytes

counter

Total number of bytes read from disk by the persister.

counter.node.io_read_count

counter

Total number of read operations by the persister.

counter.node.mnesia_disk_tx_count

counter

Number of Mnesia transactions which have been performed that required writes to disk. (e.g. creating a durable queue). Only transactions which originated on this node are included.

counter.node.mnesia_ram_tx_count

counter

Number of Mnesia transactions which have been performed that did not require writes to disk. (e.g. creating a transient queue). Only transactions which originated on this node are included.

counter.queue.disk_reads

counter

Total number of times messages have been read from disk by this queue since it started.

counter.queue.disk_writes

counter

Total number of times messages have been written to disk by this queue since it started.

counter.queue.message_stats.ack

counter

Number of acknowledged messages processed by the queue

counter.queue.message_stats.deliver

counter

Count of messages delivered in acknowledgement mode to consumers.

counter.queue.message_stats.deliver_get

counter

Count of all messages delivered on the queue

counter.queue.message_stats.publish

counter

Count of messages published.

gauge.channel.connection_details.peer_port

gauge

The peer port number of the channel

gauge.channel.consumer_count

gauge

The number of consumers the channel has

gauge.channel.global_prefetch_count

gauge

QoS prefetch limit for the entire channel, 0 if unlimited.

gauge.channel.message_stats.ack_details.rate

gauge

How much the channel message ack count has changed per second in the most recent sampling interval.

gauge.channel.message_stats.confirm_details.rate

gauge

How much the channel message confirm count has changed per second in the most recent sampling interval.

gauge.channel.message_stats.deliver_details.rate

gauge

How much the channel deliver count has changed per second in the most recent sampling interval.

gauge.channel.message_stats.deliver_get_details.rate

gauge

How much the channel message count has changed per second in the most recent sampling interval.

gauge.channel.message_stats.publish_details.rate

gauge

How much the channel message publish count has changed per second in the most recent sampling interval.

gauge.channel.messages_unacknowledged

gauge

Number of messages delivered via this channel but not yet acknowledged.

gauge.channel.messages_uncommitted

gauge

Number of messages received in an as yet uncommitted transaction.

gauge.channel.messages_unconfirmed

gauge

Number of published messages not yet confirmed. On channels not in confirm mode, this remains 0.

gauge.channel.number

gauge

The number of the channel, which uniquely identifies it within a connection.

gauge.channel.prefetch_count

gauge

QoS prefetch limit for new consumers, 0 if unlimited.

gauge.connection.channels

gauge

The current number of channels on the connection

gauge.connection.connected_at

gauge

The integer timestamp of the most recent time the connection was established

gauge.connection.frame_max

gauge

Maximum permissible size of a frame (in bytes) to negotiate with clients.

gauge.connection.peer_port

gauge

The peer port of the connection

gauge.connection.port

gauge

The port the connection is established on

gauge.connection.recv_oct_details.rate

gauge

How much the connection’s octets received count has changed per second in the most recent sampling interval.

gauge.connection.send_oct_details.rate

gauge

How much the connection’s octets sent count has changed per second in the most recent sampling interval.

gauge.connection.send_pend

gauge

The number of messages in the send queue of the connection

gauge.connection.timeout

gauge

The current timeout setting (in seconds) of the connection

gauge.exchange.message_stats.confirm_details.rate

gauge

How much the message confirm count has changed per second in the most recent sampling interval.

gauge.exchange.message_stats.publish_in_details.rate

gauge

How much the exchange publish-in count has changed per second in the most recent sampling interval.

gauge.exchange.message_stats.publish_out_details.rate

gauge

How much the exchange publish-out count has changed per second in the most recent sampling interval.

gauge.node.disk_free

gauge

Disk free space (in bytes) on the node

gauge.node.disk_free_details.rate

gauge

How much the disk free space has changed per second in the most recent sampling interval.

gauge.node.disk_free_limit

gauge

Point (in bytes) at which the disk alarm will go off.

gauge.node.fd_total

gauge

Total number of file descriptors available.

gauge.node.fd_used

gauge

Number of used file descriptors.

gauge.node.fd_used_details.rate

gauge

How much the number of used file descriptors has changed per second in the most recent sampling interval.

gauge.node.io_read_avg_time

gauge

Average wall time (milliseconds) for each disk read operation in the last statistics interval.

gauge.node.io_read_avg_time_details.rate

gauge

How much the I/O read average time has changed per second in the most recent sampling interval.

gauge.node.io_read_bytes_details.rate

gauge

How much the number of bytes read from disk has changed per second in the most recent sampling interval.

gauge.node.io_read_count_details.rate

gauge

How much the number of read operations has changed per second in the most recent sampling interval.

gauge.node.io_sync_avg_time

gauge

Average wall time (milliseconds) for each fsync() operation in the last statistics interval.

gauge.node.io_sync_avg_time_details.rate

gauge

How much the average I/O sync time has changed per second in the most recent sampling interval.

gauge.node.io_write_avg_time

gauge

Average wall time (milliseconds) for each disk write operation in the last statistics interval.

gauge.node.io_write_avg_time_details.rate

gauge

How much the I/O write time has changed per second in the most recent sampling interval.

gauge.node.mem_limit

gauge

Point (in bytes) at which the memory alarm will go off.

gauge.node.mem_used

gauge

Memory used in bytes.

gauge.node.mem_used_details.rate

gauge

How much the count has changed per second in the most recent sampling interval.

gauge.node.mnesia_disk_tx_count_details.rate

gauge

How much the Mnesia disk transaction count has changed per second in the most recent sampling interval.

gauge.node.mnesia_ram_tx_count_details.rate

gauge

How much the RAM-only Mnesia transaction count has changed per second in the most recent sampling interval.

gauge.node.net_ticktime

gauge

Current kernel net_ticktime setting for the node.

gauge.node.proc_total

gauge

The maximum number of Erlang processes that can run in an Erlang VM.

gauge.node.proc_used

gauge

Number of Erlang processes currently running in use.

gauge.node.proc_used_details.rate

gauge

How much the number of erlang processes in use has changed per second in the most recent sampling interval.

gauge.node.processors

gauge

Number of cores detected and usable by Erlang.

gauge.node.run_queue

gauge

Average number of Erlang processes waiting to run.

gauge.node.sockets_total

gauge

Number of file descriptors available for use as sockets.

gauge.node.sockets_used

gauge

Number of file descriptors used as sockets.

gauge.node.sockets_used_details.rate

gauge

How much the number of sockets used has changed per second in the most recent sampling interval.

gauge.node.uptime

gauge

Time since the Erlang VM started, in milliseconds.

gauge.queue.backing_queue_status.avg_ack_egress_rate

gauge

Rate at which unacknowledged message records leave RAM, e.g. because acks arrive or unacked messages are paged out

gauge.queue.backing_queue_status.avg_ack_ingress_rate

gauge

Rate at which unacknowledged message records enter RAM, e.g. because messages are delivered requiring acknowledgement

gauge.queue.backing_queue_status.avg_egress_rate

gauge

Average egress (outbound) rate, not including messages that are sent straight through to auto-acking consumers.

gauge.queue.backing_queue_status.avg_ingress_rate

gauge

Average ingress (inbound) rate, not including messages that are sent straight through to auto-acking consumers.

gauge.queue.backing_queue_status.len

gauge

Total backing queue length, in messages

gauge.queue.backing_queue_status.next_seq_id

gauge

The next sequence ID to be used in the backing queue

gauge.queue.backing_queue_status.q1

gauge

Number of messages in backing queue q1

gauge.queue.backing_queue_status.q2

gauge

Number of messages in backing queue q2

gauge.queue.backing_queue_status.q3

gauge

Number of messages in backing queue q3

gauge.queue.backing_queue_status.q4

gauge

Number of messages in backing queue q4

gauge.queue.consumer_utilisation

gauge

Fraction of the time (between 0.0 and 1.0) that the queue is able to immediately deliver messages to consumers. This can be less than 1.0 if consumers are limited by network congestion or prefetch count.

gauge.queue.consumers

gauge

Number of consumers of the queue

gauge.queue.memory

gauge

Bytes of memory consumed by the Erlang process associated with the queue, including stack, heap and internal structures.

gauge.queue.message_bytes

gauge

Sum of the size of all message bodies in the queue. This does not include the message properties (including headers) or any overhead.

gauge.queue.message_bytes_persistent

gauge

Total number of persistent messages in the queue (will always be 0 for transient queues).

gauge.queue.message_bytes_ram

gauge

Like message_bytes but counting only those messages which are in RAM.

gauge.queue.message_bytes_ready

gauge

Like message_bytes but counting only those messages ready to be delivered to clients.

gauge.queue.message_bytes_unacknowledged

gauge

Like message_bytes but counting only those messages delivered to clients but not yet acknowledged.

gauge.queue.message_stats.ack_details.rate

gauge

How much the number of acknowledged messages has changed per second in the most recent sampling interval.

gauge.queue.message_stats.deliver_details.rate

gauge

How much the count of messages delivered has changed per second in the most recent sampling interval.

gauge.queue.message_stats.deliver_get_details.rate

gauge

How much the count of all messages delivered has changed per second in the most recent sampling interval.

gauge.queue.message_stats.publish_details.rate

gauge

How much the count of messages published has changed per second in the most recent sampling interval.

gauge.queue.messages

gauge

Sum of ready and unacknowledged messages (queue depth).

gauge.queue.messages_details.rate

gauge

How much the queue depth has changed per second in the most recent sampling interval.

gauge.queue.messages_persistent

gauge

Total number of persistent messages in the queue (will always be 0 for transient queues).

gauge.queue.messages_ram

gauge

Total number of messages which are resident in RAM.

gauge.queue.messages_ready

gauge

Number of messages ready to be delivered to clients.

gauge.queue.messages_ready_details.rate

gauge

How much the count of messages ready has changed per second in the most recent sampling interval.

gauge.queue.messages_ready_ram

gauge

Number of messages from messages_ready which are resident in RAM.

gauge.queue.messages_unacknowledged

gauge

Number of messages delivered to clients but not yet acknowledged.

gauge.queue.messages_unacknowledged_details.rate

gauge

How much the count of unacknowledged messages has changed per second in the most recent sampling interval.

gauge.queue.messages_unacknowledged_ram

gauge

Number of messages from messages_unacknowledged which are resident in RAM.