RabbitMQ

Supported OS Linux Windows Mac OS

Integration version5.2.0

RabbitMQ Dashboard

Overview

This check monitors RabbitMQ through the Datadog Agent. It allows you to:

  • Track queue-based stats: queue size, consumer count, unacknowledged messages, redelivered messages, and more.
  • Track node-based stats: waiting processes, used sockets, used file descriptors, and more.
  • Monitor vhosts for aliveness and number of connections.

Setup

Installation

The RabbitMQ check is included in the Datadog Agent package. No additional installation is needed on your server.

Configuration

RabbitMQ exposes metrics in two ways: the RabbitMQ Management Plugin and the RabbitMQ Prometheus Plugin. The Datadog integration supports both versions. Follow the configuration instruction in this file that pertain to the version you intend to use. The Datadog integration also comes with an out-of-the-box dashboard and monitors for each version, as labeled by the Dashboard and Monitor titles.

Prepare RabbitMQ

RabbitMQ Prometheus Plugin.

Starting with RabbitMQ v3.8, the RabbitMQ Prometheus Plugin is enabled by default.

The Prometheus plugin version of RabbitMQ requires Python 3 support by the Datadog Agent, and so can only be supported by Agent v6 or later. Please ensure your agent is updated before configuring the Prometheus plugin version of the integration.

Configure the prometheus_plugin section in your instance configuration. When using the prometheus_plugin option, settings related to the Management Plugin are ignored.

instances:
  - prometheus_plugin:
      url: http://<HOST>:15692

This enables scraping of the /metrics endpoint on one RabbitMQ node. Datadog can also collect data from the /metrics/detailed endpoint.

instances:
  - prometheus_plugin:
      url: http://<HOST>:15692
      unaggregated_endpoint: detailed?family=queue_coarse_metrics

This enables scraping of the /metrics/detailed endpoint to collect queue coarse metrics.

RabbitMQ Management Plugin.

Enable the plugin. The Agent user then needs at least the monitoring tag and these required permissions:

PermissionCommand
conf^aliveness-test$
write^amq\.default$
read.*

Create an Agent user for your default vhost with the following commands:

rabbitmqctl add_user datadog <SECRET>
rabbitmqctl set_permissions  -p / datadog "^aliveness-test$" "^amq\.default$" ".*"
rabbitmqctl set_user_tags datadog monitoring

Here, / refers to the default host. Set this to your specified virtual host name. See the RabbitMQ documentation for more information.

Host

To configure this check for an Agent running on a host:

Metric collection
  1. Edit the rabbitmq.d/conf.yaml file, in the conf.d/ folder at the root of your Agent’s configuration directory to start collecting your RabbitMQ metrics. See the sample rabbitmq.d/conf.yaml for all available configuration options.

    Note: The Agent checks all queues, vhosts, and nodes by default, but you can provide lists or regexes to limit this. See the rabbitmq.d/conf.yaml for examples.

  2. Restart the Agent.

Log collection

