How-to · OpenTelemetry

How to Monitor RabbitMQ with OpenTelemetry

Monitoring RabbitMQ with OpenTelemetry means collecting broker and queue metrics through the OpenTelemetry Collector's RabbitMQ receiver over OTLP, so message-queue health is observed with the rest of the stack..

Monitoring RabbitMQ with OpenTelemetry means collecting broker and queue metrics through the OpenTelemetry Collector's RabbitMQ receiver over OTLP, so message-queue health is observed with the rest of the stack.

What to observe in RabbitMQ

For RabbitMQ the critical signals are queue depth and its rate of change, message publish and delivery rates, unacknowledged messages, consumer counts, and connection and channel health. A queue that is growing means consumers cannot keep pace, and whatever depends on those messages is being delayed.

The reading that catches incidents earliest is queue depth trend against consumer count: depth climbing while consumers drop toward zero is the clearest sign that processing has stalled, well before any downstream system reports a problem.

How OpenTelemetry collects it

The Collector's rabbitmq receiver reads the RabbitMQ management API and emits node and queue metrics, message counts, publish and deliver rates, consumers and connections, over OTLP. The filelog receiver collects the broker logs, and instrumented producers and consumers add traces so you can follow a message end to end.

The prerequisite is the management plugin: enable it and give the receiver a monitoring user, since the receiver reads its metrics from that API rather than from the broker directly.

Receiver metric names follow the rabbitmq receiver's conventions and can vary by Collector version; confirm against your build.

Key metrics to watch

The signals that explain most RabbitMQ incidents:

SignalSourceWhat it tells you / watch for
rabbitmq.message.current (ready)rabbitmq receiverMessages waiting in a queue; a rising ready count is a backlog forming.
rabbitmq.message.current (unacknowledged)rabbitmq receiverMessages delivered but not acked; a pileup means consumers are receiving but not completing work.
rabbitmq.message.publishedrabbitmq receiverPublish rate; compared to delivery rate, whether the queue is filling faster than it drains.
rabbitmq.message.deliveredrabbitmq receiverDelivery rate to consumers; a drop toward zero with a full queue means consumption stalled.
rabbitmq.consumer.countrabbitmq receiverConsumers on a queue; dropping to zero leaves messages with nowhere to go.
connections / channelsrabbitmq receiverConnection and channel churn indicates unstable clients.

What to put on a dashboard

A RabbitMQ dashboard should make a backlog and its cause obvious. Row one: queue depth (ready messages) over time per queue, and publish rate versus delivery rate on the same panel so you can see filling-faster-than-draining. Row two: unacknowledged messages and consumer count per queue. Row three: connection and channel counts for client stability.

# queue backlog: ready messages climbing = consumers behind
rabbitmq.message.current{state="ready"}  by (queue)

# fill vs drain (published rate above delivered rate = growing queue)
rate(rabbitmq.message.published[5m]) - rate(rabbitmq.message.delivered[5m])

# queues with no consumers
rabbitmq.consumer.count == 0  by (queue)

Reading the signals: common failure modes

Queue backing up

Ready-message count climbs without bound because publishers are outpacing consumers, delaying everything downstream. Publish rate above delivery rate confirms it. Scale consumers, speed up per-message processing, or apply back-pressure at the publisher.

No consumers

A queue's consumer count drops to zero, so messages accumulate with nothing to process them, often after consumer instances crash or fail to reconnect. The consumer-count panel shows it immediately. Restart or fix the consumers and check why they disconnected.

Unacknowledged pileup

Unacked messages climb because consumers receive messages but never acknowledge them, usually because processing hangs or throws before the ack. Redelivery on reconnect can then cause duplicate work. Fix the consumer so it acks (or rejects) every message, and set a sensible prefetch.

Example alert conditions

Starting thresholds to tune:

ConditionSignalMeaning
queue ready messages rising for 15mbacklogConsumers cannot keep up.
consumer count = 0 for 2mconsumersA queue has no one processing it.
unacknowledged climbingconsumersConsumers receiving but not completing work.
publish rate > deliver rate for 10mthroughputQueue filling faster than it drains.

From monitoring to autonomous resolution

Ops Singularity's TelemetryOps ingests RabbitMQ telemetry over OpenTelemetry, and Sentinel AI resolves queue incidents through governed Action Tickets. Explore TelemetryOps.

Frequently asked questions

How do I monitor RabbitMQ with OpenTelemetry?

Use the OpenTelemetry Collector's rabbitmq receiver for node and queue metrics and the filelog receiver for logs, exported over OTLP.

What RabbitMQ metrics matter most?

Queue depth and growth, publish and delivery rates, unacknowledged messages, consumer counts, and connection and channel health.

See autonomous operations on your own stack.

Bring a real incident. We will show you Sentinel investigate, act and verify end to end, with every action reversible and audited.

Request a Demo → See TelemetryOps