1. 程式人生 > >Zabbix監控Low level discovery實時監控網站URL狀態

Zabbix監控Low level discovery實時監控網站URL狀態

discovery 分鐘 pre local 自定義 site 端口 ++ key值

今天我們來聊一聊Low level discovery這個功能,我們為什麽要用到loe level discovery這個功能呢?

很多時候,在使用zabbix監控一些東西,需要對類似於Itens進行添加,這些items具有一些共同特性,

如果說某些特定的參數是變量,而其他設置都一樣,例如:一個程序有多個端口,需要多端口進行監控並配置Itmes,還有磁盤分區,·網卡名稱等等,

都是具有不確定性,如果我們配置固定的Items的話,會出現無法通用的問題,所以呢,我們需要來了解一下low level discovery這個功能

Low level discovery的key返回值是一個JSON格式(如果是自定義的話,可以通過網站驗證獲取的值是否為正確的JSON格式的數)

#自動發現特定的變量名稱

#添加對變量的Itmes

下面我們來一個現實中的案例:

業務需求:

現在業務上用有打量的URL需要監控,形式如:http:www.xxx.com,要求URL狀態不為200時發出報警

需求分析 :

具有打量的URL,且URL經常變化,需要增加URL即可完成監控

解決方案:上述提到,URL經常發生變化,但是其他狀態不變,這個是夠剛好可以用zabbix的low level discovery功能來實現這一需求

思路:

1)既然有大量的URL需要監控,我們可以將URL域名地址寫入一個配置文件裏,方便後續調用監控

2)zabbix上面沒有監控URL的模板和監控項,因此只能自定義,寫一個自動發現的腳本,該腳本是JSON格式:主要用於調用 URL並獲取URL的狀態碼

3)通過 zabbix_get在server端測試能否正確獲取key值(URL狀態碼)

4)WEB頁面添加Low level discovery;創建監控模板,監控項,觸發器類型以及圖形等;實時監控狀態碼並做出相應的告警

【zabbix-agent配置文件】

# grep -vE "(#|^$)" /usr/local/zabbix/etc/zabbix_agentd.conf

LogFile=/tmp/zabbix_agentd.log
EnableRemoteCommands=0 #啟用遠程命令
Server=192.168.37.129
StartAgents=8
ServerActive=192.168.37.129
Hostname=192.168.37.130
Timeout=8 #超時時間改為8即可,如果server端zabbix_get測試獲取鍵值時提示超時,可進行修改調整
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/web_site_discovery.conf #子配置文件,還有一種方式就是直接在agent.conf配置文件中的“UserParameter=”寫入對應的鍵值
UnsafeUserParameters=1

【自定義Low level discovery自動發現腳本】

mkdir -p /usr/local/zabbix/etc/scripts/

vim /usr/local/zabbix/etc/scripts/Web.txt #網站URL存放文件,將我們需要的監控的域名寫入該自定義配置文件中

http://www.hexun.com
http://www.baidu.com
http://www.weibo.com

vim /usr/local/zabbix/etc/scripts/web_site_code_status

#!/bin/bash
#Monitoring website domain name URL change script
#mail:[email protected]
#QQ:1261813048
#/usr/bin/curl -o /dev/null -s -w %{http_code} http://$1/
Web_SITE_discovery(){
Web_SITE=($(cat /usr/local/zabbix/etc/scripts/Web.txt | grep -v "^#"))
printf ‘{\n‘
printf ‘\t"data":[\n‘
for((i=0;i<${#Web_SITE[@]};++i))
{
num=$(echo $((${#Web_SITE[@]}-1)))
if [ "$i" != ${num} ];
then
printf "\t\t{ \n"
printf "\t\t\t\"{#SITENAME}\":\"${Web_SITE[$i]}\"},\n"
else
printf "\t\t{ \n"
printf "\t\t\t\"{#SITENAME}\":\"${Web_SITE[$num]}\"}]}\n"
fi
}
}
web_site_code (){
# /usr/bin/curl -o /dev/null -s -w %{http_code} http://$1
/usr/bin/curl -I -m 10 -o /dev/null -s -w %{http_code}"\n" http://$1
}

case "$1" in
web_site_discovery)
Web_SITE_discovery
;;
web_site_code)
web_site_code $2
;;
*)
echo "Usage:$0 {web_site_discovery |web_site_code [URL]}"
;;
esac

# chmod 755 /usr/local/zabbix/etc/scripts/web_site_code_status #腳本權限給予755

【自定義Key值配置文件】

# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/web_site_discovery.conf #子配置文件,已在agent.conf配置文件中Include中引用

UserParameter=web.site.discovery,/usr/local/zabbix/etc/scripts/web_site_code_status web_site_discovery
UserParameter=web.site.code[*],/usr/local/zabbix/etc/scripts/web_site_code_status web_site_code $1

測試:

在server端·測試agent端自定的key值能否獲取到?ok~從截圖看出,都能獲取到url域名狀態碼

技術分享圖片

【Web頁面添加Low level discory】

1)創建自定義模板

Configuration(配置)-----Templates(模板)----Create templates(創建模板)

技術分享圖片

創建自動發現規則

技術分享圖片

技術分享圖片

創建應用集

技術分享圖片

【基於自動發現規則基礎創建監控項原型】

Ps:這裏的鍵值一定要與之對應

技術分享圖片

技術分享圖片

創建觸發器類型,設置多梯度告警檢測,

技術分享圖片

技術分享圖片

技術分享圖片

設置不同周期告警。3,10,15分鐘三種不同的故障級別

技術分享圖片

【創建圖像原型】

技術分享圖片

到目前為止,整個模板已經構建完成~如下圖所示

技術分享圖片

我們將這個模板鏈接到某臺Agent端的主機上,等待30s左右時間,我們會發現,已經存在添加的三個站點的圖形 了,

技術分享圖片

Zabbix監控Low level discovery實時監控網站URL狀態