RabbitMQ streams maintain a lot of useful internal state, but that data is not exposed by core RabbitMQ in a Prometheus-friendly way.

With the plugin, you will be able to answer such questions as by looking at Prometheus metrics with Grafana:

  • Are my consumers keeping up?
  • Where exactly are we in the stream?
  • Are retention policies configured correctly and taking effect?
  • What’s happening on this specific node?

You can figure these out usually by looking at the management interface, command line, custom tooling, or indirect signals. 

This plugin makes those answers directly observable.

We can use these metrics to calculate the number of entries in the stream as well as the approximate message throughput of the stream. 

  • committed_offset — the last committed offset of the stream
  • first_offset — retention boundary, the oldest offset which is still present
  • readers — number of attached consumers and replicas

Because the plugin exposes each replica’s offsets, we can calculate how far behind the replication is. This can be useful if we suspect one node is falling behind or if the streams can not handle the load.

These are the signals you rely on to confirm the system is behaving correctly or to pinpoint issues when it isn’t.

The plugin provides per-consumer offsets, allowing you to calculate how far the consumer is lagging behind.

The plugin exposes additional metrics, such as first_timestamp, segment counts and more. Check out the docs for details.

This plugin becomes useful as soon as you need real visibility into stream behavior:

  • You want to verify consumers are not falling behind
  • You need to confirm offsets and retention are correct
  • You’re debugging uneven consumption across nodes
  • You care about node-local state, not just cluster-level views

The plugin exposes local RabbitMQ stream counters as Prometheus metrics, using a separate registry and scrape endpoint.

  • Registry: 7s_streams
  • Endpoint: /metrics/7s_streams

The important detail is that everything is node-local. You get visibility into what each node sees, which is often what matters when debugging real issues.

It also keeps stream metrics isolated from the default Prometheus output, so you can control how you scrape and store them.For installation instructions and downloads, visit the GitHub repository.

Lajos Gerecs | RabbitMQ Consultant, Seventh State

Discover more from SeventhState.io

Subscribe now to keep reading and get access to the full archive.

Continue reading