仅提供一个思路,怎么去实现这种功能
1:Configuration--Templates客户端配置
1.1:找到zabbix目标客户端,编写脚本获取须要的数据
vim web_site_code_status.py
#!/usr/bin/env python
#coding:utf-8
import os
import jsonpython
r = open('/etc/zabbix/web.txt','r').read().split()web
devices = []json
for devpath in r:
device = os.path.basename(devpath)
devices += [{'{#SITENAME}':device}]
print json.dumps({'data':devices},sort_keys=True,indent=7,separators=(',',':'))
####脚本不要放在Include=/etc/zabbix/zabbix_agentd.conf.d/ 开启的这个目录下
由于zabbix启动的时候会直接加载这个目录下面的全部文件,而咱们写的脚本不
符合key:value格式,加载会报错
配置文件加入:
UserParameter=web.site.discovery,/etc/zabbix/web_site_code_status.py
重启服务
在服务端作测试
测试:./zabbix_get -s IP -k web.site.discovery
输出:{
"data":[
{
"{#SITENAME}":"www.baidu.com"
},
{
"{#SITENAME}":"sina.com"
}
]
}
输出如上面的json格式就能够了vim
1.2:根据上面的输出来作判断,好比我这里作的是检测网址是否能正常打开
直接在客户端配置文件里面作配置,也能够本身写脚本,运行脚本返回一个值就行了
UserParameter=web.site.code[*],curl -o /dev/null -s -w %{http_code} http://$1
$1就是web.site.code这个key后面中括号带的变量,由于我这里只有一个,因此检测就只有一个$1curl
重启客户端服务
切换到服务端
测试:./zabbix_get -s IP -k web.site.code[www.baidu.com]
200
返回结果代表正常测试
2:客户端前期准备工做完成,如今开始web界面的配置
2.1:Configuration--Templates
建立模板以及关联主机url
2.2:建立Applications prototype
2.3:建立发现规则Discovery rules
这个key就是前面获取json数据的key web.site.discovery
而后指定脚本里面的宏变量来获取数据code
2.4:在Discovery rules里面建立Item prototypes
$1,就是宏变量代入以后的值
key就是web.site.code[*],这不过*号用宏变量代替,获取动态的值utf-8
2.5:在Discovery rules里面建立Trigger prototypes
2.6:在Discovery rules里面建立Graph prototypes
到此配置完毕,根据你配置的检测时间,去关联的主机里面查看有没有生成对应的items,trigger,graph