Skip to content

系统主题

概述

RobustMQ MQTT Broker 通过 $SYS/ 系统主题对外发布 Broker 自身的运行状态和统计数据。客户端可以像订阅普通 MQTT 主题一样订阅这些系统主题,从而实时感知 Broker 的连接数、消息吞吐、告警事件等关键指标,无需额外的监控 Agent。

系统主题由 Broker 定期自动发布(默认每 60 秒刷新一次,可通过 mqtt_system_topic.interval_ms 配置项调整),也有部分主题在事件触发时(如客户端上/下线)即时发布。

注意:系统主题以 $SYS/ 开头,默认情况下非管理员客户端无法订阅,请确认 ACL 配置正确。


主题格式

所有系统主题以 $SYS/brokers/${node}/ 为前缀,其中 ${node} 会替换为当前节点的 IP 地址。


Broker 基础信息

定期发布,描述 Broker 自身的版本、运行时间等静态信息。

主题说明示例值
$SYS/brokers当前集群的节点列表(JSON)[{"node_id":1,...}]
$SYS/brokers/${node}/versionBroker 版本号0.4.0
$SYS/brokers/${node}/uptime运行时长0 days, 2 hours, 15 minutes, 30 seconds
$SYS/brokers/${node}/datetime当前系统时间2026-02-23 10:00:00
$SYS/brokers/${node}/sysdescr操作系统信息Ubuntu 22.04

统计数据(Stats)

定期发布,反映当前系统中各类对象的实时数量。

连接

主题说明
$SYS/brokers/${node}/stats/connections/count当前在线连接数
$SYS/brokers/${node}/stats/connections/max历史最大连接数(以会话数近似)

Topic

主题说明
$SYS/brokers/${node}/stats/topics/count当前 Topic 数量
$SYS/brokers/${node}/stats/topics/max历史最大 Topic 数量

路由

主题说明
$SYS/brokers/${node}/stats/routes/count当前路由数量(等于活跃订阅总数)
$SYS/brokers/${node}/stats/routes/max历史最大路由数量

订阅

主题说明
$SYS/brokers/${node}/stats/subscribers/count当前独占订阅者数量
$SYS/brokers/${node}/stats/subscribers/max历史最大独占订阅者数量
$SYS/brokers/${node}/stats/subscriptions/count当前总订阅数(独占 + 共享)
$SYS/brokers/${node}/stats/subscriptions/max历史最大总订阅数
$SYS/brokers/${node}/stats/subscriptions/shared/count当前共享订阅数
$SYS/brokers/${node}/stats/subscriptions/shared/max历史最大共享订阅数
$SYS/brokers/${node}/stats/suboptions/count当前订阅选项总数
$SYS/brokers/${node}/stats/suboptions/max历史最大订阅选项数

指标数据(Metrics)

定期发布,反映累计的字节、消息、报文数量。

字节

主题说明
$SYS/brokers/${node}/metrics/bytes/received累计接收字节数
$SYS/brokers/${node}/metrics/bytes/sent累计发送字节数

消息

主题说明
$SYS/brokers/${node}/metrics/messages/received累计接收消息数
$SYS/brokers/${node}/metrics/messages/sent累计发送消息数
$SYS/brokers/${node}/metrics/messages/dropped累计丢弃消息数(无订阅者)
$SYS/brokers/${node}/metrics/messages/retained当前保留消息数
$SYS/brokers/${node}/metrics/messages/expired累计过期消息数
$SYS/brokers/${node}/metrics/messages/forward累计转发消息数(集群节点间)
$SYS/brokers/${node}/metrics/messages/qos0/received累计 QoS 0 接收消息数
$SYS/brokers/${node}/metrics/messages/qos0/sent累计 QoS 0 发送消息数
$SYS/brokers/${node}/metrics/messages/qos1/received累计 QoS 1 接收消息数
$SYS/brokers/${node}/metrics/messages/qos1/sent累计 QoS 1 发送消息数
$SYS/brokers/${node}/metrics/messages/qos2/received累计 QoS 2 接收消息数
$SYS/brokers/${node}/metrics/messages/qos2/sent累计 QoS 2 发送消息数
$SYS/brokers/${node}/metrics/messages/qos2/expired累计 QoS 2 过期消息数
$SYS/brokers/${node}/metrics/messages/qos2/dropped累计 QoS 2 丢弃消息数

报文(Packets)

