Guide · RabbitMQ

RabbitMQ Environment Documentation Template: the One-Sheet

A RabbitMQ environment one-sheet is a single page, 52 fields across eight sections, that lets an engineer who has never seen your cluster reason about it before the first incident rather than during one. Each field below has an example of the detail wanted and the command or place to get it. Fill in one sheet per cluster.

Scott Sternloff

By Scott Sternloff, Senior Enterprise Architect

LinkedIn · Updated · 10 min read · 13 sections

On this page
What to put on the sheet

What to put on the sheet

Fill in eight sections: identity, versions, topology, configuration, security, clients, message flows and operations. The fields that matter most in an incident are the exact RabbitMQ and Erlang versions, the metadata store (Khepri, or Mnesia on 4.2 and earlier), queue types in use, plugins and policies, client libraries with prefetch and heartbeat, and who is on call. Record shapes and locations, never secrets.

Checked against rabbitmq.com on 29 October 2026. RabbitMQ 4.4 is current; the previous series is 4.3.

What the one-sheet is for, and where it came from

The one-sheet exists so that the first incident on a cluster is not also the first time anyone has looked at it. For the long-form version of what a healthy production cluster looks like, use the production readiness checklist; this page is only the record of what your cluster actually is.

The format is adapted from a one-page environment document that a customer kept in their own wiki, headed with its purpose: to level-set when working with AceMQ Support. It answered most of the questions we would otherwise ask over the first few tickets, which is why we generalised it. When we take over support of a cluster we did not build, onboarding starts with a health check that establishes the same facts: version, topology, queue types, known faults and patch position.

Collect the facts with these commands first

Run these on a node, as the RabbitMQ user, and paste the output into your working copy; most of the sheet is then a transcription exercise. Every command below is in the RabbitMQ CLI documentation.

rabbitmq-diagnostics server_version
rabbitmq-diagnostics erlang_version
rabbitmq-diagnostics status
rabbitmq-diagnostics environment
rabbitmq-diagnostics cluster_status
rabbitmq-diagnostics listeners
rabbitmq-diagnostics check_certificate_expiration
rabbitmq-diagnostics list_deprecated_features
rabbitmq-plugins list
rabbitmqctl list_feature_flags
rabbitmqctl list_vhosts name description tags default_queue_type
rabbitmqctl list_policies
rabbitmqctl list_operator_policies
rabbitmqctl list_queues name type messages
rabbitmqctl export_definitions /path/to/definitions.json

The definitions export contains users and permissions, so store it as a secret, and read the environment output before pasting it, because the effective configuration can include credentials. On large estates list_queues can be slow; run it with a limited column set, as above.

Identity: so a ticket can be matched to a cluster without asking

Record who owns the cluster and what breaks when it stops, because that decides how fast anyone has to move.

Identity fields
FieldExample of the detail wantedHow to get itYours
Environment nameprod-eu, uat, drYour own naming
Business purposeOrder events for the payments platformAsk the owning team
Owning team and on-call rotaPlatform Engineering, the pager schedule named 'messaging'Your on-call tool
Blast radius if it stopsCheckout halts and N orders per hour queue upAsk the application owners
Table · Identity fields. Scroll sideways on small screens.

Versions: the first thing anyone asks, and the field most often out of date

Record exact versions from the running nodes, not from the install ticket, and compare them with the support matrix.

Versions fields
FieldExample of the detail wantedHow to get itYours
RabbitMQ version4.3.6 (or 3.13.7 on an estate that has not upgraded)rabbitmq-diagnostics server_version
Erlang/OTP version28.x for 4.3.6 and 4.4.0; 26.2.x for a 3.13 estate, which is past Erlang 26 end of liferabbitmq-diagnostics erlang_version, on every node
DistributionOpen source, Tanzu RabbitMQ, or a vendor or Bitnami imagePackage or image source
Install methodRPM, Debian package, OCI image, Kubernetes Cluster OperatorYour deployment tooling
Container image and tag (Docker or Kubernetes only)rabbitmq:4.4-management, pinned to a version tag rather than latestYour Dockerfile, Compose file or Helm values
Last upgradedMarch 2026, from 3.12.14Change record
Support status of this seriesCommunity support ended, or ends on a stated dateThe version support matrix
Table · Versions fields. Scroll sideways on small screens.

Topology: what survives a failure and what does not

Record where the nodes sit and which metadata store the cluster uses, because partition behaviour depends on it.

Topology fields
FieldExample of the detail wantedHow to get itYours
Node count and names3 nodes: rmq-prod-01, 02, 03rabbitmq-diagnostics cluster_status
PlacementOne per availability zone, eu-west-1a, 1b, 1cYour infrastructure inventory
PlatformEC2 instances, or GKE with the Cluster OperatorYour deployment tooling
Resources per node8 vCPU, 32 GB RAM, 250 GB SSD volumeCloud console or Kubernetes resource limits
Metadata storeKhepri. On 4.3 and later it is the only store, so there is no partition handling setting to record. On 4.2 and earlier, state Khepri or Mnesiakhepri_db in rabbitmqctl list_feature_flags (4.0 to 4.2)
Partition handling (Mnesia clusters on 4.2 and earlier only)cluster_partition_handling = pause_minorityrabbitmq.conf
Load balancerA named appliance, TLS terminated at the balancer or passed throughNetwork team
Ports exposed and to whom5672 and 5671 for AMQP, 15672 for management, 15692 for Prometheus; 4369 and 25672 between nodes onlyrabbitmq-diagnostics listeners, firewall rules
Table · Topology fields. Scroll sideways on small screens.

Configuration that matters: the settings that turn up in nearly every incident

Record anything that differs from the defaults, and say which defaults you rely on.

Configuration that matters fields
FieldExample of the detail wantedHow to get itYours
Configuration files in userabbitmq.conf and advanced.config with their paths, one line per setting that differs from the defaultsrabbitmq-diagnostics status (Config files section), rabbitmq-diagnostics environment
Environment variables setRABBITMQ_NODENAME and RABBITMQ_CONFIG_FILE, set in rabbitmq-env.conf or the service unitrabbitmq-env.conf, the service unit or container spec; a shell variable overrides the file
Memory high watermark0.6 relative (the default), on a 32 GB noderabbitmq.conf (vm_memory_high_watermark)
Disk free limit10 GB absolute (the default is 50 MB)rabbitmq.conf (disk_free_limit)
Open file limit for the RabbitMQ userAt least 50,000, more on busy clustersThe service unit or container limits
Default queue typequorum, set for the node or per virtual hostrabbitmq.conf (default_queue_type), rabbitmqctl list_vhosts name default_queue_type
Queue types in useQuorum for orders, classic exclusive for RPC replies, one stream for auditrabbitmqctl list_queues name type
Virtual hosts and what uses them/ for payments, /reporting for the warehouse feedrabbitmqctl list_vhosts name description tags default_queue_type
Plugins enabledmanagement, prometheus, shovel, federationrabbitmq-plugins list
Policies and operator policiesDead letter exchange on the retry queues; no classic mirroring policies (mirroring was removed in 4.0)rabbitmqctl list_policies, list_operator_policies
Feature flagsAll stable flags enabled, last checked after the March upgraderabbitmqctl list_feature_flags
Deprecated features in useNone reported, or a named listrabbitmq-diagnostics list_deprecated_features
Table · Configuration that matters fields. Scroll sideways on small screens.

15-minute emergency SLA. Named senior engineers.

Contact Us

Security: who can reach the cluster and how it proves who they are

Record the shape of authentication and certificates, never the secrets themselves.

