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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/491522.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spark优化----Spark 性能调优

目录 常规性能调优 常规性能调优一:最优资源配置 常规性能调优二:RDD 优化 RDD 复用 RDD 持久化 RDD 尽可能早的 filter 操作 常规性能调优三:并行度调节 常规性能调优四:广播大变量 常规性能调优五:Kryo 序列化 常规性…

【zlm】 webrtc源码讲解三(总结)

目录 setsdp onwrite ​编辑 play 参考 setsdp onwrite play 参考 【zlm】 webrtc源码讲解_zlm webrtc-CSDN博客 【zlm】 webrtc源码讲解(二)_webrtc 源码-CSDN博客

模型 正交验证(科学验证)

系列文章 分享 模型,了解更多👉 模型_思维模型目录。正交验证:多因素影响下的最优解探索。 1 模型正交验证的应用 1.1 磁疗对烫伤治疗消肿效果的研究 背景简介: 某研究所为了研究磁疗对烫伤治疗的消肿效果,对白鼠进行…

【Python】【办公解决方案】【会议系统】【屏幕共享】【远程画面】Python局域网屏幕共享应用

背景: 由于公司没有什么很好的内网开会的工具,Skype如果需要开相应功能还要加License费用,流程繁琐,因此自主开发了一套简易好用的内网屏幕共享会议系统,得益于Python的强大扩展性,很快就实现了。 设计: 不做花里胡哨的功能,主要目的就是让work from home的同事能够…

VirtualBox 7.0 安装Linux Red Hat 7.9 Server操作系统

1.新建虚拟机 安装完VirtualBox后,新建虚拟机 填写名称、安装路径、类型为Linux、版本Red Hat 7.x(64-bit) 设置硬件信息,根据个人电脑配置设置 设置虚拟机磁盘空间,如果默认20g不够用,根据实际情况调整 确认配置信息&#xff0c…

【USB-HID】“自动化键盘“ - 模拟键盘输入

目录 【USB-HID】"自动化键盘" - 模拟键盘输入1. 前言2. 模拟键盘2.1 STM32CubeMX 配置2.2 修改代码配置2.3 发送按键信息 3. 接收主机Setup数据3.1 获取PC下发的数据 4. 总结 【USB-HID】“自动化键盘” - 模拟键盘输入 1. 前言 对于模拟键盘的实现,网…

29. Three.js案例-自定义平面图形

29. Three.js案例-自定义平面图形 实现效果 知识点 WebGLRenderer WebGLRenderer 是 Three.js 中用于渲染 3D 场景的核心类。它利用 WebGL 技术在浏览器中渲染 3D 图形。 构造器 THREE.WebGLRenderer(parameters : object) 参数类型描述parametersobject可选参数对象&…

【计算机网络】期末考试预习复习|上

作业讲解 物理层作业 共有4个用户进行CDMA通信。这4个用户的码片序列为: A: (–1 –1 –1 1 1 –1 1 1);B: (–1 –1 1 –1 1 1 1 –1) C: (–1 1 –1 1 1 1 –1 –1);D: (–1 1 –1 –1 –1 –1 1 –1) 现收到码片序列:(–1 1 –…

定时/延时任务-万字解析Spring定时任务原理

文章目录 1. 概要2. EnableScheduling 注解3. Scheduled 注解4. postProcessAfterInitialization 解析4.1 createRunnable 5. 任务 Task 和子类6. ScheduledTaskRegistrar6.1 添加任务的逻辑6.2 调度器初始化6.3 调用时机 7. taskScheduler 类型7.1 ConcurrentTaskScheduler7.2…

理解数据结构 hashtable的简易理解思路

结构图 为了方便演示,下图中分区算法为下标取模 private int hashFun(int id) {//使用 hash并取模return id % size;}Hashtable的结构如图所示:是一个数组(元素为各个链表的表头) 多个链表组成,也就是说 hashtable 结…

java 通过jdbc连接sql2000方法

1、java通过jdbc连接sql2000 需要到三个jar包:msbase.jar mssqlserver.jar msutil.jar 下载地址:https://download.csdn.net/download/sunfor/90145580 2、将三个jar包解压到程序中的LIB下: 导入方法: ①在当前目录下&#xff…

[蓝桥杯 2019 国 B] 排列数

目录 前言 题解 思路 疑问 解答 前言 对于本篇文章是站在别人的基础之上来写的,对于这道题作为2019年国赛B组的最难的一题,他的难度肯定是不小的,这道题我再一开始接触的时候连思路都没有,也是看了两三遍别人发的题解&#x…

VCU--新能源汽车VCU电控开发

课程目标 信号采集的原理 使用simulink处理信号 做一个MIL仿真测试 零、参考 构建Simulink模型——CAN通信 | chans Bloggerrrrr 一、功能概述 1.硬线信号 定义:通过物理导线直接连接的电气信号,一根导线传输一个信号。本质:是一种点对…

Codeforces Round 993 (Div. 4)题解

A. Easy Problem 思路&#xff1a;经过看了一眼&#xff0c;我们发现&#xff0c;ab的和一定是n&#xff0c;且两个都是正整数&#xff0c; 所以a的范围就是从1~n-1 所以输出n-1即可 #include<bits/stdc.h> using namespace std; #define int long long int t; int n…

日期格式、JSR303校验

日期格式 public class Monster() {DateTimeFormat(pattern "yyyy-MM-dd")private Date birthday; } 输入&#xff1a;2024-11-12&#xff0c; 输出&#xff1a;Monster{birthdaySun Nov 12 00:00:00 CST 2024} public class Monster {JsonFormat(pattern &…

数据结构——队列的模拟实现

大家好&#xff0c;上一篇博客我带领大家进行了数据结构当中的栈的模拟实现 今天我将带领大家实现一个新的数据结构————队列 一&#xff1a;队列简介 首先来认识一下队列&#xff1a; 队列就像我们上学时的排队一样&#xff0c;有一个队头也有一个队尾。 有人入队的话就…

红外测温原理及设计

1、红外测温仪 经过新冠疫情的洗礼&#xff0c;大家对红外测温枪应该不陌生。在公共场所、企业单位乃至家庭门口&#xff0c;它都成了守护健康的第一道防线。然而&#xff0c;关于红外测温枪有个细节常被误解——它那闪烁的红点&#xff0c;大部分人会认为就是用这个红色的点测…

了解垃圾回收机制与内存泄漏

目录 一、垃圾回收机制的基本原理 &#xff08;1&#xff09;基本原理理解 &#xff08;2&#xff09;回收 二、垃圾回收的算法 1.标记清除算法 2.引用计数算法 三、减少垃圾回收 &#xff08;1&#xff09;减少对象创建 &#xff08;2&#xff09;优化数据结构及内存…

Stable Diffusion Controlnet常用控制类型解析与实战课程 4

本节内容&#xff0c;是stable diffusion Controlnet常用控制类型解析与实战的第四节课程。上节课程&#xff0c;我们陆续讲解了几个与图像风格约束相关的控制类型&#xff0c;本节课程我们再学习一些实用价值较高的控制类型&#xff0c;看一看他们提供了哪些控制思路。 一&…

C++之二:类和对象

相关代码&#xff1a; C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析求解问题的步骤&#xff0c;调用函数逐步解决问题。 C是面向对象的&#xff0c;关注的是对象&#xff0c;将一件事情的完成分为不同的几个参与者&#xff08;对象&#xff09;&#xff0c;靠…