System Topics ($SYS)
MAPS Messaging publishes operational status and statistics under the $SYS/ namespace. Any supported protocol can read these topics (e.g., MQTT, AMQP 1.0, STOMP, NATS, CoAP via bridges).
Use cases: quick health checks, client/session counts, throughput/bytes, destination/endpoint stats, moving‑average trends.
Enabling / Disabling
These are controlled in MessageDaemon.yaml:
EnableSystemTopics: true— publishes the standard$SYSset.EnableSystemStatusTopics: true— publishes extended JSON status documents under$SYS/server/....EnableSystemTopicAverages: true— adds moving‑average variants for selected metrics.
See Configuration → MessageDaemon for full descriptions of these flags.
Access Patterns (by protocol)
- MQTT: subscribe to
"$SYS/#"(wildcard). - AMQP 1.0: receive from address
"$SYS/..."(topic‑style). - STOMP:
SUBSCRIBEto/topic/$SYS/#. - NATS:
SUB $SYS.>(dot separator). - Bridged protocols: identical
$SYStree is exposed once bridged.
$SYS/is read‑only (server‑generated); clients should not publish to it.
Core Topics (examples)
Exact set may evolve; discover with a wildcard subscription on
$SYS/#.
Broker/server
$SYS/broker/uptime— milliseconds since start$SYS/broker/version— semantic version string$SYS/broker/timestamp— server time (epoch ms)$SYS/server/health—OK | Warning | Error
Clients
$SYS/clients/connected— current connections$SYS/clients/maximum— peak concurrent since start$SYS/clients/disconnectedTotal— total disconnects
Throughput & bytes
$SYS/messages/in/total— total msgs in$SYS/messages/out/total— total msgs out$SYS/bytes/in/total— bytes in$SYS/bytes/out/total— bytes out
Endpoints / listeners (per endpoint)
$SYS/endpoint/{name}/connected$SYS/endpoint/{name}/bytesInTotal$SYS/endpoint/{name}/bytesOutTotal$SYS/endpoint/{name}/messagesInTotal$SYS/endpoint/{name}/messagesOutTotal$SYS/endpoint/{name}/errorsTotal
Destinations (per namespace/queue/topic)
$SYS/destination/{dest}/enqueued$SYS/destination/{dest}/dequeued$SYS/destination/{dest}/pending$SYS/destination/{dest}/consumers$SYS/destination/{dest}/producers
Moving averages (when enabled)
- For selected metrics, additional
$SYS/...entries reflect moving averages over multiple windows (e.g., short/medium/long).
Extended Status (JSON)
When EnableSystemStatusTopics: true, structured JSON documents are published under $SYS/server/... (for programmatic scraping and dashboards). Typical groups include:
broker(uptime, build, heap/non‑heap, CPU)protocols(MQTT, AMQP, NATS, CoAP, etc.)endpoints(per listener)destinations(per queue/topic)tasks(internal queues/schedulers)
Fields and groups may expand over time. Subscribe to
$SYS/server/#to enumerate current documents.
Security & ACLs
$SYS/is readable by authenticated clients by default (unless you restrict it).- For multi‑tenant/hosted scenarios, deny external access to
$SYSor allow only to trusted roles. - Example policy intent: allow read to
$SYS/#for admins; deny to regular tenants.
Note:
$SYSmessages reflect internal state; treat as operational telemetry. Avoid exposing$SYStopics directly over the public Internet.
Performance Considerations
- Publishing frequency and moving‑average calculations are lightweight; impact is minimal under normal load.
- High‑cardinality trees (many destinations/endpoints) will produce more
$SYSmessages. Use wildcard filters to limit client traffic as needed.
Quick Start (MQTT)
# Subscribe to everything under $SYS
SUB $SYS/#
# You should see status lines such as:
$SYS/broker/uptime 1234567
$SYS/clients/connected 42
$SYS/messages/in/total 102938
$SYS/server/health OK