ZABBIX結合自動發現機制實現站點/hs頁面健康監控
需求:爲了防止業務假死,我們需要對服務hs頁面進行監控
前提:項目標準化程序較高,已經規劃/hs頁面的使用
說明:ZABBIX本身也有web監控項,但是不夠靈活,每次配置一個域名都需要一連串配置纔可以,在微服務站點多切變化頻繁時管理將會十分低效
通過自動發現監控的邏輯:
1、zabbix通過腳本或者其他形式首先發現識別json域名列表進行引用
2、當zabbix自動發現完成,將發現的值配置爲變量,將變量配置爲item中
要點:自動發現需要對發現的內容json化,以便於ZABBIX識別。
亮出配置文件:
UserParameter=webhs.discovery,/bin/cat /etc/zabbix/scripts/domain.list ##用於獲取域名列表
UserParameter=webhs[*],/bin/bash /etc/zabbix/scripts/webhs.sh $1 ##用於探測域名是否正常
準備需要被監控的站點json文件:
## 這裏的json文件請務必保證格式,建議編寫後在http://json.cn/進行測試
## 獲取域名的形式可以通過腳本調CMDB接口獲得,也可以自己編寫json文件,通過cat命令調用,但輸出請嚴格保證json
## json文件位置與配置文件中cat調用的相對應
[root@mgt-elastalert-server1 scripts]# cat domain.list
{
"data": [
{"{#DOMAIN}":"userinfo.prod.xxxx.com"},
{"{#DOMAIN}":"gateway.xxxx.com"},
{"{#DOMAIN}":"shenjing.xxxx.com"},
{"{#DOMAIN}":"gatewayadmin.prod.xxxx.com"},
...省略很多,大概一百多個
{"{#DOMAIN}":"ppdquery.prod.xxxx.com"}
]
}
測試zabbix-server是否可以正常拿到域名列表信息
[root@mgt-zabbix-server1 ~]# zabbix_get -s 10.3.2.105 -k webhs.discovery
{
"data": [
{"{#DOMAIN}":"userinfo.prod.tarsapi.com"},
{"{#DOMAIN}":"gateway.tarsplus.com"},
{"{#DOMAIN}":"shenjing.tarsplus.com"},
{"{#DOMAIN}":"gatewayadmin.prod.tarsapi.com"},
...省略很多,大概一百多個
{"{#DOMAIN}":"ppdquery.prod.xxxx.com"}
]
}
準備檢測域名健康狀態的腳本
域名列表可以拿到後配置檢測健康狀態的腳本。原理就是zabbix拿到域名,然後將域名通過位置變量傳遞給檢測腳本執行得到返回值(失敗返回1,成功返回0),zabbix服務器根據返回值制定觸發器
[root@mgt-elastalert-server1 scripts]# vim webhs.sh ## 保證zabbix有可執行x權限
#!/bin/bash
result=`curl -I -m 10 -o /dev/null -s -w %{http_code} ${1}/hs` ##${1}位置變量
if [ $result -eq 200 ];then
echo "0"
elif [ $result -eq 302 ];then
echo "0"
elif [ $result -eq 301 ];then
echo "0"
else
echo "1"
fi
配置ZABBIX平臺方面
一切準備就緒,新建ZABBIX模板(Templates)並配置自動發現(Discovery)