ZABBIX监控 EMQTT服务思路及实施全过程(含脚本及模板)

系统环境

ZABBIX服务器:centos7,zabbix6.4,jq,zabbix-sender-3.0.5
EMQX服务器:centos7, emqx4.4.3

监控思路

通过 EMQX 的 API 获取实时监控数据(包括统计信息和指标),然后将这些数据发送到 Zabbix 服务器进行监控。具体来说,脚本执行了以下操作:

  • 从 EMQX API 获取统计信息(stats)、指标(metrics)和节点信息(nodes)。
  • 解析这些 JSON 数据,并提取出所需的监控指标。
  • 通过 Zabbix Sender 将提取的指标发送到 Zabbix 服务器。

实施过程

数据获取

脚本使用 curl 命令向 EMQX 服务器的 API 发送请求,获取以下三类数据,当然,也可以自行添加更多的需求指标:

Stats: 包含有关主题、订阅、连接等的统计信息。
Metrics: 包含有关消息传递、连接数、数据包等的详细指标。
Nodes: 包含节点的状态信息,如版本、运行时间、内存使用情况等。

可参考官方接口文档:https://docs.emqx.com/zh/emqx/v4.4/advanced/http-api.html#get-api-v4

请求示例,"$2:$3"是账号密码,$4是EMQX服务器IP

脚本内的命令示例
stats=$(curl --basic -u "$2:$3" -k -s "http://$4:8081/api/v4/stats/")
metrics=$(curl --basic -u "$2:$3" -k -s "http://$4:8081/api/v4/metrics/")
nodes=$(curl --basic -u "$2:$3" -k -s "http://$4:8081/api/v4/nodes/")手动执行的命令示例
curl --basic -u "admin:password" -k -s "http://192.168.1.1:8081/api/v4/nodes"

数据解析和处理,发送
使用 jq 工具,脚本从获取的 JSON 数据中提取出特定的键值对。这些键值对由 STATS_KEYS、METRICS_KEYS 和 NODE_METRICS_KEYS 数组定义。脚本遍历这些数组,提取相应的值。使用 zabbix_sender 工具将提取的数据发送到 Zabbix 服务器。每个数据项都通过指定的 Zabbix 主机名、键名和数据值进行发送。例如:

例如,处理 stats 数据的代码如下,$key对应相关接口指标也是是监控项的键名,$1是zabbix服务器IP,$out 是从 EMQX API 返回的数据值

for key in "${STATS_KEYS[@]}"; doout="$(jq -r --arg arg "$key" '.data[0].stats[$arg]' <<< "$stats")"zabbix_sender -z 127.0.0.1 -s "$1" -k "emqtt[$key]" -o "$out" > /dev/null 2>&1
done

完整的监控脚本如下

放在zabbix服务器的 /usr/local/zabbix/share/zabbix/externalscripts 路径下,需要赋予执行权限chmod +x 脚本名以及加到zabbix用户组chown zabbix:zabbix 脚本名

