# 指标监控

EMQX 为用户提供了指标监控功能,允许用户以及运维人员根据这些指标来了解当前服务状态。指标监控功能强制启用,但此功能拥有很高的性能,用户不必担心影响高吞吐场景下的系统性能。

EMQX 为用户提供了多种查看指标与状态的手段。最直接的,用户可以在 EMQX Dashboard 的 Overview 页面看到这些数据。

如果不方便访问 Dashboard,你还可以通过 HTTP API 和系统主题消息来获取这些数据,具体操作方法分别参见 HTTP API$SYS 系统主题

提示

EMQX 提供 emqx_statsd (opens new window) 插件,用于将系统的监控数据输出到第三方的监控系统中,使用示例参考 Prometheus 监控告警

# Metrics & Stats

EMQX 将指标分为了 Metrics 与 Stats 两种。Metrics 通常指那些只会单调递增的数据,例如发送字节数量、发送报文数量。EMQX 目前提供的 Metrics 覆盖了字节、报文、消息和事件四个维度。Stats 则通常指那些成对出现的数据,包括当前值和历史最大值,例如当前订阅数量和订阅历史最大数量。

从 v4.1.0 版本开始,EMQX 增加了针对指定主题的 Metrics 统计,包括消息收发数量和收发速率。我们提供了新建主题统计、取消主题统计和返回指定主题统计信息的 HTTP API,参见 HTTP API,你也可以直接在 Dashboard -> Analysis -> Topic Metrics 页面进行相关操作。

# Metrics

# 字节

Name Data Type Description
bytes.received Integer 接收字节数量
bytes.sent Integer 发送字节数量

# 报文

Name Data Type Description
packets.received Integer 接收的报文数量
packets.sent Integer 发送的报文数量
packets.connect.received Integer 接收的 CONNECT 报文数量
packets.connack.auth_error Integer 发送的原因码为 0x86 和 0x87 的 CONNACK 报文数量
packets.connack.error Integer 发送的原因码不为 0x00 的 CONNACK 报文数量,此指标的值大于等于 packets.connack.auth_error 的值
packets.connack.sent Integer 发送的 CONNACK 报文数量
packets.publish.received Integer 接收的 PUBLISH 报文数量
packets.publish.sent Integer 发送的 PUBLISH 报文数量
packets.publish.inuse Integer 接收的报文标识符已被占用的 PUBLISH 报文数量
packets.publish.auth_error Integer 接收的未通过 ACL 检查的 PUBLISH 报文数量
packets.publish.error Integer 接收的无法被发布的 PUBLISH 报文数量
packets.publish.dropped Integer 超出接收限制而被丢弃的 PUBLISH 报文数量
packets.puback.received Integer 接收的 PUBACK 报文数量
packets.puback.sent Integer 发送的 PUBACK 报文数量
packets.puback.inuse Integer 接收的报文标识符已被占用的 PUBACK 报文数量
packets.puback.missed Integer 接收的未知报文标识符 PUBACK 报文数量
packets.pubrec.received Integer 接收的 PUBREC 报文数量
packets.pubrec.sent Integer 发送的 PUBREC 报文数量
packets.pubrec.inuse Integer 接收的报文标识符已被占用的 PUBREC 报文数量
packets.pubrec.missed Integer 接收的未知报文标识符 PUBREC 报文数量
packets.pubrel.received Integer 接收的 PUBREL 报文数量
packets.pubrel.sent Integer 发送的 PUBREL 报文数量
packets.pubrel.missed Integer 接收的未知报文标识符 PUBREL 报文数量
packets.pubcomp.received Integer 接收的 PUBCOMP 报文数量
packets.pubcomp.sent Integer 发送的 PUBCOMP 报文数量
packets.pubcomp.inuse Integer 接收的报文标识符已被占用的 PUBCOMP 报文数量
packets.pubcomp.missed Integer 发送的 PUBCOMP 报文数量
packets.subscribe.received Integer 接收的 SUBSCRIBE 报文数量
packets.subscribe.error Integer 接收的订阅失败的 SUBSCRIBE 报文数量
packets.subscribe.auth_error Integer 接收的未通过 ACL 检查的 SUBACK 报文数量
packets.suback.sent Integer 发送的 SUBACK 报文数量
packets.unsubscribe.received Integer 接收的 UNSUBSCRIBE 报文数量
packets.unsubscribe.error Integer 接收的取消订阅失败的 UNSUBSCRIBE 报文数量
packets.unsuback.sent Integer 发送的 UNSUBACK 报文数量
packets.pingreq.received Integer 接收的 PINGREQ 报文数量
packets.pingresp.sent Integer 发送的 PUBRESP 报文数量
packets.disconnect.received Integer 接收的 DISCONNECT 报文数量
packets.disconnect.sent Integer 发送的 DISCONNECT 报文数量
packets.auth.received Integer 接收的 AUTH 报文数量
packets.auth.sent Integer 发送的 AUTH 报文数量

