Zabbix-通过JsonPath实现监控-成功案例

Zabbix-通过JsonPath实现监控-成功案例,第1张

Zabbix-通过JsonPath实现监控-成功案例
  • 需求背景
    • 同事的检查结果
      • 说明
  • 实现方法
    • 一,编写脚本
      • 1.1 脚本功能
      • 1.2 脚本内容
      • 1.3 脚本执行结果
    • 二,修改zabbix-agent2配置文件
    • 三,重启zabbix-agent2
    • 四,创建监控模板
      • 4.1 创建模板
      • 4.2 创建监控项
      • 4.3 创建自动发现规则
      • 4.4 创建监控项原型
      • 4.5 创建触发器原型
    • 五,被控主机关联模板
    • 六,验证
      • 6.1 自发现监控项
      • 6.2 最新数据
      • 6.3 告警信息

需求背景

在当前的工作环境里,有着应用节点号的概念,每个部署单元的应用节点号是不同的。应同事需求,希望能通过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():
    lld = []
    for k in ap_info['result'].keys():
        lld.append({"{#AP_NUM}":k})
    print(json.dumps(lld))

def get_state():
    res = {}
    for k,v in ap_info['result'].items():
        tmp = {}
        tmp["state"] = int(v)
        res[k] = tmp
    print(json.dumps(res))


def main():
    if sys.argv[1] == "lld.ap":
        get_num()
    if sys.argv[1] == "get.state":
        get_state()

if __name__ == "__main__":
    main()
1.3 脚本执行结果
[root@zabbix-ys ~]# /etc/zabbix/python374/bin/python3 /etc/zabbix/scripts/check_ap.py lld.ap
[{"{#AP_NUM}": "130016"}, {"{#AP_NUM}": "130017"}, {"{#AP_NUM}": "130018"}]

[root@zabbix-ys ~]# /etc/zabbix/python374/bin/python3 /etc/zabbix/scripts/check_ap.py get.state
{"130016": {"state": 1}, "130017": {"state": 1}, "130018": {"state": 0}}

二,修改zabbix-agent2配置文件
[root@zabbix-ys ~]# vim /etc/zabbix/zabbix_agent2.d/check_ap.conf
UserParameter=ap_check_cmd[*],/etc/zabbix/python374/bin/python3 /etc/zabbix/scripts/check_ap.py 
三,重启zabbix-agent2
[root@zabbix-ys ~]# systemctl restart zabbix-agent2.service
四,创建监控模板

由于显示的原因,只截取了模板中重要部分。

4.1 创建模板

4.2 创建监控项

用于获取应用节点状态的详细信息。

4.3 创建自动发现规则

用于获取所有的应用节点号,以便创建监控项。

4.4 创建监控项原型

使用“相关项目”类型,让自动发现规则与模板中“获取节点状态信息”监控项相结合,创建自发现监控项原型。

注意此时要在进程中,设置JSONPath,通过变量{#AP_NUM}取state的值

4.5 创建触发器原型

五,被控主机关联模板

六,验证 6.1 自发现监控项

6.2 最新数据

6.3 告警信息

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1294880.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存