头图

EMQX 介绍

EMQX 是一款开源、高度可伸缩、高可用的分布式 MQTT 消息服务器,同时也支持 CoAP/LwM2M 等一站式 IoT 协议接入。以下是 EMQX 的一些主要特点和功能:

  • 海量连接与高并发:EMQX 能够处理千万级别的并发客户端,支持大规模分布式架构,具有高可用集群架构和弹性伸缩部署。
  • 多协议支持:EMQX 完整支持 MQTT V5.0 协议规范,并向下兼容 MQTT V3.1 和 V3.1.1。此外,它还可以扩展支持 MQTT-SN、CoAP、LwM2M、WebSocket、STOMP 或私有 TCP 等多种物联网协议。
  • 规则引擎与数据集成:EMQX 内置强大的规则引擎,可以进行数据提取、过滤与转换,并灵活集成 SQL、NoSQL、时序数据库以及 Kafka 等流处理中间件。
  • 边缘到云端的部署:EMQX 支持从资源受限的边缘计算设备到私有云、混合云和公共云的部署,包括物理机、VM、容器/K8S 跨平台任意部署。
  • 完全开源:EMQX 基于 Apache Version 2.0 开源协议,支持开源免费使用,适用于产品原型设计、物联网创业公司以及大规模的商业部署。
  • 安全性:EMQX 提供端到端数据加密(支持国密)、细粒度访问控制,保障数据安全,满足企业合规需求。
  • 易运维:EMQX 提供图形化配置、操作与管理,实时监测运行状态,并支持 MQTT 跟踪进行端到端问题分析。
  • 云原生支持:EMQX 支持通过 Kubernetes Operator 和 Terraform 在企业内部和公共云中进行部署。
  • 产品线:EMQX 提供多种产品,包括 EMQX Broker(开源版)、EMQX Enterprise(企业版)和 EMQX Platform(平台版),以满足不同规模和需求的 IoT 网络和应用。
  • 功能列表:EMQX 支持完整的 MQTT V3.1/V3.1.1 及 V5.0 协议规范,QoS0, QoS1, QoS2 消息支持,持久会话与离线消息支持,Retained 消息支持,Last Will 消息支持,TCP/SSL 连接支持,MQTT/WebSocket/SSL 支持,HTTP 消息发布接口支持等。

EMQX 作为物联网应用开发和物联网平台搭建的基础设施软件,主要在边缘和云端实现物联网设备互联与设备上云,提供物联网设备接入、协议处理、消息路由、数据存储、流数据处理等核心能力。

观测云

观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

安装 DataKit

DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。

登录观测云控制台,在 集成 -> DataKit 选择对应安装方式,当前采用 Linux 主机部署 DataKit。

图片

采集 EMQX 指标

EMQX 默认暴露指标端口为:18083 ,可通过浏览器查看指标相关信息:http://clientIP:18083/api/v5/prometheus/stats

由于 EMQX 能够直接暴露 metrics url ,所以可以直接通过 prom 采集器进行采集。进入 DataKit 安装目录 /usr/local/datakit/conf.d ,复制 prom 目录下的配置文件并命名为 emqx.conf 。 示例如下:

cp prom.conf.sample emqx.conf

调整内容如下:

[[inputs.prom]]
  ## Exporter URLs.
  urls = ["http://clientIP:18083/api/v5/prometheus/stats"]

  source = "emqx"

  keep_exist_metric_name = true

  ## Customize tags.
  [inputs.prom.tags]
    job = "emqx"  
...

调整文档以上参数。

重启 DataKit

systemctl restart datakit

关键指标

统计(Statistics)

Metrics描述
emqx_connections_count当前连接数量
emqx_topics_count当前主题数量
emqx_suboptions_countsubscriptions_count
emqx_subscribers_count当前订阅者数量
emqx_cluster_nodes_running集群 running 状态的 node
emqx_cluster_nodes_stopped集群 stop 状态的 node

消息 (PUBLISH 报文)

Metrics描述
emqx_messages_received接收来自客户端的消息数量,等于 messages.qos0.received,messages.qos1.received 与 messages.qos2.received 之和
emqx_messages_sent发送给客户端的消息数量,等于 messages.qos0.sent,messages.qos1.sent 与 messages.qos2.sent 之和
emqx_messages_droppedEMQX 内部转发到订阅进程前丢弃的消息总数

字节 (Bytes)

Metrics描述
emqx_bytes_received已接收字节数
emqx_bytes_sent已发送字节数

报文 (Packets)

Metrics描述
emqx_packets_connect接收的 CONNECT 报文数量
emqx_packets_connack_sent发送的 CONNACK 报文数量
emqx_packets_connack_error发送的原因码不为 0x00 的 CONNACK 报文数量,此指标的值大于等于 packets_connack_auth_error 的值
emqx_packets_connack_auth_error发送的原因码为 0x86 和 0x87 的 CONNACK 报文数量
emqx_packets_disconnect_sent发送的 DISCONNECT 报文数量
emqx_packets_disconnect_received接收的 DISCONNECT 报文数量
emqx_packets_publish_received接收的 PUBLISH 报文数量
emqx_packets_publish_sent发送的 PUBLISH 报文数量
emqx_packets_publish_error接收的无法被发布的 PUBLISH 报文数量
emqx_packets_publish_dropped超出接收限制而被丢弃的 PUBLISH 报文数量
emqx_packets_subscribe_received接收的 SUBSCRIBE 报文数量
emqx_packets_subscribe_error接收的订阅失败的 SUBSCRIBE 报文数量
emqx_packets_suback_sent发送的 SUBACK 报文数量
emqx_packets_unsubscribe_received接收的 UNSUBSCRIBE 报文数量
emqx_packets_unsubscribe_error接收的取消订阅失败的 UNSUBSCRIBE 报文数量

视图

登录观测云控制台,点击「场景」 -「新建仪表板」,输入 “EMQX”, 选择 “EMQX 监控视图”,点击 “确定” 即可添加视图。

图片

图片

监控器

EMQX 节点消息丢弃速率过高

如果消息丢弃数量突然增加,可能表明系统过载,设置告警。

图片

图片

EMQX 报文请求存在错误

图片

总结

通过将 EMQX 指标数据接入到观测云,可以让用户更好地理解和控制 EMQX 集群的行为,从而提高系统的可靠性和效率。


观测云
21 声望85 粉丝

云时代的系统可观测平台