# $SYS 系统主题

EMQ X 周期性发布自身运行状态、消息统计、客户端上下线事件到以 $SYS/ 开头系统主题。

$SYS 主题路径以 $SYS/brokers/{node}/ 开头。{node} 是指产生该 事件 / 消息 所在的节点名称,例如:

$SYS/brokers/emqx@127.0.0.1/version
$SYS/brokers/emqx@127.0.0.1/uptime
1
2

$SYS 系统消息发布周期配置项:

broker.sys_interval = 1m
1

EMQ X 中 $SYS 主题中绝大部分数据都可以通过其他更耦合性更低的方式获取,设备上下线状态可通过 Webhook 获取,节点与集群状态可通过 HTTP API - 统计指标 获取。 :::

# 集群状态信息

主题说明
$SYS/brokers集群节点列表
$SYS/brokers/${node}/versionEMQ X 版本
$SYS/brokers/${node}/uptimeEMQ X 运行时间
$SYS/brokers/${node}/datetimeEMQ X 系统时间
$SYS/brokers/${node}/sysdescrEMQ X 描述

# 客户端上下线事件

$SYS 主题前缀: $SYS/brokers/${node}/clients/

主题 (Topic)说明
${clientid}/connected上线事件。当任意客户端上线时,EMQ X 就会发布该主题的消息
${clientid}/disconnected下线事件。当任意客户端下线时,EMQ X 就会发布该主题的消息

connected 事件消息的 Payload 解析成 JSON 格式如下:

{
    "username": "foo",
    "ts": 1625572213873,
    "sockport": 1883,
    "proto_ver": 4,
    "proto_name": "MQTT",
    "keepalive": 60,
    "ipaddress": "127.0.0.1",
    "expiry_interval": 0,
    "connected_at": 1625572213873,
    "connack": 0,
    "clientid": "emqtt-8348fe27a87976ad4db3",
    "clean_start": true
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

disconnected 事件消息的 Payload 解析成 JSON 格式如下:

{
    "username": "foo",
    "ts": 1625572213873,
    "sockport": 1883,
    "reason": "tcp_closed",
    "proto_ver": 4,
    "proto_name": "MQTT",
    "ipaddress": "127.0.0.1",
    "disconnected_at": 1625572213873,
    "clientid": "emqtt-8348fe27a87976ad4db3"
}
1
2
3
4
5
6
7
8
9
10
11

# 系统统计 (Statistics)

系统主题前缀: $SYS/brokers/${node}/stats/

# 客户端统计

主题 (Topic)说明
connections/count当前客户端总数
connections/max客户端数量历史最大值

# 订阅统计

主题 (Topic)说明
suboptions/count当前订阅选项个数
suboptions/max订阅选项总数历史最大值
subscribers/count当前订阅者数量
subscribers/max订阅者总数历史最大值
subscriptions/count当前订阅总数
subscriptions/max订阅数量历史最大值
subscriptions/shared/count当前共享订阅个数
subscriptions/shared/max当前共享订阅总数

# 主题统计

主题 (Topic)说明
topics/count当前 Topic 总数
topics/maxTopic 数量历史最大值

# 路由统计

主题 (Topic)说明
routes/count当前 Routes 总数
routes/maxRoutes 数量历史最大值

topics/counttopics/maxroutes/countroutes/max 数值上是相等的。

# 收发流量 / 报文 / 消息统计

系统主题 (Topic) 前缀: $SYS/brokers/${node}/metrics/

# 收发流量统计

主题 (Topic)说明
bytes/received累计接收流量
bytes/sent累计发送流量

# MQTT 报文收发统计

主题 (Topic)说明
packets/received累计接收 MQTT 报文
packets/sent累计发送 MQTT 报文
packets/connect累计接收 MQTT CONNECT 报文
packets/connack累计发送 MQTT CONNACK 报文
packets/publish/received累计接收 MQTT PUBLISH 报文
packets/publish/sent累计发送 MQTT PUBLISH 报文
packets/puback/received累计接收 MQTT PUBACK 报文
packets/puback/sent累计发送 MQTT PUBACK 报文
packets/puback/missed累计丢失 MQTT PUBACK 报文
packets/pubrec/received累计接收 MQTT PUBREC 报文
packets/pubrec/sent累计发送 MQTT PUBREC 报文
packets/pubrec/missed累计丢失 MQTT PUBREC 报文
packets/pubrel/received累计接收 MQTT PUBREL 报文
packets/pubrel/sent累计发送 MQTT PUBREL 报文
packets/pubrel/missed累计丢失 MQTT PUBREL 报文
packets/pubcomp/received累计接收 MQTT PUBCOMP 报文
packets/pubcomp/sent累计发送 MQTT PUBCOMP 报文
packets/pubcomp/missed累计丢失 MQTT PUBCOMP 报文
packets/subscribe累计接收 MQTT SUBSCRIBE 报文
packets/suback累计发送 MQTT SUBACK 报文
packets/unsubscribe累计接收 MQTT UNSUBSCRIBE 报文
packets/unsuback累计发送 MQTT UNSUBACK 报文
packets/pingreq累计接收 MQTT PINGREQ 报文
packets/pingresp累计发送 MQTT PINGRESP 报文
packets/disconnect/received累计接收 MQTT DISCONNECT 报文
packets/disconnect/sent累计接收 MQTT DISCONNECT 报文
packets/auth累计接收 MQTT AUTH 报文

# MQTT 消息收发统计

主题 (Topic)说明
messages/received累计接收消息
messages/sent累计发送消息
messages/expired累计过期消息
messages/retainedRetained 消息总数
messages/dropped丢弃消息总数
messages/forward节点转发消息总数
messages/qos0/received累计接收 QoS 0 消息
messages/qos0/sent累计发送 QoS 0 消息
messages/qos1/received累计接收 QoS 1 消息
messages/qos1/sent累计发送 QoS 1 消息
messages/qos2/received累计接收 QoS 2 消息
messages/qos2/sent累计发送 QoS 2 消息
messages/qos2/expiredQoS 2 过期消息总数
messages/qos2/droppedQoS 2 丢弃消息总数

# Alarms - 系统告警

系统主题 (Topic) 前缀: $SYS/brokers/${node}/alarms/

主题 (Topic)说明
alert新产生的告警
clear被清除的告警

# Sysmon - 系统监控

系统主题 (Topic) 前缀: $SYS/brokers/${node}/sysmon/

主题 (Topic)说明
long_gcGC 时间过长警告
long_schedule调度时间过长警告
large_heapHeap 内存占用警告
busy_portPort 忙警告
busy_dist_portDist Port 忙警告