On this page
What to alert on, and what to leave on a dashboard
Alert on the eight signals below. Everything else is context you look at once an alert has already fired.
| Signal | Why it leads | Alert on |
|---|---|---|
| Queue depth trend | Absolute depth is meaningless; sustained growth is not | Growth over a rolling window, not a fixed count |
| Unacked messages | Rises before a queue visibly stalls | Sustained growth with consumers connected |
| Consumer count | Zero consumers on a live queue is silent | Consumers below expected, per queue |
| Memory watermark | Publishers block the moment it trips | Approaching the watermark, not reaching it |
| Disk free | Same block, slower to recover | Approaching the threshold |
| Connection and channel count | Churn exhausts descriptors quietly | Trend upward, plus absolute ceiling |
| Quorum member health | A queue with a lost majority stops writing | Any member unavailable |
| Node and partition state | Partitions are invisible from the application | Immediately, always |
Collect with the Prometheus plugin, not by polling the management API
The built-in rabbitmq_prometheus plugin exposes cluster metrics on 15692 in a form built for scraping. Teams that poll the management HTTP API instead end up adding measurable load to the broker they are trying to observe, particularly on clusters with many queues, where the API aggregates on request.
Enable the plugin, scrape it on a normal interval, and keep enough retention to see a week-over-week trend. Most useful alerts compare now against an hour ago, so a monitoring stack with only current values cannot express them.
Alert on how fast a queue is growing, not how deep it is
A queue holding fifty thousand messages is normal for a batch workload and an emergency for a request-reply one, so an alert on absolute depth either pages constantly or never. What matters is publish rate exceeding consume rate for long enough that the backlog will not clear on its own.
Alert on sustained growth over a rolling window, per queue, with the window matched to how bursty the workload is. Keep absolute depth on the dashboard for context during the incident.
Watch unacknowledged messages as the early stall signal
Unacked climbing while consumers stay connected is the clearest early warning RabbitMQ gives: consumers are taking messages and not finishing them. It appears well before the queue looks stuck, and it is the metric that distinguishes a slow consumer from an absent one.
Alert on sustained unacked growth, and pair it with per-consumer prefetch, because an unbounded prefetch lets a single consumer hold a large backlog in flight and turns its crash into a redelivery storm.
Alert when a queue has fewer consumers than it should
A queue with zero consumers produces no errors. Publishers keep succeeding, depth grows slowly, and nothing surfaces until the backlog is large or a TTL starts discarding messages. Deployments that fail to reconnect are the usual cause, and they fail silently.
Record the expected consumer count per queue and alert on any queue below it. This is one of the few RabbitMQ alerts worth having as an absolute threshold rather than a trend.
Catch memory and disk alarms on approach, not on arrival
When RabbitMQ crosses its memory high watermark or its free disk threshold, it blocks publishers cluster-wide. By the time the alarm fires, the outage has already started, so an alert on the alarm itself is a notification rather than a warning.
Alert on approach instead, at a margin that leaves time to act, and treat repeated approaches as a sizing finding rather than an operational one. On virtualised infrastructure watch CPU steal and disk await alongside, because contention produces the same symptoms without the same cause.
Trend connections and channels to catch client-side leaks
Connection and channel counts that climb steadily are a client-side defect, not a broker one: an application opening a connection per message, or failing to close channels. The symptom presents as a RabbitMQ memory leak, and the fix is almost always in the application.
Trend both counts plus file descriptors and Erlang processes, alert on the trend and on an absolute ceiling below the configured limits, and use the connection metadata to identify which client is responsible before the descriptors run out.
Monitor quorum membership and node state directly
A quorum queue that has lost its majority stops accepting writes by design, and a network partition can leave the cluster in a state no single node reports as unhealthy. Neither is visible from the application until publishes start failing.
Alert on any quorum member unavailable, on node-down, and on partition state, with no delay and no threshold. These are the RabbitMQ alerts that should always page.
On Kubernetes, add the signals the scheduler introduces
Running on Kubernetes adds failure modes the broker metrics do not cover: pod eviction, node drain without a graceful RabbitMQ shutdown, storage class latency, and memory limits set below what the node needs under load. A cluster can look healthy in RabbitMQ's own metrics while the scheduler is removing it underneath.
Monitor pod restarts, eviction events and persistent volume latency alongside the broker metrics, and make sure a node drain triggers a graceful broker shutdown rather than an eviction.
Decide who reads the alert at three in the morning
Monitoring produces an alert; someone has to act on it. Estates that get this far and still have long incidents usually have alerts routing to a channel nobody is paged from, or to an engineer who owns the application rather than the broker.
Route the eight paging signals into whatever your team already wakes up for, keep everything else on a dashboard, and confirm the on-call path with a test alert rather than assuming it. Where there is no in-house RabbitMQ on-call, that is the gap a support contract fills.
Frequently asked questions
What should you monitor on RabbitMQ?
Queue depth as a rate of change, unacknowledged messages, consumer count per queue, memory and disk headroom against the watermarks, connection and channel counts with file descriptors, quorum member availability, node and partition state, and on Kubernetes the pod, eviction and volume-latency signals. Collect via the rabbitmq_prometheus plugin rather than polling the management API.
What RabbitMQ metrics should actually page someone?
Node down, network partition, any quorum member unavailable, memory or disk approaching the watermark, sustained queue growth that will not clear, sustained unacked growth with consumers connected, and a queue below its expected consumer count. Everything else belongs on a dashboard and is read after an alert has fired.
Should I alert on RabbitMQ queue depth?
Not on an absolute number. Depth that is normal for a batch workload is an emergency for request-reply, so a fixed threshold either pages constantly or never fires. Alert on sustained growth over a rolling window per queue, and keep absolute depth on the dashboard for context.
Why does RabbitMQ block publishers with no error in the application?
The cluster has crossed its memory high watermark or its free disk threshold and is applying flow control, which blocks publishers cluster-wide until the alarm clears. Alerting on approach to those thresholds rather than on the alarm itself is what turns it into a warning instead of an outage notification.
Is the RabbitMQ management plugin enough for production monitoring?
It is fine for inspection and ad-hoc diagnosis, but polling its HTTP API for metrics adds load to the broker, noticeably so on clusters with many queues. Use the rabbitmq_prometheus plugin for collection and keep the management UI for looking at a specific queue during an incident.
Related
Where this gets done
The work behind this page, run by the same engineers who wrote it.
- 24/7 RabbitMQ support15-minute emergency SLA, versions back to 3.8.x
- Managed RabbitMQ servicesWe run the brokers, on your infrastructure or hosted
- RabbitMQ consultingArchitecture, migration and remediation from senior engineers
- RabbitMQ health checkEngineer-led assessment with a prioritised fix list
- Extended LTS support for RabbitMQ 3.xCVE backports for versions the community no longer patches
- RabbitMQ commercial licensingTanzu RabbitMQ licences from an authorized Broadcom partner
- RabbitMQ troubleshootingLive incidents and recurring faults
- RabbitMQ upgrades3.x to 4.x, planned and executed in your window
- RabbitMQ migrationsFrom IBM MQ, Kafka, cloud brokers or older RabbitMQ
- RabbitMQ implementation and architectureCluster design, DR and go-live
- RabbitMQ corporate trainingAdmin and developer courses taught by working engineers
Other RabbitMQ guides, comparisons and research
Recent RabbitMQ articles
- Upgrading RabbitMQ 3.x to 4.x Without DowntimeSep 2026
- RabbitMQ HA & Disaster Recovery: Cluster SizingSep 2026
- What a RabbitMQ Health Check Actually DeliversSep 2026
- VMware Licensing Cost in 2026Sep 2026
- RabbitMQ Federation vs Shovel for Disaster RecoverySep 2026
- RabbitMQ Exchanges, Queues & Bindings for MicroservicesSep 2026
Need this done on your cluster?
AceMQ's senior RabbitMQ engineers support 130+ enterprise clients in 26+ countries under a 15-minute emergency SLA, with direct escalation to the RabbitMQ core team.