主题说明
$SYS/brokers/${node}/metrics/packets/received累计接收报文数
$SYS/brokers/${node}/metrics/packets/sent累计发送报文数
$SYS/brokers/${node}/metrics/packets/connect累计 CONNECT 报文数
$SYS/brokers/${node}/metrics/packets/connack累计 CONNACK 报文数
$SYS/brokers/${node}/metrics/packets/publish/received累计接收 PUBLISH 报文数
$SYS/brokers/${node}/metrics/packets/publish/sent累计发送 PUBLISH 报文数
$SYS/brokers/${node}/metrics/packets/puback/received累计接收 PUBACK 报文数
$SYS/brokers/${node}/metrics/packets/puback/sent累计发送 PUBACK 报文数
$SYS/brokers/${node}/metrics/packets/puback/missed累计 PUBACK 超时未确认数
$SYS/brokers/${node}/metrics/packets/pubrec/received累计接收 PUBREC 报文数
$SYS/brokers/${node}/metrics/packets/pubrec/sent累计发送 PUBREC 报文数
$SYS/brokers/${node}/metrics/packets/pubrec/missed累计 PUBREC 超时未确认数
$SYS/brokers/${node}/metrics/packets/pubrel/received累计接收 PUBREL 报文数
$SYS/brokers/${node}/metrics/packets/pubrel/sent累计发送 PUBREL 报文数
$SYS/brokers/${node}/metrics/packets/pubrel/missed累计 PUBREL 超时未确认数
$SYS/brokers/${node}/metrics/packets/pubcomp/received累计接收 PUBCOMP 报文数
$SYS/brokers/${node}/metrics/packets/pubcomp/sent累计发送 PUBCOMP 报文数
$SYS/brokers/${node}/metrics/packets/pubcomp/missed累计 PUBCOMP 超时未确认数
$SYS/brokers/${node}/metrics/packets/subscribe累计 SUBSCRIBE 报文数
$SYS/brokers/${node}/metrics/packets/suback累计 SUBACK 报文数
$SYS/brokers/${node}/metrics/packets/unsubscribe累计 UNSUBSCRIBE 报文数
$SYS/brokers/${node}/metrics/packets/unsuback累计 UNSUBACK 报文数
$SYS/brokers/${node}/metrics/packets/pingreq累计 PINGREQ 报文数
$SYS/brokers/${node}/metrics/packets/pingresp累计 PINGRESP 报文数
$SYS/brokers/${node}/metrics/packets/disconnect/received累计接收 DISCONNECT 报文数
$SYS/brokers/${node}/metrics/packets/disconnect/sent累计发送 DISCONNECT 报文数
$SYS/brokers/${node}/metrics/packets/auth累计 AUTH 报文数

客户端事件

以下主题在事件发生时即时触发${clientid} 替换为实际的客户端 ID。

主题触发时机Payload 格式
$SYS/brokers/${node}/clients/${clientid}/connected客户端连接成功JSON
$SYS/brokers/${node}/clients/${clientid}/disconnected客户端断开连接JSON
$SYS/brokers/${node}/clients/${clientid}/subscribed客户端订阅成功JSON
$SYS/brokers/${node}/clients/${clientid}/unsubscribed客户端取消订阅JSON

connected 消息示例

json
{
  "username": "user1",
  "ts": 1700000000000,
  "sock_port": 54321,
  "proto_ver": "V4",
  "proto_name": "MQTT",
  "keepalive": 60,
  "ip_address": "192.168.1.100",
  "expiry_interval": 0,
  "connected_at": 1700000000000,
  "connect_ack": 0,
  "client_id": "my-client-001",
  "clean_start": true
}

disconnected 消息示例

json
{
  "username": "user1",
  "ts": 1700000100000,
  "sock_port": 54321,
  "reason": "NormalDisconnection",
  "proto_ver": "V4",
  "proto_name": "MQTT",
  "ip_address": "192.168.1.100",
  "disconnected_at": 1700000100000,
  "client_id": "my-client-001"
}

系统告警

告警事件触发时即时发布。更多告警配置见系统告警文档。

主题说明
$SYS/brokers/${node}/alarms/alert新告警触发时发布
$SYS/brokers/${node}/alarms/clear告警恢复/清除时发布

告警消息示例

json
{
  "name": "HighCpuUsage",
  "message": "HighCpuUsage is 85%, but config is 70%",
  "create_time": 1700000000
}

订阅示例

使用 MQTTX 或任意 MQTT 客户端订阅所有系统主题:

bash
# 订阅所有系统主题
mqttx sub -t '$SYS/#' -h 127.0.0.1 -p 1883

# 订阅当前节点所有统计数据
mqttx sub -t '$SYS/brokers/+/stats/#' -h 127.0.0.1 -p 1883

# 订阅所有客户端连接事件
mqttx sub -t '$SYS/brokers/+/clients/+/connected' -h 127.0.0.1 -p 1883