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.
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.
- Download the collectd-rabbitmq Python module
- Download SignalFxs sample configuration file
to
/etc/collectd/managed_config
. - Modify the configuration file as described in Configuration below.
- 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:
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.deliver¶
counter
Count of messages delivered in acknowledgement mode to consumers.
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.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.deliver¶
counter
Count of messages delivered in acknowledgement mode to consumers.
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.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.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.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_details.rate¶
gauge
How much the disk free space has changed per second in the most recent sampling interval.
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_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.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.sockets_used_details.rate¶
gauge
How much the number of sockets used has changed per second in the most recent sampling interval.
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.next_seq_id¶
gauge
The next sequence ID to be used in the backing queue
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.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_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_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.