指标

EMQX 为用户提供了丰富的指标来帮助用户与因为人员了解当前服务状态,监测和排除系统的性能问题。

您可通过 EMQX Dashboard 或 HTTP API 和系统主题来获取 EMQX 指标信息。

用户可以在 EMQX Dashboard 的 仪表盘 -> 指标 页面看到这些数据。

Metrics in Dashboard

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

与监控系统集成

EMQX 指标支持与 Prometheus 集成。使用第三方监控系统对 EMQX 进行监控有如下好处:

  • 可以将 EMQX 的监控数据与其他系统的监控数据进行整合,形成一个完整的监控系统,如监控服务器主机的相关信息;
  • 可以使用更加丰富的监控图表,更直观地展示监控数据,如使用 Grafana 的仪表盘;
  • 可以使用更加丰富的告警方式,更及时地发现问题,如使用 Prometheus 的 Alertmanager。

指标对照手册

EMQX 将指标分为了 Metrics 与 Statistics 两种。

  • Metrics 的类型是 counter,通常指那些只会单调递增的整数数据,例如发送字节数量、发送报文数量。EMQX 目前提供的 Metrics 覆盖了字节、报文、消息和事件四个维度。
  • Statistics 的类型是 gauge,通常指那些成对出现的整数数据,包括当前值和历史最大值,例如当前订阅数量和订阅历史最大数量。

Metrics

字节 (Bytes)

Metrics描述
bytes.received已接收字节数
bytes.sent已发送字节数

报文 (Packets)

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

消息 (PUBLISH 报文)

Metrics描述
messages.delayedEMQX 存储的延迟发布的消息数量
messages.deliveredEMQX 内部转发到订阅进程的消息数量
messages.droppedEMQX 内部转发到订阅进程前丢弃的消息总数
messages.dropped.no_subscribers由于没有订阅者而被丢弃的消息数量
messages.dropped.await_pubrel_timeout由于等待 PUBREL 报文超时而被丢弃的消息数量
messages.forward向其他节点转发的消息数量
messages.publish除系统消息外发布的消息数量
messages.qos0.received接收来自客户端的 QoS 0 消息数量
messages.qos1.received接收来自客户端的 QoS 1 消息数量
messages.qos2.received接收来自客户端的 QoS 2 消息数量
messages.qos0.sent发送给客户端的 QoS 0 消息数量
messages.qos1.sent发送给客户端的 QoS 1 消息数量
messages.qos2.sent发送给客户端的 QoS 2 消息数量
messages.received接收来自客户端的消息数量,等于 messages.qos0.receivedmessages.qos1.receivedmessages.qos2.received 之和
messages.sent发送给客户端的消息数量,等于 messages.qos0.sentmessages.qos1.sentmessages.qos2.sent 之和
messages.acked已经应答的消息数量

事件

Metrics描述
client.connack客户端收到连接确认(CONNACK)消息的次数
client.connect客户端发起连接请求的次数,包括成功和失败的连接请求
client.connected客户端已成功连接的次数
client.disconnected客户端断开连接的次数,包括主动断开和非正常断开
client.subscribe客户端成功订阅主题的次数
client.unsubscribe客户端成功取消订阅主题的次数

会话

Metrics描述
session.created已创建的会话数量
session.discarded已被丢弃的会话数量
session.resumed已被恢复的会话数量
session.takenover已被接收的会话数量
session.terminated已被终止的会话数量

认证和授权

Metrics描述
authorization.allow授权总的通过次数(包括命中缓存,和规则未匹配时默认通过的)
authorization.deny总的拒绝授权次数(包括命中缓存,和规则未匹配时默认通过的)
authorization.matched.allow由于匹配已有规则而授权通过的次数
authorization.matched.deny由于匹配已有规则而拒绝授权的次数
authorization.nomatch授权未匹配任何规则的次数
authorization.cache_hit授权命中缓存的次数
authorization.superuser被授权为超级用户的客户端数量
client.authenticate触发认证次数
client.authorize触发授权检查次数
client.auth.anonymous匿名登录的客户端数量

消息分发

Metrics描述
delivery.dropped.too_large发送时由于长度超过限制而被丢弃的消息数量
delivery.dropped.queue_full发送时由于消息队列满而被丢弃的 QoS 不为 0 的消息数量
delivery.dropped.qos0_msg发送时由于消息队列满而被丢弃的 QoS 为 0 的消息数量
delivery.dropped.expired发送时由于消息过期而被丢弃的消息数量
delivery.dropped.no_local发送时由于 No Local 订阅选项而被丢弃的消息数量
delivery.dropped发送时丢弃的消息总数

Statistics

StatisticsDescription
connections.count当前连接数量
connections.max连接数量的历史最大值
live_connections.count当前活跃连接数量
live_connections.max活跃连接历史最大值
channels.countsessions.count
channels.maxsession.max
sessions.count当前会话数量
sessions.max会话数量的历史最大值
topics.count当前主题数量
topics.max主题数量的历史最大值
suboptions.countsubscriptions.count
suboptions.maxsubscriptions.max
subscribers.count当前订阅者数量
subscribers.max订阅者数量的历史最大值
subscriptions.count当前订阅数量,包含共享订阅
subscriptions.max订阅数量的历史最大值
subscriptions.shared.count当前共享订阅数量
subscriptions.shared.max共享订阅数量的历史最大值
retained.count当前保留消息数量
retained.max保留消息的历史最大值
delayed.count当前延迟发布消息数量
delayed.max延迟发布消息数量的历史最大值