Available for Agent versions >6.0

  1. To modify the default log file location either set the RABBITMQ_LOGS environment variable or add the following to your RabbitMQ configuration file (/etc/rabbitmq/rabbitmq.conf):

      log.dir = /var/log/rabbit
      log.file = rabbit.log
    
  2. Collecting logs is disabled by default in the Datadog Agent, enable it in your datadog.yaml file:

    logs_enabled: true
    
  3. Edit the logs section of your rabbitmq.d/conf.yaml file to start collecting your RabbitMQ logs:

    logs:
      - type: file
        path: /var/log/rabbit/*.log
        source: rabbitmq
        service: myservice
        log_processing_rules:
          - type: multi_line
            name: logs_starts_with_equal_sign
            pattern: "="
    
  4. Restart the Agent.

Containerized

You can take advantage of Datadog’s Docker container Autodiscovery, see the auto_conf.yaml example configuration for RabbitMQ-specific settings.

For container environments such as Kubernetes, see the Autodiscovery Integration Templates for guidance on applying the parameters below.

Metric collection
ParameterValue
<INTEGRATION_NAME>rabbitmq
<INIT_CONFIG>blank or {}
<INSTANCE_CONFIG>{"prometheus_plugin": {"url": "http://%%host%%:15692"}}
Log collection

Available for Agent v6.0 or later

Collecting logs is disabled by default in the Datadog Agent. To enable it, see Kubernetes Log Collection.

ParameterValue
<LOG_CONFIG>{"source": "rabbitmq", "service": "rabbitmq", "log_processing_rules": [{"type":"multi_line","name":"logs_starts_with_equal_sign", "pattern": "="}]}

Validation

Run the Agent’s status subcommand and look for rabbitmq under the Checks section.

Data Collected

Metrics

rabbitmq.node.fd_used
(gauge)
Used file descriptors
rabbitmq.node.disk_free
(gauge)
Current free disk space
Shown as byte
rabbitmq.node.mem_used
(gauge)
Memory used in bytes
Shown as byte
rabbitmq.node.mem_limit
(gauge)
Memory usage high watermark in bytes
Shown as byte
rabbitmq.node.run_queue
(gauge)
Average number of Erlang processes waiting to run
Shown as process
rabbitmq.node.sockets_used
(gauge)
Number of file descriptors used as sockets
rabbitmq.node.partitions
(gauge)
Number of network partitions this node is seeing
rabbitmq.node.running
(gauge)
Is the node running or not
rabbitmq.node.mem_alarm
(gauge)
Does the host has memory alarm
rabbitmq.node.disk_alarm
(gauge)
Does the node have disk alarm
rabbitmq.exchange.messages.ack.count
(gauge)
Number of messages in exchanges delivered to clients and acknowledged
Shown as message
rabbitmq.exchange.messages.ack.rate
(gauge)
Rate of messages in exchanges delivered to clients and acknowledged per second
Shown as message
rabbitmq.exchange.messages.confirm.count
(gauge)
Count of messages in exchanges confirmed
Shown as message
rabbitmq.exchange.messages.confirm.rate
(gauge)
Rate of messages in exchanges confirmed per second
Shown as message
rabbitmq.exchange.messages.deliver_get.count
(gauge)
Sum of messages in exchanges delivered in acknowledgement mode to consumers, in no-acknowledgement mode to consumers, in acknowledgement mode in response to basic.get, and in no-acknowledgement mode in response to basic.get
Shown as message
rabbitmq.exchange.messages.deliver_get.rate
(gauge)
Rate per second of the sum of exchange messages delivered in acknowledgement mode to consumers, in no-acknowledgement mode to consumers, in acknowledgement mode in response to basic.get, and in no-acknowledgement mode in response to basic.get
Shown as message
rabbitmq.exchange.messages.redeliver.count
(gauge)
Count of subset of messages in exchanges in deliver_get which had the redelivered flag set
Shown as message
rabbitmq.exchange.messages.redeliver.rate
(gauge)
Rate of subset of messages in exchanges in deliver_get which had the redelivered flag set per second
Shown as message
rabbitmq.exchange.messages.return_unroutable.count
(gauge)
Count of messages in exchanges returned to publisher as unroutable
Shown as message
rabbitmq.exchange.messages.return_unroutable.rate
(gauge)
Rate of messages in exchanges returned to publisher as unroutable per second
Shown as message
rabbitmq.exchange.messages.publish.count
(gauge)
Count of messages in exchanges published
Shown as message
rabbitmq.exchange.messages.publish.rate
(gauge)
Rate of messages in exchanges published per second
Shown as message
rabbitmq.exchange.messages.publish_in.count
(gauge)
Count of messages published from channels into this exchange
Shown as message
rabbitmq.exchange.messages.publish_in.rate
(gauge)
Rate of messages published from channels into this exchange per sec
Shown as message
rabbitmq.exchange.messages.publish_out.count
(gauge)
Count of messages published from this exchange into queues
Shown as message
rabbitmq.exchange.messages.publish_out.rate
(gauge)
Rate of messages published from this exchange into queues per second
Shown as message
rabbitmq.queue.active_consumers
(gauge)
Number of active consumers, consumers that can immediately receive any messages sent to the queue
rabbitmq.queue.bindings.count
(gauge)
Number of bindings for a specific queue
rabbitmq.queue.consumers
(gauge)
Number of consumers
rabbitmq.queue.consumer_utilisation
(gauge)
The ratio of time that a queue's consumers can take new messages
Shown as fraction
rabbitmq.queue.head_message_timestamp
(gauge)
[OpenMetrics, Management CLI] Timestamp of the head message of the queue Timestamp of the first message in the queue, if any
Shown as millisecond
rabbitmq.queue.memory
(gauge)
Bytes of memory consumed by the Erlang process associated with the queue, including stack, heap, and internal structures
Shown as byte
rabbitmq.queue.messages
(gauge)
[OpenMetrics, Management CLI] Count of the total messages in the queue, which is the sum of ready and unacknowledged messages (total queue depth)
Shown as message
rabbitmq.queue.messages.rate
(gauge)
Count per second of the total messages in the queue
Shown as message
rabbitmq.queue.messages_ready
(gauge)
Number of messages ready to be delivered to clients
Shown as message
rabbitmq.queue.messages_ready.rate
(gauge)
Number per second of messages ready to be delivered to clients
Shown as message
rabbitmq.queue.message_bytes
(gauge)
Number of bytes of messages ready to be delivered to clients
Shown as message
rabbitmq.queue.messages_unacknowledged
(gauge)
Number of messages delivered to clients but not yet acknowledged
Shown as message
rabbitmq.queue.messages_unacknowledged.rate
(gauge)
Number per second of messages delivered to clients but not yet acknowledged
Shown as message
rabbitmq.queue.messages.ack.count
(gauge)
Number of messages in queues delivered to clients and acknowledged
Shown as message
rabbitmq.queue.messages.ack.rate
(gauge)
Number per second of messages delivered to clients and acknowledged
Shown as message
rabbitmq.queue.messages.deliver.count
(gauge)
Count of messages delivered in acknowledgement mode to consumers
Shown as message
rabbitmq.queue.messages.deliver.rate
(gauge)
Rate of messages delivered in acknowledgement mode to consumers
Shown as message
rabbitmq.queue.messages.deliver_get.count
(gauge)
Sum of messages in queues delivered in acknowledgement mode to consumers, in no-acknowledgement mode to consumers, in acknowledgement mode in response to basic.get, and in no-acknowledgement mode in response to basic.get.
Shown as message
rabbitmq.queue.messages.deliver_get.rate
(gauge)
Rate per second of the sum of messages in queues delivered in acknowledgement mode to consumers, in no-acknowledgement mode to consumers, in acknowledgement mode in response to basic.get, and in no-acknowledgement mode in response to basic.get.
Shown as message
rabbitmq.queue.messages.publish.count
(gauge)
Count of messages in queues published
Shown as message
rabbitmq.queue.messages.publish.rate
(gauge)
Rate per second of messages published
Shown as message
rabbitmq.queue.messages.redeliver.count
(gauge)
Count of subset of messages in queues in deliver_get which had the redelivered flag set
Shown as message
rabbitmq.queue.messages.redeliver.rate
(gauge)
Rate per second of subset of messages in deliver_get which had the redelivered flag set
Shown as message
rabbitmq.connections
(gauge)
[OpenMetrics, Management CLI] Number of current connections to a given rabbitmq vhost, tagged 'rabbitmq_vhost:' Connections currently open
Shown as connection
rabbitmq.connections.state
(gauge)
Number of connections in the specified connection state
Shown as connection
rabbitmq.overview.object_totals.connections
(gauge)
Total number of connections
Shown as connection
rabbitmq.overview.object_totals.channels
(gauge)
Total number of channels
Shown as item
rabbitmq.overview.object_totals.queues
(gauge)
Total number of queues
Shown as item
rabbitmq.overview.object_totals.consumers
(gauge)
Total number of consumers
Shown as item
rabbitmq.overview.queue_totals.messages.count
(gauge)
Total number of messages (ready plus unacknowledged)
Shown as message
rabbitmq.overview.queue_totals.messages.rate
(gauge)
Rate of number of messages (ready plus unacknowledged)
Shown as message
rabbitmq.overview.queue_totals.messages_ready.count
(gauge)
Number of messages ready for delivery
Shown as message
rabbitmq.overview.queue_totals.messages_ready.rate
(gauge)
Rate of number of messages ready for delivery
Shown as message
rabbitmq.overview.queue_totals.messages_unacknowledged.count
(gauge)
Number of unacknowledged messages
Shown as message
rabbitmq.overview.queue_totals.messages_unacknowledged.rate
(gauge)
Rate of number of unacknowledged messages
Shown as message
rabbitmq.overview.messages.ack.count
(gauge)
Number of messages delivered to clients and acknowledged
Shown as message
rabbitmq.overview.messages.ack.rate
(gauge)
Rate of messages delivered to clients and acknowledged per second
Shown as message
rabbitmq.overview.messages.confirm.count
(gauge)
Count of messages confirmed
Shown as message
rabbitmq.overview.messages.confirm.rate
(gauge)
Rate of messages confirmed per second
Shown as message
rabbitmq.overview.messages.deliver_get.count
(gauge)
Sum of messages delivered in acknowledgement mode to consumers, in no-acknowledgement mode to consumers, in acknowledgement mode in response to basic.get, and in no-acknowledgement mode in response to basic.get
Shown as message
rabbitmq.overview.messages.deliver_get.rate
(gauge)
Rate per second of the sum of messages delivered in acknowledgement mode to consumers, in no-acknowledgement mode to consumers, in acknowledgement mode in response to basic.get, and in no-acknowledgement mode in response to basic.get
Shown as message
rabbitmq.overview.messages.redeliver.count
(gauge)
Count of subset of messages in deliver_get which had the redelivered flag set
Shown as message
rabbitmq.overview.messages.redeliver.rate
(gauge)
Rate of subset of messages in deliver_get which had the redelivered flag set per second
Shown as message
rabbitmq.overview.messages.drop_unroutable.count
(gauge)
Count of messages dropped as unroutable
Shown as message
rabbitmq.overview.messages.drop_unroutable.rate
(gauge)
Rate of messages dropped as unroutable per second
Shown as message
rabbitmq.overview.messages.return_unroutable.count
(gauge)
Count of messages returned to publisher as unroutable
Shown as message
rabbitmq.overview.messages.return_unroutable.rate
(gauge)
Rate of messages returned to publisher as unroutable per second
Shown as message
rabbitmq.overview.messages.publish.count
(gauge)
Count of messages published
Shown as message
rabbitmq.overview.messages.publish.rate
(gauge)
Rate of messages published per second
Shown as message
rabbitmq.overview.messages.publish_in.count
(gauge)
Count of messages published from channels into this overview
Shown as message
rabbitmq.overview.messages.publish_in.rate
(gauge)
Rate of messages published from channels into this overview per sec
Shown as message
rabbitmq.overview.messages.publish_out.count
(gauge)
Count of messages published from this overview into queues
Shown as message
rabbitmq.overview.messages.publish_out.rate
(gauge)
Rate of messages published from this overview into queues per second
Shown as message
rabbitmq.alarms.file_descriptor_limit
(gauge)
[OpenMetrics] is 1 if file descriptor limit alarm is in effect
rabbitmq.alarms.free_disk_space.watermark
(gauge)
[OpenMetrics] is 1 if free disk space watermark alarm is in effect
rabbitmq.alarms.memory_used_watermark
(gauge)
[OpenMetrics] is 1 if VM memory watermark alarm is in effect
rabbitmq.auth_attempts.count
(count)
[OpenMetrics] Total number of authentication attempts
rabbitmq.auth_attempts.failed.count
(count)
[OpenMetrics] Total number of failed authentication attempts
rabbitmq.auth_attempts.succeeded.count
(count)
[OpenMetrics] Total number of successful authentication attempts
rabbitmq.build_info
(gauge)
[OpenMetrics] RabbitMQ & Erlang/OTP version info
rabbitmq.channel.acks_uncommitted
(gauge)
[OpenMetrics] Message acknowledgements in a transaction not yet committed
rabbitmq.channel.consumers
(gauge)
[OpenMetrics] Consumers on a channel
rabbitmq.channel.get.ack.count
(count)
[OpenMetrics] Total number of messages fetched with basic.get in manual acknowledgement mode
rabbitmq.channel.get.count
(count)
[OpenMetrics] Total number of messages fetched with basic.get in automatic acknowledgement mode
Shown as message
rabbitmq.channel.get.empty.count
(count)
[OpenMetrics] Total number of times basic.get operations fetched no message
rabbitmq.channel.messages.acked.count
(count)
[OpenMetrics] Total number of messages acknowledged by consumers
Shown as message
rabbitmq.channel.messages.confirmed.count
(count)
[OpenMetrics] Total number of messages published into an exchange and confirmed on the channel
Shown as message
rabbitmq.channel.messages.delivered.ack.count
(count)
[OpenMetrics] Total number of messages delivered to consumers in manual acknowledgement mode
Shown as message
rabbitmq.channel.messages.delivered.count
(count)
[OpenMetrics] Total number of messages delivered to consumers in automatic acknowledgement mode
Shown as message
rabbitmq.channel.messages.published.count
(count)
[OpenMetrics] Total number of messages published into an exchange on a channel
Shown as message
rabbitmq.channel.messages.redelivered.count
(count)
[OpenMetrics] Total number of messages redelivered to consumers
Shown as message
rabbitmq.channel.messages.unacked
(gauge)
[OpenMetrics] Delivered but not yet acknowledged messages
Shown as message
rabbitmq.channel.messages.uncommitted
(gauge)
[OpenMetrics] Messages received in a transaction but not yet committed
Shown as message
rabbitmq.channel.messages.unconfirmed
(gauge)
[OpenMetrics] Published but not yet confirmed messages
Shown as message
rabbitmq.channel.messages.unroutable.dropped.count
(count)
[OpenMetrics] Total number of messages published as non-mandatory into an exchange and dropped as unroutable
Shown as message
rabbitmq.channel.messages.unroutable.returned.count
(count)
[OpenMetrics] Total number of messages published as mandatory into an exchange and returned to the publisher as unroutable
Shown as message
rabbitmq.channel.prefetch
(gauge)
[OpenMetrics] Total limit of unacknowledged messages for all consumers on a channel
Shown as message
rabbitmq.channel.process_reductions.count
(count)
[OpenMetrics] Total number of channel process reductions
rabbitmq.channels.closed.count
(count)
[OpenMetrics] Total number of channels closed
rabbitmq.channels.opened.count
(count)
[OpenMetrics] Total number of channels opened
rabbitmq.channels
(gauge)
[OpenMetrics] Channels currently open
rabbitmq.cluster.vhost_status
(gauge)
[OpenMetrics] Whether a given vhost is running
rabbitmq.cluster.exchange_bindings
(gauge)
[OpenMetrics] Number of bindings for an exchange. This value is cluster-wide.
rabbitmq.cluster.exchange_name
(gauge)
[OpenMetrics] Enumerates exchanges without any additional info. This value is cluster-wide. A cheaper alternative to exchange_bindings
rabbitmq.connection.channels
(gauge)
[OpenMetrics] Channels on a connection
rabbitmq.connection.incoming_bytes.count
(count)
[OpenMetrics] Total number of bytes received on a connection
Shown as byte
rabbitmq.connection.incoming_packets.count
(count)
[OpenMetrics] Total number of packets received on a connection
Shown as packet
rabbitmq.connection.outgoing_bytes.count
(count)
[OpenMetrics] Total number of bytes sent on a connection
Shown as byte
rabbitmq.connection.outgoing_packets.count
(count)
[OpenMetrics] Total number of packets sent on a connection
Shown as packet
rabbitmq.connection.pending_packets
(gauge)
[OpenMetrics] Number of packets waiting to be sent on a connection
Shown as packet
rabbitmq.connection.process_reductions.count
(count)
[OpenMetrics] Total number of connection process reductions
rabbitmq.connections.closed.count
(count)
[OpenMetrics] Total number of connections closed or terminated
rabbitmq.connections.opened.count
(count)
[OpenMetrics] Total number of connections opened
rabbitmq.consumer_prefetch
(gauge)
[OpenMetrics] Limit of unacknowledged messages for each consumer
rabbitmq.consumers
(gauge)
[OpenMetrics] Consumers currently connected
rabbitmq.disk_space.available_bytes
(gauge)
[OpenMetrics] Disk space available in bytes
Shown as byte
rabbitmq.disk_space.available_limit_bytes
(gauge)
[OpenMetrics] Free disk space low watermark in bytes
Shown as byte
rabbitmq.erlang.gc.reclaimed_bytes.count
(count)
[OpenMetrics] Total number of bytes of memory reclaimed by Erlang garbage collector
Shown as byte
rabbitmq.erlang.gc.runs.count
(count)
[OpenMetrics] Total number of Erlang garbage collector runs
rabbitmq.erlang.mnesia.committed_transactions.count
(count)
[OpenMetrics] Number of committed transactions.
Shown as transaction
rabbitmq.erlang.mnesia.failed_transactions.count
(count)
[OpenMetrics] Number of failed (i.e. aborted) transactions.
Shown as transaction
rabbitmq.erlang.mnesia.held_locks
(gauge)
[OpenMetrics] Number of held locks.
rabbitmq.erlang.mnesia.lock_queue
(gauge)
[OpenMetrics] Number of transactions waiting for a lock.
Shown as transaction
rabbitmq.erlang.mnesia.logged_transactions.count
(count)
[OpenMetrics] Number of transactions logged.
Shown as transaction
rabbitmq.erlang.mnesia.memory_usage_bytes
(gauge)
[OpenMetrics] Total number of bytes allocated by all mnesia tables
Shown as byte
rabbitmq.erlang.mnesia.restarted_transactions.count
(count)
[OpenMetrics] Total number of transaction restarts.
Shown as transaction
rabbitmq.erlang.mnesia.tablewise_memory_usage_bytes
(gauge)
[OpenMetrics] Number of bytes allocated per mnesia table
Shown as byte
rabbitmq.erlang.mnesia.tablewise_size
(gauge)
[OpenMetrics] Number of rows present per table
rabbitmq.erlang.mnesia.transaction_coordinators
(gauge)
[OpenMetrics] Number of coordinator transactions.
Shown as transaction
rabbitmq.erlang.mnesia.transaction_participants
(gauge)
[OpenMetrics] Number of participant transactions.
Shown as transaction
rabbitmq.erlang.net.ticktime_seconds
(gauge)
[OpenMetrics] Inter-node heartbeat interval
Shown as second
rabbitmq.erlang.processes_limit
(gauge)
[OpenMetrics] Erlang processes limit
Shown as process
rabbitmq.erlang.processes_used
(gauge)
[OpenMetrics] Erlang processes used
Shown as process
rabbitmq.erlang.scheduler.context_switches.count
(count)
[OpenMetrics] Total number of Erlang scheduler context switches
rabbitmq.erlang.scheduler.run_queue
(gauge)
[OpenMetrics] Erlang scheduler run queue
rabbitmq.erlang.uptime_seconds
(gauge)
[OpenMetrics] Node uptime
Shown as second
rabbitmq.erlang.vm.allocators
(gauge)
[OpenMetrics] Allocated (carrierssize) and used (blockssize) memory for the different allocators in the VM. See erts_alloc(3).
rabbitmq.erlang.vm.atom_count
(gauge)
[OpenMetrics] The number of atom currently existing at the local node.
rabbitmq.erlang.vm.atom_limit
(gauge)
[OpenMetrics] The maximum number of simultaneously existing atom at the local node.
rabbitmq.erlang.vm.dirty_cpu_schedulers_online
(gauge)
[OpenMetrics] The number of dirty CPU scheduler threads online.
Shown as thread
rabbitmq.erlang.vm.dirty_cpu_schedulers
(gauge)
[OpenMetrics] The number of scheduler dirty CPU scheduler threads used by the emulator.
Shown as thread
rabbitmq.erlang.vm.dirty_io_schedulers
(gauge)
[OpenMetrics] The number of scheduler dirty I/O scheduler threads used by the emulator.
Shown as thread
rabbitmq.erlang.vm.dist.node_queue_size_bytes
(gauge)
[OpenMetrics] The number of bytes in the output distribution queue. This queue sits between the Erlang code and the port driver.
Shown as byte
rabbitmq.erlang.vm.dist.node_state
(gauge)
[OpenMetrics] The current state of the distribution link. The state is represented as a numerical value where pending=1',up_pending=2' and `up=3'.
rabbitmq.erlang.vm.dist.port_input_bytes
(gauge)
[OpenMetrics] The total number of bytes read from the port.
Shown as byte
rabbitmq.erlang.vm.dist.port_memory_bytes
(gauge)
[OpenMetrics] The total number of bytes allocated for this port by the runtime system. The port itself can have allocated memory that is not included.
Shown as byte
rabbitmq.erlang.vm.dist.port_output_bytes
(gauge)
[OpenMetrics] The total number of bytes written to the port.
Shown as byte
rabbitmq.erlang.vm.dist.port_queue.size_bytes
(gauge)
[OpenMetrics] The total number of bytes queued by the port using the ERTS driver queue implementation.
Shown as byte
rabbitmq.erlang.vm.dist.proc.heap_size_words
(gauge)
[OpenMetrics] The size in words of the youngest heap generation of the process. This generation includes the process stack. This information is highly implementation-dependent, and can change if the implementation changes.
rabbitmq.erlang.vm.dist.proc.memory_bytes
(gauge)
[OpenMetrics] The size in bytes of the process. This includes call stack, heap, and internal structures.
Shown as byte
rabbitmq.erlang.vm.dist.proc.message_queue_len
(gauge)
[OpenMetrics] The number of messages currently in the message queue of the process.
Shown as message
rabbitmq.erlang.vm.dist.proc.min_bin_vheap_size_words
(gauge)
[OpenMetrics] The minimum binary virtual heap size for the process.
rabbitmq.erlang.vm.dist.proc.min_heap_size_words
(gauge)
[OpenMetrics] The minimum heap size for the process.
rabbitmq.erlang.vm.dist.proc.reductions
(gauge)
[OpenMetrics] The number of reductions executed by the process.
rabbitmq.erlang.vm.dist.proc.stack_size_words
(gauge)
[OpenMetrics] The stack size, in words, of the process.
rabbitmq.erlang.vm.dist.proc.status
(gauge)
[OpenMetrics] The current status of the distribution process. The status is represented as a numerical value where exiting=1',suspended=2', runnable=3',garbage_collecting=4', running=5' andwaiting=6'.
rabbitmq.erlang.vm.dist.proc.total_heap_size_words
(gauge)
[OpenMetrics] The total size, in words, of all heap fragments of the process. This includes the process stack and any unreceived messages that are considered to be part of the heap.
rabbitmq.erlang.vm.dist.recv.avg_bytes
(gauge)
[OpenMetrics] Average size of packets, in bytes, received by the socket.
Shown as byte
rabbitmq.erlang.vm.dist.recv.cnt
(gauge)
[OpenMetrics] Number of packets received by the socket.
rabbitmq.erlang.vm.dist.recv.dvi_bytes
(gauge)
[OpenMetrics] Average packet size deviation, in bytes, received by the socket.
Shown as byte
rabbitmq.erlang.vm.dist.recv.max_bytes
(gauge)
[OpenMetrics] Size of the largest packet, in bytes, received by the socket.
Shown as byte
rabbitmq.erlang.vm.dist.recv_bytes
(gauge)
[OpenMetrics] Number of bytes received by the socket.
Shown as byte
rabbitmq.erlang.vm.dist.send.avg_bytes
(gauge)
[OpenMetrics] Average size of packets, in bytes, sent from the socket.
Shown as byte
rabbitmq.erlang.vm.dist.send.cnt
(gauge)
[OpenMetrics] Number of packets sent from the socket.
rabbitmq.erlang.vm.dist.send.max_bytes
(gauge)
[OpenMetrics] Size of the largest packet, in bytes, sent from the socket.
Shown as byte
rabbitmq.erlang.vm.dist.send.pend_bytes
(gauge)
[OpenMetrics] Number of bytes waiting to be sent by the socket.
Shown as byte
rabbitmq.erlang.vm.dist.send_bytes
(gauge)
[OpenMetrics] Number of bytes sent from the socket.
Shown as byte
rabbitmq.erlang.vm.ets_limit
(gauge)
[OpenMetrics] The maximum number of ETS tables allowed.
rabbitmq.erlang.vm.logical_processors.available
(gauge)
[OpenMetrics] The detected number of logical processors available to the Erlang runtime system.
rabbitmq.erlang.vm.logical_processors.online
(gauge)
[OpenMetrics] The detected number of logical processors online on the system.
rabbitmq.erlang.vm.logical_processors
(gauge)
[OpenMetrics] The detected number of logical processors configured in the system.
rabbitmq.erlang.vm.memory.atom_bytes_total
(gauge)
[OpenMetrics] The total amount of memory currently allocated for atoms. This memory is part of the memory presented as system memory.
Shown as byte
rabbitmq.erlang.vm.memory.bytes_total
(gauge)
[OpenMetrics] The total amount of memory currently allocated. This is the same as the sum of the memory size for processes and system.
Shown as byte
rabbitmq.erlang.vm.memory.dets_tables
(gauge)
[OpenMetrics] Erlang VM DETS Tables count.
rabbitmq.erlang.vm.memory.ets_tables
(gauge)
[OpenMetrics] Erlang VM ETS Tables count.
rabbitmq.erlang.vm.memory.processes_bytes_total
(gauge)
[OpenMetrics] The total amount of memory currently allocated for the Erlang processes.
Shown as byte
rabbitmq.erlang.vm.memory.system_bytes_total
(gauge)
[OpenMetrics] The total amount of memory currently allocated for the emulator that is not directly related to any Erlang process. Memory presented as processes is not included in this memory.
Shown as byte
rabbitmq.erlang.vm.msacc.alloc_seconds.count
(count)
[OpenMetrics] Total time in seconds spent managing memory. Without extra states this time is spread out over all other states.
Shown as second
rabbitmq.erlang.vm.msacc.aux_seconds.count
(count)
[OpenMetrics] Total time in seconds spent handling auxiliary jobs.
Shown as second
rabbitmq.erlang.vm.msacc.bif_seconds.count
(count)
[OpenMetrics] Total time in seconds spent in BIFs. Without extra states this time is part of the 'emulator' state.
Shown as second
rabbitmq.erlang.vm.msacc.busy_wait_seconds.count
(count)
[OpenMetrics] Total time in seconds spent busy waiting. Without extra states this time is part of the 'other' state.
Shown as second
rabbitmq.erlang.vm.msacc.check_io_seconds.count
(count)
[OpenMetrics] Total time in seconds spent checking for new I/O events.
Shown as second
rabbitmq.erlang.vm.msacc.emulator_seconds.count
(count)
[OpenMetrics] Total time in seconds spent executing Erlang processes.
Shown as second
rabbitmq.erlang.vm.msacc.ets_seconds.count
(count)
[OpenMetrics] Total time in seconds spent executing ETS BIFs. Without extra states this time is part of the 'emulator' state.
Shown as second
rabbitmq.erlang.vm.msacc.gc_full_seconds.count
(count)
[OpenMetrics] Total time in seconds spent doing fullsweep garbage collection. Without extra states this time is part of the 'gc' state.
Shown as second
rabbitmq.erlang.vm.msacc.gc_seconds.count
(count)
[OpenMetrics] Total time in seconds spent doing garbage collection. When extra states are enabled this is the time spent doing non-fullsweep garbage collections.
Shown as second
rabbitmq.erlang.vm.msacc.nif_seconds.count
(count)
[OpenMetrics] Total time in seconds spent in NIFs. Without extra states this time is part of the 'emulator' state.
Shown as second
rabbitmq.erlang.vm.msacc.other_seconds.count
(count)
[OpenMetrics] Total time in seconds spent doing unaccounted things.
Shown as second
rabbitmq.erlang.vm.msacc.port_seconds.count
(count)
[OpenMetrics] Total time in seconds spent executing ports.
Shown as second
rabbitmq.erlang.vm.msacc.send_seconds.count
(count)
[OpenMetrics] Total time in seconds spent sending messages (processes only). Without extra states this time is part of the 'emulator' state.
Shown as second
rabbitmq.erlang.vm.msacc.sleep_seconds.count
(count)
[OpenMetrics] Total time in seconds spent sleeping.
Shown as second
rabbitmq.erlang.vm.msacc.timers_seconds.count
(count)
[OpenMetrics] Total time in seconds spent managing timers. Without extra states this time is part of the 'other' state.
Shown as second
rabbitmq.erlang.vm.port_count
(gauge)
[OpenMetrics] The number of ports currently existing at the local node.
rabbitmq.erlang.vm.port_limit
(gauge)
[OpenMetrics] The maximum number of simultaneously existing ports at the local node.
rabbitmq.erlang.vm.process_count
(gauge)
[OpenMetrics] The number of processes currently existing at the local node.
Shown as process
rabbitmq.erlang.vm.process_limit
(gauge)
[OpenMetrics] The maximum number of simultaneously existing processes at the local node.
Shown as process
rabbitmq.erlang.vm.schedulers_online
(gauge)
[OpenMetrics] The number of schedulers online.
rabbitmq.erlang.vm.schedulers
(gauge)
[OpenMetrics] The number of scheduler threads used by the emulator.
rabbitmq.erlang.vm.smp_support
(gauge)
[OpenMetrics] 1 if the emulator has been compiled with SMP support, otherwise 0.
rabbitmq.erlang.vm.statistics.bytes_output.count
(count)
[OpenMetrics] Total number of bytes output to ports.
Shown as byte
rabbitmq.erlang.vm.statistics.bytes_received.count
(count)
[OpenMetrics] Total number of bytes received through ports.
Shown as byte
rabbitmq.erlang.vm.statistics.context_switches.count
(count)
[OpenMetrics] Total number of context switches since the system started.
rabbitmq.erlang.vm.statistics.dirty_cpu_run_queue_length
(gauge)
[OpenMetrics] Length of the dirty CPU run-queue.
rabbitmq.erlang.vm.statistics.dirty_io_run_queue_length
(gauge)
[OpenMetrics] Length of the dirty IO run-queue.
rabbitmq.erlang.vm.statistics.garbage_collection.bytes_reclaimed.count
(count)
[OpenMetrics] Garbage collection: bytes reclaimed.
Shown as byte
rabbitmq.erlang.vm.statistics.garbage_collection.number_of_gcs.count
(count)
[OpenMetrics] Garbage collection: number of GCs.
rabbitmq.erlang.vm.statistics.garbage_collection.words_reclaimed.count
(count)
[OpenMetrics] Garbage collection: words reclaimed.
rabbitmq.erlang.vm.statistics.reductions.count
(count)
[OpenMetrics] Total reductions.
rabbitmq.erlang.vm.statistics.run_queues_length
(gauge)
[OpenMetrics] Length of normal run-queues.
rabbitmq.erlang.vm.statistics.runtime_milliseconds.count
(count)
[OpenMetrics] The sum of the runtime for all threads in the Erlang runtime system. Can be greater than wall clock time.
Shown as millisecond
rabbitmq.erlang.vm.statistics.wallclock_time_milliseconds.count
(count)
[OpenMetrics] Information about wall clock. Same as erlangvmstatisticsruntimemilliseconds except that real time is measured.
Shown as millisecond
rabbitmq.erlang.vm.thread_pool_size
(gauge)
[OpenMetrics] The number of async threads in the async thread pool used for asynchronous driver calls.
rabbitmq.erlang.vm.threads
(gauge)
[OpenMetrics] 1 if the emulator has been compiled with thread support, otherwise 0.
rabbitmq.erlang.vm.time_correction
(gauge)
[OpenMetrics] 1 if time correction is enabled, otherwise 0.
rabbitmq.erlang.vm.wordsize_bytes
(gauge)
[OpenMetrics] The size of Erlang term words in bytes.
Shown as byte
rabbitmq.global.consumers
(gauge)
[OpenMetrics] Current number of consumers
rabbitmq.global.messages.acknowledged.count
(count)
[OpenMetrics] Total number of messages acknowledged by consumers
Shown as message
rabbitmq.global.messages.confirmed.count
(count)
[OpenMetrics] Total number of messages confirmed to publishers
Shown as message
rabbitmq.global.messages.dead_lettered.confirmed.count
(count)
[OpenMetrics] Total number of messages dead-lettered and confirmed by target queues
Shown as message
rabbitmq.global.messages.dead_lettered.delivery_limit.count
(count)
[OpenMetrics] Total number of messages dead-lettered due to delivery-limit exceeded
Shown as message
rabbitmq.global.messages.dead_lettered.expired.count
(count)
[OpenMetrics] Total number of messages dead-lettered due to message TTL exceeded
Shown as message
rabbitmq.global.messages.dead_lettered.maxlen.count
(count)
[OpenMetrics] Total number of messages dead-lettered due to overflow drop-head or reject-publish-dlx
Shown as message
rabbitmq.global.messages.dead_lettered.rejected.count
(count)
[OpenMetrics] Total number of messages dead-lettered due to basic.reject or basic.nack
Shown as message
rabbitmq.global.messages.delivered.consume_auto_ack.count
(count)
[OpenMetrics] Total number of messages delivered to consumers using basic.consume with automatic acknowledgment
Shown as message
rabbitmq.global.messages.delivered.consume_manual_ack.count
(count)
[OpenMetrics] Total number of messages delivered to consumers using basic.consume with manual acknowledgment
Shown as message
rabbitmq.global.messages.delivered.get_auto_ack.count
(count)
[OpenMetrics] Total number of messages delivered to consumers using basic.get with automatic acknowledgment
Shown as message
rabbitmq.global.messages.delivered.get_manual_ack.count
(count)
[OpenMetrics] Total number of messages delivered to consumers using basic.get with manual acknowledgment
Shown as message
rabbitmq.global.messages.delivered.count
(count)
[OpenMetrics] Total number of messages delivered to consumers
Shown as message
rabbitmq.global.messages.get_empty.count
(count)
[OpenMetrics] Total number of times basic.get operations fetched no message
rabbitmq.global.messages.received.count
(count)
[OpenMetrics] Total number of messages received from publishers
Shown as message
rabbitmq.global.messages.received_confirm.count
(count)
[OpenMetrics] Total number of messages received from publishers expecting confirmations
Shown as message
rabbitmq.global.messages.redelivered.count
(count)
[OpenMetrics] Total number of messages redelivered to consumers
Shown as message
rabbitmq.global.messages.routed.count
(count)
[OpenMetrics] Total number of messages routed to queues or streams
Shown as message
rabbitmq.global.messages.unroutable.dropped.count
(count)
[OpenMetrics] Total number of messages published as non-mandatory into an exchange and dropped as unroutable
Shown as message
rabbitmq.global.messages.unroutable.returned.count
(count)
[OpenMetrics] Total number of messages published as mandatory into an exchange and returned to the publisher as unroutable
Shown as message
rabbitmq.global.publishers
(gauge)
[OpenMetrics] Current number of publishers
rabbitmq.identity_info
(gauge)
[OpenMetrics] RabbitMQ node & cluster identity info
rabbitmq.io.read_bytes.count
(count)
[OpenMetrics] Total number of I/O bytes read
Shown as byte
rabbitmq.io.read_ops.count
(count)
[OpenMetrics] Total number of I/O read operations
Shown as operation
rabbitmq.io.read_time_seconds.count
(count)
[OpenMetrics] Total I/O read time
Shown as second
rabbitmq.io.reopen_ops.count
(count)
[OpenMetrics] Total number of times files have been reopened
rabbitmq.io.seek_ops.count
(count)
[OpenMetrics] Total number of I/O seek operations
Shown as operation
rabbitmq.io.seek_time_seconds.count
(count)
[OpenMetrics] Total I/O seek time
Shown as second
rabbitmq.io.sync_ops.count
(count)
[OpenMetrics] Total number of I/O sync operations
Shown as operation
rabbitmq.io.sync_time_seconds.count
(count)
[OpenMetrics] Total I/O sync time
Shown as second
rabbitmq.io.write_bytes.count
(count)
[OpenMetrics] Total number of I/O bytes written
Shown as byte
rabbitmq.io.write_ops.count
(count)
[OpenMetrics] Total number of I/O write operations
Shown as operation
rabbitmq.io.write_time_seconds.count
(count)
[OpenMetrics] Total I/O write time
Shown as second
rabbitmq.msg_store.read.count
(count)
[OpenMetrics] Total number of Message Store read operations
Shown as operation
rabbitmq.msg_store.write.count
(count)
[OpenMetrics] Total number of Message Store write operations
Shown as operation
rabbitmq.process.max_fds
(gauge)
[OpenMetrics] Open file descriptors limit
rabbitmq.process.max_tcp_sockets
(gauge)
[OpenMetrics] Open TCP sockets limit
rabbitmq.process.open_fds
(gauge)
[OpenMetrics] Open file descriptors
rabbitmq.process.open_tcp_sockets
(gauge)
[OpenMetrics] Open TCP sockets
rabbitmq.process.resident_memory_bytes
(gauge)
[OpenMetrics] Memory used in bytes
Shown as byte
rabbitmq.process_start_time_seconds
(gauge)
[OpenMetrics] Start time of the process since unix epoch in seconds.
Shown as second
rabbitmq.queue.consumer_capacity
(gauge)
[OpenMetrics] Consumer capacity
rabbitmq.queue.disk_reads.count
(count)
[OpenMetrics] Total number of times queue read messages from disk
rabbitmq.queue.disk_writes.count
(count)
[OpenMetrics] Total number of times queue wrote messages to disk
rabbitmq.queue.index.read_ops.count
(count)
[OpenMetrics] Total number of Queue Index read operations
Shown as operation
rabbitmq.queue.index.write_ops.count
(count)
[OpenMetrics] Total number of Queue Index write operations
Shown as operation
rabbitmq.queue.messages.bytes
(gauge)
[OpenMetrics] Size in bytes of ready and unacknowledged messages
Shown as byte
rabbitmq.queue.messages.paged_out_bytes
(gauge)
[OpenMetrics] Size in bytes of messages paged out to disk
Shown as byte
rabbitmq.queue.messages.paged_out
(gauge)
[OpenMetrics] Messages paged out to disk
rabbitmq.queue.messages.persistent
(gauge)
[OpenMetrics] Persistent messages
Shown as message
rabbitmq.queue.messages.persistent_bytes
(gauge)
[OpenMetrics] Size in bytes of persistent messages
Shown as byte
rabbitmq.queue.messages.published.count
(count)
[OpenMetrics] Total number of messages published to queues
Shown as message
rabbitmq.queue.messages.ram_bytes
(gauge)
[OpenMetrics] Size of ready and unacknowledged messages stored in memory
Shown as byte
rabbitmq.queue.messages.ram
(gauge)
[OpenMetrics] Ready and unacknowledged messages stored in memory
Shown as message
rabbitmq.queue.messages.ready_bytes
(gauge)
[OpenMetrics] Size in bytes of ready messages
Shown as byte
rabbitmq.queue.messages.ready_ram
(gauge)
[OpenMetrics] Ready messages stored in memory
Shown as message
rabbitmq.queue.messages.ready
(gauge)
[OpenMetrics] Messages ready to be delivered to consumers
Shown as message
rabbitmq.queue.messages.unacked_bytes
(gauge)
[OpenMetrics] Size in bytes of all unacknowledged messages
Shown as byte
rabbitmq.queue.messages.unacked_ram
(gauge)
[OpenMetrics] Unacknowledged messages stored in memory
Shown as message
rabbitmq.queue.messages.unacked
(gauge)
[OpenMetrics] Messages delivered to consumers but not yet acknowledged
Shown as message
rabbitmq.queue.process_memory_bytes
(gauge)
[OpenMetrics] Memory in bytes used by the Erlang queue process
Shown as byte
rabbitmq.queue.process_reductions.count
(count)
[OpenMetrics] Total number of queue process reductions
rabbitmq.queues.created.count
(count)
[OpenMetrics] Total number of queues created
rabbitmq.queues.declared.count
(count)
[OpenMetrics] Total number of queues declared
rabbitmq.queues.deleted.count
(count)
[OpenMetrics] Total number of queues deleted
rabbitmq.queues
(gauge)
[OpenMetrics] Queues available
rabbitmq.raft.entry_commit_latency_seconds
(gauge)
[OpenMetrics] Time taken for a log entry to be committed
Shown as second
rabbitmq.raft.log.commit_index
(gauge)
[OpenMetrics] Raft log commit index
rabbitmq.raft.log.last_applied_index
(gauge)
[OpenMetrics] Raft log last applied index
rabbitmq.raft.log.last_written_index
(gauge)
[OpenMetrics] Raft log last written index
rabbitmq.raft.log.snapshot_index
(gauge)
[OpenMetrics] Raft log snapshot index
rabbitmq.raft.term.count
(count)
[OpenMetrics] Current Raft term number
rabbitmq.resident_memory_limit_bytes
(gauge)
[OpenMetrics] Memory high watermark in bytes
Shown as byte
rabbitmq.schema.db.disk_tx.count
(count)
[OpenMetrics] Total number of Schema DB disk transactions
Shown as transaction
rabbitmq.schema.db.ram_tx.count
(count)
[OpenMetrics] Total number of Schema DB memory transactions
Shown as transaction
rabbitmq.telemetry.scrape.duration_seconds.count
(count)
[OpenMetrics] Scrape duration
Shown as second
rabbitmq.telemetry.scrape.duration_seconds.sum
(count)
[OpenMetrics] Scrape duration
Shown as second
rabbitmq.telemetry.scrape.encoded_size_bytes.count
(count)
[OpenMetrics] Scrape size, encoded
Shown as byte
rabbitmq.telemetry.scrape.encoded_size_bytes.sum
(count)
[OpenMetrics] Scrape size, encoded
Shown as byte
rabbitmq.telemetry.scrape.size_bytes.count
(count)
[OpenMetrics] Scrape size, not encoded
Shown as byte
rabbitmq.telemetry.scrape.size_bytes.sum
(count)
[OpenMetrics] Scrape size, not encoded
Shown as byte

Events

Service Checks

rabbitmq.aliveness
Only available with the RabbitMQ Management Plugin. Returns the status of a vhost based on the RabbitMQ Aliveness API. The Aliveness API creates a test queue, then publishes and consumes a message from that queue. Returns OK if the status code from the API is 200 and CRITICAL otherwise.
Statuses: ok, critical

rabbitmq.status
Only available with the RabbitMQ Management Plugin. Returns the status of the RabbitMQ server. Returns OK if the agent was able to contact the API and CRITICAL otherwise.
Statuses: ok, critical

rabbitmq.openmetrics.health
Only available with the RabbitMQ Prometheus Plugin. Returns CRITICAL if the Agent is unable to connect to the OpenMetrics endpoint, otherwise returns OK.
Statuses: ok, critical

Troubleshooting

Migrating to Prometheus Plugin

The Prometheus Plugin exposes a different set of metrics from the Management Plugin. Here is what to be aware of as you migrate from the Management to the Prometheus Plugin.

  • Look up your metrics in this table. If a metric’s description contains an [OpenMetricsV2] tag, then it is available in the Prometheus Plugin. Metrics available only in the Management Plugin do not have any tags in their descriptions.
  • Any dashboards and monitors using Management Plugin metrics do not function. Switch to the dashboards and monitors marked as OpenMetrics Version.
  • The default configuration collects aggregated metrics. This means, for example, that there are no metrics tagged by queue. Configure the option prometheus_plugin.unaggregated_endpoint to get metrics without aggregation.
  • The rabbitmq.status service check is replaced by rabbitmq.openmetrics.health. The service check rabbitmq.aliveness has no equivalent in the Prometheus Plugin.

The Prometheus Plugin changes some tags. The table below describes the changes to the more common tags.

ManagementPrometheus
queue_namequeue
rabbitmq_vhostvhost, exchange_vhost, queue_vhost
rabbitmq_exchangeexchange

For more information, see Tagging RabbitMQ queues by tag family.

Need help? Contact Datadog support.

Further Reading

Additional helpful documentation, links, and articles: