MQTT $SYS topics

$SYS is where a broker publishes metrics about itself: connected clients, message rates, memory, uptime, version. It is a convention rather than a standard, so each broker publishes a different set under a different root.

Subscribing to $SYS

Subscribe to $SYS/#. A subscription to # does not include it, because the specification keeps topics starting with $ out of wildcard matches. Most brokers also let you restrict who may read $SYS; EMQX limits it to localhost by default.

Mosquitto $SYS topics worth knowing

Mosquitto publishes the largest and best-documented tree, and most brokers that follow the convention copy its layout.

Topic Meaning
$SYS/broker/clients/connectedClients connected now
$SYS/broker/load/messages/received/1minMessages received per minute, moving average. Also /sent/, and 5 and 15 minute windows
$SYS/broker/load/publish/dropped/1minMessages the broker dropped. A healthy broker holds this at zero
$SYS/broker/subscriptions/countActive subscriptions
$SYS/broker/retained messages/countRetained messages held. The topic has a space in it
$SYS/broker/store/messages/count, /bytesMessages in the store, including queued QoS 1 and 2
$SYS/broker/heap/current, /maximumHeap in use and its high-water mark, when compiled with memory tracking
$SYS/broker/uptime, $SYS/broker/versionUptime in seconds, and the version string

Mosquitto republishes every sys_interval seconds, 10 by default, retained, and only the values that changed. Silence on a topic means unchanged, not missing.

What each broker publishes

Broker $SYS root Interval Notes
Mosquitto 2.x $SYS/broker/ 10 s, retained Clients, load averages, drops, store, subscriptions, heap when compiled in, uptime, version. Republishes changes only.
EMQX 4.x and 5.x $SYS/brokers/<node>/ 1 min, not retained Drop counters and client and subscription gauges. No queue depth, heap or load averages. 4.x uses dotted leaves, 5.x slashes. Localhost only by default.
VerneMQ $SYS/<node>/ 20 s Counters including queue drops, the vm_memory family and retained counts. The node name varies, so subscribe with +.
Mochi-MQTT $SYS/broker/ 1 s, retained Its own leaves: messages/dropped, messages/inflight, retained, subscriptions. system/memory is process memory, not broker heap.
FlashMQ, RSMB $SYS/broker/ About 10 s A mosquitto-style subset.
Aedes with aedes-stats $SYS/<instance-id>/ 1 s Clients, heap and uptime under a random per-instance id. Subscribe with a wildcard.
NanoMQ none No $SYS tree. Metrics go through its event and webhook system.
HiveMQ and HiveMQ Cloud, RabbitMQ, BifroMQ, Moquette, AWS IoT Core, Azure Event Grid, EMQX Cloud Serverless, flespi none No $SYS metrics. Monitoring goes through their dashboards, APIs or Prometheus endpoints.

Researched against current broker versions in July 2026 for MQTT Viewer's broker status page.

Reading the numbers

Many $SYS values are cumulative counters that only mean something as a rate. MQTT Viewer's status page derives rates from counters and shows them as tiles with trend lines.

Frequently asked questions

How do you see $SYS topics on a broker?

Subscribe to $SYS/# with any MQTT client. A subscription to # alone does not include them, because wildcards never match topics that start with $.

Why are $SYS topics missing on EMQX?

EMQX only allows $SYS subscriptions from localhost by default. Loosen the ACL to allow $SYS/# from the client's address, or read the metrics from the EMQX dashboard instead.

Do AWS IoT Core or Azure IoT Hub publish $SYS topics?

Neither AWS IoT Core nor Azure IoT Hub publishes $SYS topics, and nor do HiveMQ, RabbitMQ or most managed brokers. Their metrics live in their own dashboards and APIs. A client can still measure the message rate it observes.

Are $SYS topics part of the MQTT specification?

The specification reserves topics starting with $ for the broker and keeps them out of wildcard matches. What goes under $SYS is a convention that started with mosquitto, and every broker lays it out differently.

The MQTT glossary covers topics, wildcards, QoS and retained messages.

MQTT Viewer is free and open source, and runs on macOS, Windows and Linux.

Download MQTT Viewer