Finer04's Blog
首页
乱写一通
脑洞破文
随便谈谈
当前播放.page
Zabbix 直接使用 Prometheus 中心端拿所有 Target 的监测数据
Finer04
February 3, 2024
1782 字
文章目录
明明有 Prometheus 了,为什么要需要用 Zabbix 做监控,还要拖他的数据?这不是牛头人吗?你说得对,不是所有人都玩懂所有监控平台,而且我管理团队都是尽可能降低大家的操作门槛,能用 Zabbix 就用 Zabbix 吧,至少界面没那么抽象。虽然可以把数据集成到 Grafana 并实现告警,但我是 oldschool,能集成在一个平台那肯定最好的! ## 大佬们的教程 其实网络上已经有很多 Zabbix 拖 Prometheus 数据的教程,这些大佬的教程已经说得很够了,所以文本不复述了,我也是抄作业的,这里先放几个之前参考的教程吧。 - [zabbix 集成 prometheus 数据](https://www.cnblogs.com/liugp/p/17328027.html) - [Zabbix6.0 LTS 采集 Prometheus node_exporter 指标及自动发现](https://cloud.tencent.com/developer/article/2221576) ## 我的问题 但这些教程有个问题就是,他们是只拿本端的 metrics 数据,也就是说我直接访问中心端的数据源结果只有本端的监测数据,没有分布节点的数据(虽然可以在管理页面的 API 调数据但也麻烦)。在 Grafana 做普罗米修斯的监控我还以为数据源可以直接拿所有监测数据,后面才知道是调用了 PromQL 拿节点的数据 。如果在其他节点装了插件,我在 Zabbix 拿数据还得把 URL 改成对应 Target 的 URL 才行。好其实我一个一个 target 做 raw 监控项也行,但是我遇到的问题是,远程 Prometheus 的数据是厂商自己做的,所有分布节点都弄了密码不同的基础加密,我一台一台加权限整太麻烦了。好在厂商的中心端我知道权限了,在中心端就可以获取所有目标节点的数据。 既然可以用 API 查询,那能不能让 Prometheus 输出所有节点的 metrics 数据呢?看了下 Stackoverflow 刚好有一个回答能满足我的需求: [Prometheus endpoint of all available metrics](https://stackoverflow.com/questions/58319911/prometheus-endpoint-of-all-available-metrics). 这个 API 可以直接输出所有节点的监控项和值,我只要将上面的教程的 HTTP 代理的 URL 改成 `federate` 地址就行了。 关于 Federation 机制可以查阅:[Prometheus的Federation机制配置](https://blog.csdn.net/lixinkuan328/article/details/113680134),就是可以拿异地节点的数据。 ### 元数据监控项设置 先建议测试下 `curl -G http://HOSTIP:9090/federate -d 'match[]={__name__!=""}'` 确认有没有自己想要的数据在不在里面,在的话就可以设置了。 - 名称:所有 metrics 元数据 - 键值:node_exporter_key - 类型:HTTP 代理 - URL:http://{HOST.IP}:9090/federate - 查询字段: - 名称:match[] - 值:{__name__!=""} - 下面的根据需求自己定吧,反正我不存进历史数据,如下图所示  ### 验证 其他监控项就跟上面大佬们的教程做就行了,预处理的 `prometheus to json` 或 `prometheus模式` 跟教程一样。可以正常拿数据了。 
评论已关闭
▲ Top
评论已关闭