Zabbix-通过JsonPath实现监控-成功案例
需求背景
在当前的工作环境里,有着应用节点号的概念,每个部署单元的应用节点号是不同的。应同事需求,希望能通过zabbix对各部署单元中的应用节点号状态进行监控,应用组同事负责节点号状态的检查,我负责对其检查结果监控。经过沟通,应用组同事会将检查结果保存为Json,我通过Zabbix解析Json,从而实现监控。为此我觉得使用JsonPath的方式监控会更适合当前场景,在工作中实现了该监控功能后,特此记录、总结、分享。
同事的检查结果
[root@zabbix-ys scripts]# cat /tmp/ap_check.log
{"task":"Green Light","host":"192.168.1.10","date":"20220522010000","result":{"130016":"1","130017":"1","130018":"0"}}
说明
/tmp/ap_check.log文件是应用的检查结果,会存放在每台被控主机上。文件“result”中的key(“130016”,“130017”…)为应用节点号,“1”为正常,“0”为异常需要告警。
实现方法
一,编写脚本
1.1 脚本功能
通过解析/tmp/ap_check.log文件,生成两种方法“lld.ap”和“get.state”。“lld.ap”方法输出所有节点号,用于应用节点号的自动发现。“get_state”方法输出所有节点号及对应的状态信息,用于应用节点号监控项。
1.2 脚本内容
[root@zabbix-ys ~]# vim /etc/zabbix/scripts/check_ap.py
# -*- coding:utf-8 -*-
import json
import sys
with open("/tmp/ap_check.log","r") as f:
ap_info = json.load(f)
def get_num(