Security fields
FieldExample of the detail wantedHow to get itYours
Authentication backendInternal users, LDAP, or OAuth 2rabbitmq.conf
TLS listeners and certificate expiry5671 with a certificate expiring on a stated daterabbitmq-diagnostics check_certificate_expiration
Management UI and API exposureInternal network only, behind the load balancerFirewall rules and listeners
Erlang cookie handlingProvisioned by automation, stored in the secrets manager (record where, not the value)Your secrets tooling
Table · Security fields. Scroll sideways on small screens.

Clients: where most throughput problems live

Record library versions, because they decide behaviour on reconnect, heartbeat and prefetch.

Clients fields
FieldExample of the detail wantedHow to get itYours
Languages and librariesJava (amqp-client), Python (pika), Go (amqp091-go), each with its versionApplication dependency manifests
Producer count and pattern12 services, publisher confirms onApplication owners
Consumer count and prefetch20 consumers, prefetch 10, manual acknowledgementApplication config, management UI channels
Heartbeat30 seconds (the value RabbitMQ suggests is 60)Client config
Connection patternOne connection per service, one channel per threadApplication owners
Table · Clients fields. Scroll sideways on small screens.

Message flows: lets an engineer reason about a backlog without reverse-engineering it live

Record the shape of normal traffic, so an abnormal queue is obvious.

Message flows fields
FieldExample of the detail wantedHow to get itYours
Peak and average throughput1,200 msg/s average, 9,000 at peakPrometheus or the management UI
Typical payload size4 KB, an occasional 900 KB batchApplication owners
Busiest queuesorders.inbound, payments.retryrabbitmqctl list_queues name messages
Dead letteringorders.dlq, drained manually, weeklyrabbitmqctl list_policies, queue arguments
Federation or shovel linksUpstream from prod-us to prod-eu on the audit exchangeRuntime parameters in the management UI
Table · Message flows fields. Scroll sideways on small screens.

Operations: what you can see, and what happens when something goes wrong

Record monitoring, backups and the change window, because these decide how an incident is handled.

Operations fields
FieldExample of the detail wantedHow to get itYours
MonitoringPrometheus plugin scraped every 30 seconds into a dashboard toolYour monitoring config
Alerts that pageQueue growth rate, node down, memory alarm approachingYour alerting config
Definitions backupNightly export to object storage with a stated retentionrabbitmqctl export_definitions <file>
DR positionWarm standby in a second region, federation-fed, with a stated RPOYour DR runbook
Change windowSundays 02:00 to 05:00 UTC, change-board approval requiredChange process
Support contact and contractProvider, plan and escalation routeYour support agreement
Known issuesNode 03 has logged busy_dist_port warnings since MayYour incident log
Table · Operations fields. Scroll sideways on small screens.

How to fill in the version, Erlang and metadata-store fields

Record versions per node, because mixed versions mean an upgrade is in progress or has stalled. Compare the result with the current compatibility matrix: RabbitMQ 4.4.0 runs on Erlang 27.0 to 29.x, 4.3.6 runs on 27.0 to 28.x, and Erlang 26 has reached end of life.

For the metadata store, the answer depends on the series. Khepri became the default store for new clusters in RabbitMQ 4.2.0, an existing cluster upgraded to 4.2 keeps Mnesia until Khepri is explicitly enabled, and from 4.3.0 Mnesia and the partition handling strategies were removed. If the sheet says 4.3 or later, leave the partition handling row empty. If it says 4.2 or earlier on Mnesia, record the cluster_partition_handling value, because it decides what happens to data during a split.

For feature flags, record that the flags were checked and when. Enable all stable flags after every completed upgrade, and treat a flag that cannot be enabled as a finding to record under known issues.

Configuration files, environment variables and containers

Record where each setting lives, because the same value can be set in three places and the one that wins decides what the node does. The RabbitMQ configuration documentation describes four files and one variable layer:

  • rabbitmq.conf is the main configuration file, in a simple key-value format. Record its path and every line that differs from the defaults.
  • advanced.config uses Erlang terms for the settings rabbitmq.conf cannot express, and is merged with it. Record whether the file exists and why.
  • rabbitmq-env.conf sets environment variables for the node, such as the node name, without the RABBITMQ_ prefix. An environment variable set in the shell overrides the same variable in this file.
  • rabbitmq.config is the legacy format from before 3.7.0. It is deprecated but still supported, so an old estate may still carry one; record it and plan its replacement.

