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,一经查实,立即删除!

相关文章

[leetcode]112_路径总和_判断是否存在

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。 判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。 如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 叶子节点 是指没有子节点…

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…

常见服务端口号和中文大全

ServiceChinesePortExplainFTP文件传输协议20数据FTP文件传输协议21连接SSH安全外壳协议22SMTP简单邮件传输协议25DNS域名解析协议53DHCP动态主机配置协议67服务端DHCP动态主机配置协议68客户端HTTP超文本传输协议80Kerberos网络认证协议88POP3邮局协议110RPC远程过程调用111IM…

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

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

MATLAB与Docker Compose:实现微服务API文档的自动化部署与Vue.js集成

在微服务架构中&#xff0c;服务之间的通信和协作是构建复杂应用的关键。随着服务数量的增加&#xff0c;管理和维护这些服务的API文档变得尤为重要。MATLAB作为一个强大的数学计算和可视化工具&#xff0c;其在微服务API文档的自动化部署中扮演着重要角色。本文将详细介绍如何…

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中起别…

动态规划part07

LC 198.打家劫舍 关键&#xff1a;dp[i]的含义是考虑下标i及之前&#xff0c;能偷的最多的钱是多少&#xff0c;那么对于下标i 有 两种情况&#xff0c;偷或不偷 &#xff0c; 这又依赖于前一个房间&#xff0c;和前前个房间是否被偷。若偷 i &#xff0c; 那么dp[i] dp[i-2]…

我的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.正在执行…

SkyWalking 简介

SkyWalking是什么 skywalking是一个国产开源框架,2015年由吴晟开源 , 2017年加入Apache孵化器。skywalking是分布式系统的应用 程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。它是一款优秀的 APM(Application Performance Manag…

LLM - 理解 多模态大语言模型(MLLM) 的 对齐微调(Alignment) 与相关技术 (五)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/142354652 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 多模态大语言模型(MLLM) 系列: 理解 多模态大语言模型(MLLM) 的 发展(…

一步一步优化一套生成式语言模型系统

以下是这套生成式语言模型解决任务的流程图概述&#xff1a; #mermaid-svg-keXg8yGoCyObKDtu {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-keXg8yGoCyObKDtu .error-icon{fill:#552222;}#mermaid-svg-keXg8yGoCyO…

微服务Docker相关指令

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