#!/bin/bash
#set -x# 更新 STATS_KEYS 以匹配 EMQX API 返回的 stats 数据
STATS_KEYS=("topics.count""topics.max""subscriptions.shared.count""subscriptions.shared.max""subscriptions.count""subscriptions.max""subscribers.count""subscribers.max""sessions.count""sessions.max""routes.count""routes.max""retained.count""retained.max""live_connections.count""live_connections.max""connections.count""connections.max""channels.count""channels.max"
)# 更新 METRICS_KEYS 以匹配 EMQX API 返回的 metrics 数据
METRICS_KEYS=("messages.acked""packets.publish.received""messages.dropped.no_subscribers""packets.publish.sent""delivery.dropped.qos0_msg""packets.connect.received""packets.pubcomp.received""delivery.dropped.queue_full""session.resumed""packets.received""packets.unsubscribe.received""delivery.dropped""messages.retained""packets.pubrel.missed""packets.pubrec.sent""packets.pubrec.received""bytes.sent""messages.dropped.await_pubrel_timeout""packets.auth.sent""packets.pubrec.inuse""packets.puback.received""messages.qos1.sent""session.created""messages.qos2.sent""session.terminated""client.connect""packets.unsuback.sent""packets.puback.missed""client.subscribe""bytes.received""packets.disconnect.sent""packets.publish.auth_error""packets.pingresp.sent""packets.pubrel.sent""client.acl.deny""session.discarded""messages.received""packets.subscribe.auth_error""packets.publish.error""packets.publish.dropped""messages.delayed""messages.delivered""messages.qos2.received""client.connack""messages.sent""packets.pubrel.received""client.unsubscribe""packets.puback.inuse""client.authenticate""packets.connack.error""client.acl.cache_hit""delivery.dropped.expired""client.auth.anonymous""messages.forward""packets.pingreq.received""packets.pubrec.missed""packets.pubcomp.inuse""messages.qos1.received""client.check_acl""messages.publish""packets.publish.inuse""packets.unsubscribe.error""packets.disconnect.received""packets.subscribe.error""packets.auth.received""packets.connack.sent""packets.puback.sent""client.disconnected"

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

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

相关文章

redis哨兵启动出现 +sdown master mymaster 192.168.x.x

场景&#xff1a; 搭建好哨兵之后&#xff0c;哨兵一启动&#xff0c;过了30秒就会判断master sdown&#xff0c;但是检查配置是没有问题。 日志&#xff1a; Redis-master启动日志&#xff1a;没看到任何异常&#xff0c;所以master无异常 Redis-哨兵启动日志&#xff1a; …

(已解决)vscode如何传入argparse参数来调试/运行python程序

文章目录 前言调试传入参数运行传入参数延申 前言 以前&#xff0c;我都是用Pycharm专业版的&#xff0c;由于其好像在外网的时候&#xff0c;不能够通过VPN来连接内网服务器&#xff0c;我就改用了vscode。改用了之后&#xff0c;遇到一个问题&#xff0c;调试或者运行python…

QT编译之后的debug包下运行程序双击运行出现无法定位程序输入点__gxx_personlity_seh0于动态链接库

1.出现这个错误的原因是&#xff1a; 缺少如下文件&#xff1a; 2.解决方法&#xff1a; 在运行程序.exe所在的目录执行&#xff1a;windeployqt untitled.exe&#xff08;指打包的运行程序&#xff09; 3.如果执行提示由于找不到qt5core.dll,无法继续执行代码和无法识别win…

pgvector docker版安装;稀疏向量使用;psycopg2 python连接使用

参看: https://cloud.tencent.com/developer/article/2359831 https://hub.docker.com/r/pgvector/pgvector/tags https://github.com/pgvector/pgvector 一、安装 拉取0.7版本 docker pull pgvector/pgvector:0.7.4-pg16运行: docker run --name pgvector -v $(pwd)/dat…

linux StarRocks 安装

一、检查服务器是否支持avx2&#xff0c;如果执行命令显示空&#xff0c;则不支持&#xff0c;那么安装后无法启动BE cat /proc/cpuinfo |grep avx2我的支持显示如下&#xff1a; 二、安装 docker run -p 9030:9030 -p 8030:8030 -p 8040:8040 -p 9001:9000 --privilegedtrue…

随机掉落的项目足迹:Vue3 + wangEditor5富文本编辑器——toolbar.getConfig() 查看工具栏的默认配置

问题引入 小提示&#xff1a;问题引入是一个讲故事的废话环节&#xff0c;各位小伙伴可以直接跳到第二大点&#xff1a;问题解决 我的项目不需要在富文本编辑器中引入添加代码块的功能&#xff0c;于是我寻思在工具栏上把操作代码的菜单删一删 于是我来到官网文档工具栏配置 …

MyBatis 深层次 Map 自动嵌套:解锁数据映射新境界

在 Java 开发的征程中&#xff0c;MyBatis 以其强大的数据库映射功能而备受青睐。其中&#xff0c;深层次 Map 自动嵌套这一特性更是为开发者带来了诸多惊喜与便利。 前提&#xff1a;首先开启自动映射&#xff01; java和mysql命名规则不一样&#xff0c;每次在mybatis中起别…

我的AI工具箱Tauri版-MicrosoftTTS文本转语音

本教程基于自研的AI工具箱Tauri版进行MicrosoftTTS文本转语音服务。 MicrosoftTTS文本转语音服务 是自研的AI工具箱Tauri版中的一款功能模块&#xff0c;专为实现高效的文本转语音操作而设计。通过集成微软TTS服务&#xff0c;用户可以将大量文本自动转换为自然流畅的语音文件…

9/24作业

1. 分文件编译 分什么要分文件编译&#xff1f; 防止主文件过大&#xff0c;不好修改&#xff0c;简化编译流程 1) 分那些文件 头文件&#xff1a;所有需要提前导入的库文件&#xff0c;函数声明 功能函数&#xff1a;所有功能函数的定义 主函数&#xff1a;main函数&…

828华为云征文|使用Flexus X实例集成ES搜索引擎

目录 一、应用场景 1.1 Flexus X实例概述 1.2 ES搜索引擎 二、安装相关服务 2.1 安装Elasticsearch7.17.0 2.2 安装kibana7.17.0 三、开通安全组规则 四、整体感受 4.1 Flexus X实例 4.2 使用感觉 一、应用场景 1.1 Flexus X实例概述 Flexus X实例是华为云推出的一款…

力扣最热一百题——最小覆盖子串

目录 题目链接&#xff1a;76. 最小覆盖子串 - 力扣&#xff08;LeetCode&#xff09; 题目描述 示例 提示&#xff1a; 解法一&#xff1a;滑动窗口 1. 初始化 2. 构建 mapT 3. 滑动窗口 4. checkT 方法 5. 返回结果 Java写法&#xff1a; 运行时间 C写法&#x…

Hbase日常运维

1 Hbase日常运维 1.1 监控Hbase运行状况 1.1.1 操作系统 1.1.1.1 IO 群集网络IO&#xff0c;磁盘IO&#xff0c;HDFS IO IO越大说明文件读写操作越多。当IO突然增加时&#xff0c;有可能&#xff1a;1.compact队列较大&#xff0c;集群正在进行大量压缩操作。 2.正在执行…

微服务Docker相关指令

1、拉取容器到镜像仓库 docker pull xxx //拉取指令到 镜像仓库 例如 docker pull mysql 、docker pull nginx docker images //查看镜像仓库 2、删除资源 2.1、删除镜像仓库中的资源 docker rmi mysql:latest //删除方式一&#xff1a;格式 docker rmi 要…

安卓系统常见问题如native crash,卡顿卡死定位工具命令技巧-android framework实战开发

背景&#xff1a; 有学员朋友近来有问到一些安卓系统开发过程中的一些核心小技能小技巧等&#xff0c;比如native crash在企业里面该如何准确定位具体代码函数&#xff0c;程序卡住&#xff0c;或者长时间没反应&#xff0c;想要看看卡在代码的哪里。针对以上的一些问题&#…

408选择题笔记|自用|随笔记录

文章目录 B树&#xff1a;访问节点建堆&#xff01;将结点插入空堆广义指令求每个子网可容纳的主机数量虚拟内存的实现方式文件目录项FCB和文件安全性管理级别索引文件三种存取方式及适用器件成组分解访问磁盘次数 C语言标识符 最小帧长物理传输层介质 局域网&广域网考点总…

AIGC基础工具-用于数据分析和数据处理的核心库Pandas介绍

文章目录 1. Pandas 的核心数据结构1.1 Series创建 SeriesSeries 重要属性示例 1.2 DataFrame创建 DataFrameDataFrame 重要属性示例 2. Pandas 数据的导入与导出2.1 读取 CSV 文件2.2 读取 Excel 文件2.3 写入 CSV 文件2.4 读取 JSON 文件 3. Pandas 的数据操作3.1 数据选择和…

IPsec-Vpn

网络括谱图 IPSec-VPN 配置思路 1 配置IP地址 FWA:IP地址的配置 [FW1000-A]interface GigabitEthernet 1/0/0 [FW1000-A-GigabitEthernet1/0/0]ip address 10.1.1.1 24 [FW1000-A]interface GigabitEthernet 1/0/2 [FW1000-A-GigabitEthernet1/0/2]ip address

开源 AI 智能名片与 S2B2C 商城小程序:嫁接权威实现信任与增长

摘要&#xff1a;本文探讨了嫁接权威在产品营销中的重要性&#xff0c;并结合开源 AI 智能名片与 S2B2C 商城小程序&#xff0c;阐述了如何通过与权威关联来建立客户信任&#xff0c;提升产品竞争力。强调了在当今商业环境中&#xff0c;巧妙运用嫁接权威的方法&#xff0c;能够…

AI 智能名片链动 2+1 模式商城小程序中的体验策略

摘要&#xff1a;本文探讨了在 AI 智能名片链动 21 模式商城小程序中&#xff0c;体验策略如何服务于用户体验&#xff0c;以及与产品策略的区别。重点分析了该小程序如何通过关注用户在使用过程中的流畅度、视觉体感等方面&#xff0c;实现“让用户用得爽”的目标&#xff0c;…

JS中的事件和DOM操作

一、事件[重要] 1、 事件介绍 事件: 就是发生在浏览器(页面)上一件事,键盘事件,鼠标事件,表单事件,加载事件等等 2、 事件绑定方式 事件要想发生,就得将事件和标签先绑定(确定哪个标签发生什么事情,又有什么响应) 一个完整的事件有三部分 事件源(标签),哪里发出的事. 什么事(…