Changes to rabbitmq.conf and advanced.config take effect after a node restart, so also record when each node was last restarted, and verify the running values with rabbitmq-diagnostics environment afterwards. For a Docker container, the official image documentation recommends supplying custom configuration as a rabbitmq.conf file mounted at /etc/rabbitmq/rabbitmq.conf, and plugins through a Dockerfile step or a mounted enabled_plugins file. Record the image tag, the path of the mounted configuration file and where the Erlang cookie is supplied, not its value.

Keeping the sheet true

A one-sheet that is eighteen months old is worse than none, because people trust it. We recommend a date at the top, a review after every upgrade and every change to topology, and keeping the sheet next to the runbook rather than in a wiki nobody opens.

Create the sheet from this template and keep it where it has a change history, such as version control or a document with tracked edits, so you can see who modified a field and when. Name one owner, limit who can overwrite it, and publish it to everyone on call so they can access it during an incident. After each change, verify the fields against the live nodes, using the RabbitMQ management UI or the commands above to connect to a node and read what it reports, and specify the date you verified them.

Do not write passwords, tokens, the Erlang cookie value or the definitions file into the sheet itself. Record where they are held. If you would rather have an engineer produce the first version with you, ask for it as part of a health check or an onboarding; the scope and terms are agreed in the engagement, not here.

Frequently asked questions

What should a RabbitMQ environment document contain?

Exact RabbitMQ and Erlang/OTP versions, node count and placement, the metadata store, queue types and virtual hosts, enabled plugins, policies and feature flags, client libraries with prefetch and heartbeat settings, normal message rates, monitoring and alerts, definitions backup, and who is on call. Record locations of secrets, never the secrets.

Does RabbitMQ 4.x still need a partition handling setting?

Not from RabbitMQ 4.3.0. Mnesia and the partition handling strategies were removed, and Khepri is the only metadata store. On 4.2 and earlier, a cluster still on Mnesia has a cluster_partition_handling value that should be recorded.

How do I find out which RabbitMQ and Erlang versions a cluster is running?

Run rabbitmq-diagnostics server_version and rabbitmq-diagnostics erlang_version against each node, and rabbitmq-diagnostics cluster_status for the node list. Check them against the Erlang compatibility matrix on rabbitmq.com.

How often should the environment one-sheet be updated?

After every upgrade, every topology change and every change to queue types, plugins or policies. Put the date at the top and review it at least when you review the runbook.

Does a definitions export replace the one-sheet?

No. A definitions export captures users, virtual hosts, queues, exchanges, bindings, policies and parameters. It does not capture node placement, client libraries, message rates, alerting, the change window or ownership, which are the parts an on-call engineer needs first.

Where do I find which RabbitMQ configuration file a node is using?

Run rabbitmq-diagnostics status and read the Config files section, or check the top of the node's boot log. rabbitmq-diagnostics environment shows the effective merged configuration. Record the paths of rabbitmq.conf, advanced.config and rabbitmq-env.conf on the sheet.

How do I document a RabbitMQ Docker container deployment?

Record the image and its version tag, the rabbitmq.conf file you mount at /etc/rabbitmq/rabbitmq.conf, the plugins enabled, the environment variables set on the container, and where the Erlang cookie comes from. Keep the Dockerfile or Compose file next to the sheet so the two stay in step.

More resources

Other RabbitMQ guides, comparisons and research

Free Consultation

Get Expert Eyes on Your RabbitMQ Cluster

Whether you're troubleshooting a production incident, planning a migration, or want a second opinion on your architecture — our team is ready. No pitch, just answers.

Email Us