zabbix实现对web的监控有两种方式实现,一种是自带的web scenarios,基本能够实现大部分web监控的需求,但是方便简易性差很多;另一种是利用脚本+lld,可以实现任一机
器上的所有url监控,我们只需手动添加要监控的url,再加上zabbix模版的功能,就能够轻而易举的应用到所需要的监控的服务器上。
首先要感线itnihao童鞋提供的这种方式,博客地址为http://itnihao.blog.51cto.com/1741976/1129725
1.zabbix客户端配置
vim /etc/zabbix/zabbix_agent.conf
Include=/etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1
允许用户使用自定义的参数进行传递
2.脚本及参数
[root@localhost zabbix]# tree
.
├── monitor_scripts
│ ├── discovertcpport.sh
│ ├── web_site_code_status.sh
│ └── WEB.txt
├── zabbix_agentd.conf
└── zabbix_agentd.d
├── userparameter_mysql.conf
└── web_site_discovery.conf
(1)zabbix传递参数及配置文件
[root@localhost zabbix]# cat zabbix_agentd.d/web_site_discovery.conf
UserParameter=web.site.discovery,/etc/zabbix/monitor_scripts/web_site_code_status.sh web_site_discovery
UserParameter=web.site.code[*],/etc/zabbix/monitor_scripts/web_site_code_status.sh web_site_code $1
(2)zabbix自动监控脚本
[root@localhost zabbix]# cat monitor_scripts/web_site_code_status.sh
#!/bin/bash
#function:monitor web site code status from zabbix
WEB_SITE_discovery(){
WEB_SITE=($(cat /etc/zabbix/monitor_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
}
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
(3)需要监控的url在WEB.TXT中
[root@localhost zabbix]# cat monitor_scripts/WEB.txt
s1.xd.com/Default.aspx
s2.xd.com/Default.aspx
3.在zabbix服务端进行监控测试
[root@83 yum.repos.d]# /usr/bin/zabbix_get -s 192.168.1.211 -p 10050 -k web.site.code[s1.xd.com/Default.aspx]
200
[root@83 yum.repos.d]# /usr/bin/zabbix_get -s 192.168.1.211 -p 10050 -k web.site.discovery
{
"data":[
{
"{#SITENAME}":"s1.xd.com/Default.aspx"},
{
"{#SITENAME}":"s2.xd.com/Default.aspx"}]}
测试成功
4.下面我们来配置下discovery模版,配好后直接应用到服务器即可。
(1)创建模版,并应用到需要监控的服务器上
(2)在新建的Template Web Monitor模版的Application中创建新应用
(3)在在新建的Template Web Monitor模版的Discovery rules中创建新rule
(4)在新建的web.site.discovery中创建Item porototyoed
(5)在新建的web.site.discovery中创建Trigger porotypes,此处设置为状态码大于399就报警。
ok,配置完后我们的web url监控就完成了