zabbix 之 low level discovery

仅提供一个思路,怎么去实现这种功能
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

相关文章
相关标签/搜索