Zabbix使用Python脚本作为自定义监控项

2021-09-17 2,677 0

本案例是使用Zabbix的Agent端作为数据源,把脚本文件放再Agent所在主机下,向Servier端发送数据,前提是你的这个agent必须在你的server端下面,不然后面无法进行了;

有几个需要注意的地方:

0,保险起见,把你的zabbix_agent.conf 以及zabbix_agentd.d 这些所有权限都设置为777,这样就不会有乱七八糟的权限问题了

1,再你的zabbix_agentd.conf 配置中要打开,默认是没打开的,这个功能就用不了,这句话意思是要加载zabbix_agentd.d这个目录下的所有 以conf 结尾的配置文件

Zabbix使用Python脚本作为自定义监控项

Include=/etc/zabbix/zabbix_agentd.d/*.conf

2,配置文件中需要写你的脚本是啥,格式固定UserParameter打头,如下:

UserParameter=amq[*],/etc/zabbix/zabbix_agentd.d/zabbix_monitor_amq.sh $1 $2

UserParameter=stm,python3 /etc/zabbix/zabbix_agentd.d/python_script_test.py topology
UserParameter=stm_lag,python3 /etc/zabbix/zabbix_agentd.d/python_script_test.py lag

在这里我是放了三个自定义监控项的脚本,一个shell的,一个python的,传递不同参数就会出来不同的结果;

3,你的脚本文件中,必须每次只能输出一个数据(至少我是这么做的,如果你有多余精力,可以深入探究下能否输出多个数据),我个人理解是,监控项的定义是在每个时间点都会输出一个监控项的值,所以这里必须有且只有一个输出项,在监控页面才会显示时间线上的这些值

Shell中的echo
python中的print()

4,python脚本在Linux命令行中获取参数格式如下,传递参数格式:python3 你的脚本所在路径/python_script_name_.py parameterName  如果是想要获取多个参数, 点击参考博客内容

# 导入sys模块
import sys
arg=sys.argv[1]

5,确保你的第四步,在命令行中是可以运行,且每次都能输出一个值的情况下,取zabbix的前端配置这个自定义监控项:配置/主机/ 在这里找到你的自定义脚本所在的主机地址 点击监控项,右上角->创建监控项

名字自己起,待会儿会显示在前端页面上,键值这里注意了

# 键值
对应的是你刚才配置的zabbix_agent.d目录下的你的.conf 配置文件中指定的脚本所在的那一行

#比如:

UserParameter=stm,python3 /etc/zabbix/zabbix_agentd.d/python_script_test.py topoloty

UserParameter=amq[*],/etc/zabbix/zabbix_agentd.d/zabbix_monitor_amq.sh $1 $2


# 如上,第一个是Python版的,在这里我们直接把参数传在配置文件中了,当然你也可以像第二个那样,amq[*]
amq就是前端中的键[] * 就是值,$1 和 $2 就是前端要传过去的两个值

Shell脚本对应的前端传递键值

 Python脚本对应的前端,只需要传递键就行

 创建完之后就可以回到监控项列表,看到你的那个自定义的监控项,我这里是对应的上面两个

 到这里就配置完了

参考博文:

编写python脚本,使用zabbix进行监控_Valiant 的博客-CSDN博客_python写zabbix脚本

相关文章

集群压测体系搭建-实时监控平台(2)
Selenium+Jenkins+Allure 自动化测试并产生报告
Jenkins结合飞书和Metersphere工具链
Jenkins和Selenium WebDriver集成方法
Selenium 使用方法
UI自动化框架Selenium和Cypress对比

发布评论