# $SYS 系统主题

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

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

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

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

broker.sys_interval = 1m
Copied!
1

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

# 集群状态信息

主题 说明
$SYS/brokers 集群节点列表
$SYS/brokers/${node}/version EMQX 版本
$SYS/brokers/${node}/uptime EMQX 运行时间
$SYS/brokers/${node}/datetime EMQX 系统时间
$SYS/brokers/${node}/sysdescr EMQX 描述

# 客户端上下线事件

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

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

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
}
Copied!
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"
}
Copied!
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.max Topic 数量历史最大值

# 路由统计

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

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/retained Retained 消息总数
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/expired QoS 2 过期消息总数
messages/qos2/dropped QoS 2 丢弃消息总数

# Alarms - 系统告警

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

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

# Sysmon - 系统监控

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

主题 (Topic) 说明
long_gc GC 时间过长警告
long_schedule 调度时间过长警告
large_heap Heap 内存占用警告
busy_port Port 忙警告
busy_dist_port Dist Port 忙警告