栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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 $1
三,重启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 告警信息

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/923059.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号