# 消息 (PUBLISH 报文)

Name Data Type Description
delivery.dropped.too_large Integer 发送时由于长度超过限制而被丢弃的消息数量
delivery.dropped.queue_full Integer 发送时由于消息队列满而被丢弃的 QoS 不为 0 的消息数量
delivery.dropped.qos0_msg Integer 发送时由于消息队列满而被丢弃的 QoS 为 0 的消息数量
delivery.dropped.expired Integer 发送时由于消息过期而被丢弃的消息数量
delivery.dropped.no_local Integer 发送时由于 No Local 订阅选项而被丢弃的消息数量
delivery.dropped Integer 发送时丢弃的消息总数
messages.delayed Integer EMQX 存储的延迟发布的消息数量
messages.delivered Integer EMQX 内部转发到订阅进程的消息数量
messages.dropped Integer EMQX 内部转发到订阅进程前丢弃的消息总数
messages.dropped.expired Integer 接收时由于消息过期而被丢弃的消息数量
messages.dropped.no_subscribers Integer 由于没有订阅者而被丢弃的消息数量
messages.forward Integer 向其他节点转发的消息数量
messages.publish Integer 除系统消息外发布的消息数量
messages.qos0.received Integer 接收来自客户端的 QoS 0 消息数量
messages.qos2.received Integer 接收来自客户端的 QoS 1 消息数量
messages.qos1.received Integer 接收来自客户端的 QoS 2 消息数量
messages.qos0.sent Integer 发送给客户端的 QoS 0 消息数量
messages.qos1.sent Integer 发送给客户端的 QoS 1 消息数量
messages.qos2.sent Integer 发送给客户端的 QoS 2 消息数量
messages.received Integer 接收来自客户端的消息数量,等于 messages.qos0.receivedmessages.qos1.receivedmessages.qos2.received 之和
messages.sent Integer 发送给客户端的消息数量,等于 messages.qos0.sentmessages.qos1.sentmessages.qos2.sent 之和
messages.retained Integer EMQX 存储的保留消息数量
messages.acked Integer 已经应答的消息数量

# 事件

Name Data Type Description
client.auth.anonymous Integer 客户端最终匿名形式登录的次数
client.connect Integer client.connect 钩子触发次数
client.authenticate Integer client.authenticate 钩子触发次数
client.connack Integer client.connack 钩子触发次数
client.connected Integer client.connected 钩子触发次数
client.disconnected Integer client.disconnected 钩子触发次数
client.check_acl Integer client.check_acl 钩子触发次数
client.subscribe Integer client.subscribe 钩子触发次数
client.unsubscribe Integer client.unsubscribe 钩子触发次数
client.auth.success Integer 客户端认证成功次数
client.auth.success.anonymous Integer 匿名认证成功次数
client.auth.failure Integer 客户端认证失败次数
client.acl.allow Integer 客户端 ACL 校验通过次数
client.acl.deny Integer 客户端 ACL 校验失败次数
client.acl.cache_hit Integer ACL 校验缓存命中次数
session.created Integer session.created 钩子触发次数
session.discarded Integer session.discarded 钩子触发次数
session.resumed Integer session.resumed 钩子触发次数
session.takeovered Integer session.takeovered 钩子触发次数
session.terminated Integer session.terminated 钩子触发次数

# Stats

Name Data Type Description
connections.count Integer 当前连接数量
connections.max Integer 连接数量的历史最大值
channels.count Integer sessions.count
channels.max Integer session.max
sessions.count Integer 当前会话数量
sessions.max Integer 会话数量的历史最大值
topics.count Integer 当前主题数量
topics.max Integer 主题数量的历史最大值
suboptions.count Integer subscriptions.count
suboptions.max Integer subscriptions.max
subscribers.count Integer 当前订阅者数量
subscribers.max Integer 订阅者数量的历史最大值
subscriptions.count Integer 当前订阅数量,包含共享订阅
subscriptions.max Integer 订阅数量的历史最大值
subscriptions.shared.count Integer 当前共享订阅数量
subscriptions.shared.max Integer 共享订阅数量的历史最大值
routes.count Integer 当前路由数量
routes.max Integer 路由数量的历史最大值
retained.count Integer 当前保留消息数量
retained.max Integer 保留消息的历史最大值