Skip to content

系统主题

概述

RobustMQ MQTT Broker 通过 $SYS/ 系统主题发布运行状态、统计数据和事件。客户端可像订阅普通 MQTT 主题一样订阅这些系统主题。

系统主题由 Broker 定期发布(默认每 60 秒,可通过 mqtt_system_topic.interval_ms 调整),部分主题为事件触发即时发布(如客户端连接/断开)。

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


主题设计(当前版本)

系统主题已改为固定 Topic 名称,不再按节点或客户端维度拆分路径:

  • 不再使用 ${node}
  • 事件主题不再使用 ${clientid}
  • 节点信息放在 Payload 中(node_idnode_ip

这样可以避免 Topic 基数随节点数/客户端数膨胀。


Payload 统一格式

除少量历史兼容数据外,系统主题消息统一采用以下外层结构:

json
{
  "node_id": 1,
  "node_ip": "127.0.0.1",
  "ts": 1700000000000,
  "value": {}
}

字段说明:

  • node_id: Broker ID
  • node_ip: Broker IP
  • ts: 生成时间(毫秒)
  • value: 业务值(统计值、事件对象、告警对象等)

Broker 基础信息

主题说明
$SYS/brokers当前集群节点列表
$SYS/brokers/versionBroker 版本
$SYS/brokers/uptimeBroker 运行时长
$SYS/brokers/datetimeBroker 当前时间
$SYS/brokers/sysdescr操作系统信息

统计数据(Stats)

连接

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

Topic

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

路由

主题说明
$SYS/brokers/stats/routes/count当前路由数量
$SYS/brokers/stats/routes/max历史最大路由数量

订阅

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

指标数据(Metrics)

字节

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

消息

主题说明
$SYS/brokers/metrics/messages/received累计接收消息数
$SYS/brokers/metrics/messages/sent累计发送消息数
$SYS/brokers/metrics/messages/dropped累计丢弃消息数
$SYS/brokers/metrics/messages/retained当前保留消息数
$SYS/brokers/metrics/messages/expired累计过期消息数
$SYS/brokers/metrics/messages/forward累计转发消息数
$SYS/brokers/metrics/messages/qos0/received累计 QoS0 接收消息数
$SYS/brokers/metrics/messages/qos0/sent累计 QoS0 发送消息数
$SYS/brokers/metrics/messages/qos1/received累计 QoS1 接收消息数
$SYS/brokers/metrics/messages/qos1/sent累计 QoS1 发送消息数
$SYS/brokers/metrics/messages/qos2/received累计 QoS2 接收消息数
$SYS/brokers/metrics/messages/qos2/sent累计 QoS2 发送消息数
$SYS/brokers/metrics/messages/qos2/expired累计 QoS2 过期消息数
$SYS/brokers/metrics/messages/qos2/dropped累计 QoS2 丢弃消息数

报文(Packets)

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

客户端事件

以下主题在事件发生时即时触发:

主题触发时机
$SYS/brokers/clients/connected客户端连接成功
$SYS/brokers/clients/disconnected客户端断开连接
$SYS/brokers/clients/subscribed客户端订阅成功
$SYS/brokers/clients/unsubscribed客户端取消订阅

connected 消息示例

json
{
  "node_id": 1,
  "node_ip": "127.0.0.1",
  "ts": 1700000000000,
  "value": {
    "username": "user1",
    "ts": 1700000000000,
    "sockport": 54321,
    "proto_ver": 4,
    "proto_name": "MQTT",
    "keepalive": 60,
    "ipaddress": "192.168.1.100",
    "expiry_interval": 0,
    "connected_at": 1700000000000,
    "connack": 0,
    "clientid": "my-client-001",
    "clean_start": true
  }
}

系统告警

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

告警消息同样封装在 value 中,更多字段说明见 系统告警


订阅示例

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
🎉 既然都登录了 GitHub,不如顺手给我们点个 Star 吧!⭐ 你的支持是我们最大的动力 🚀