僅提供一個思路,怎麼去實現這種功能
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