EMQX 可观测性最佳实践

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_count即 subscriptions_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 集群的行为,从而提高系统的可靠性和效率。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值