本文转载:http://itnihao.blog.51cto.com/1741976/1129725 

需求:

    现在有大量url需要监控,形式如http://www.baidu.com ,要求url状态不为200即报警。

需求详细分析:

    大量的url,且url经常变化,现在监控用的是zabbix,如果手动添加模板,会造成大量重复工作,如果利用脚本+mail,无法图形呈现

解决方案:

zabbix有discovery功能,即可轻松解决此问题

zabbix客户端配置

  1. 编写自动发现脚本

# cat web_site_code_status.sh 
#!/bin/bash 
# function:monitor tcp connect status from zabbix 

source /etc/bashrc >/dev/null 2>&1 
source /etc/profile  >/dev/null 2>&1 
#/usr/bin/curl -o /dev/null -s -w %{http_code} http://$1/ 

web_site_discovery () { 
WEB_SITE=($(cat  /data/zabbix/sbin/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

2.创建WEB.txt文件

# pwd
/data/zabbix/sbin
# cat WEB.txt 
www.qq.com
www.baidu.com
www.sina.com

3.客户端配置文件

#########cat /data/zabbix/etc/zabbix_agentd.conf.d/web_site_discovery.conf  ##########
UserParameter=web.site.discovery,/etc/zabbix/scripts/web_site_code_status web_site_discovery  
UserParameter=web.site.code[*],/etc/zabbix/scripts/web_site_code_status web_site_code $1


######cat /etc/zabbix/zabbix_agentd.conf|grep -v "^#"|grep -v "^$"#####此处省略N多信息,
Include=/etc/zabbix/zabbix_agentd.conf.d/   #配置文件路径
UnsafeUserParameters=1                      #自定义key

4.测试

# /data/zabbix/bin/zabbix_get -p 10050 -s 10.251.107.0 -k web.site.discovery

wKiom1Vd0E_hrYF7AACGOtGesxA161.jpg

# /data/zabbix/bin/zabbix_get -p 10050 -s 10.251.107.0 -k web.site.code[www.qq.com]
200

此时返回状态为200

至此,脚本,客户端配置文件OK

接下来是web的添加

wKiom1VehE-Dv34iAAEq4mKdjkg686.jpg

wKioL1VehibDLdf9AAFlb2VEAWk902.jpg

wKioL1VehnqSKOJIAABQYorMCh0089.jpg

wKioL1VehpmQS0T7AAHasBQzQuo107.jpg

wKioL1VehrHjczHoAAIspLNCnM8431.jpg

报警级别的设置:3个报警级别

wKioL1Veh8bw3S1mAAMWVQjMVN4669.jpg

wKiom1VehqjQaACrAAKlKdij91I290.jpg

利用以上方法,哪怕是1000个url监控,也是分分钟的事情.


参考文档:https://www.zabbix.com/documentation/2.0/manual/discovery/low_level_discovery
zabbix自动发现监控http端口.pdf  http://code.google.com/p/auto-task-pe/downloads/list 

http://www.cnblogs.com/smail-bao/p/6043726.html 

http://sfzhang88.blog.51cto.com/4995876/1826763 

http://crazy123.blog.51cto.com/1029610/1711148 

http://215687833.blog.51cto.com/6724358/1886671 




zabbix企业应用之优化web事件(events)打开速度


随着监控主机数量增大,trigger与events也不断增加,导致在web里查看事件的速度变的非常慢,通过events表发现最大的events已经13亿了,而且默认事件打开是最近7天里所有数据,所有肯定很忙,目前经过优化后提供了2倍打开速度。

优化前,使用firebug打开测试可以看到打开速度为29.07秒

wKioL1VtaISCW5gmAAbEhZRaFAQ388.jpg

下图为优化后的,通过查看数据库发现events事件表有13亿条数据,所以仅保留最近一个月数据,其他数据删除,优化后打开事件的使用时间如下图,打开时间为10.61秒

wKioL1VtaLGxSbuVAAX-HYF4u1U335.jpg

下面是如何优化的步骤:

1、在zabbix数据库服务器里登陆数据库,使用下面命令

use zabbix;
delete  from  events where  clock <= UNIX_TIMESTAMP('2014-06-01');

这样就能删除2014年6月1日前的events数据了,为了能自动删除数据,可以做个脚本+crontab

 2、shell脚本

#!/bin/bash
#this script name is delete_events.sh
host="localhost"
socket="/data/perconadata5.6/mysql.sock"
user="zabbix"
pass="zabbix"
port="3306"
time=`date -d "last-month" +%Y-%m-01`
mysql -u $user -p$pass -h$host  -S $socket -P $port <<EOF
use zabbix;
delete  from  events where  clock <= UNIX_TIMESTAMP('${time}') limit 40000;
EOF

这样是在删除上个月的数据,保留最近1个月的,并且每次删除4w条

3、crontab

* * * * * /bin/bash /usr/local/zabbix/bin/delete_events.sh

下面是使用此脚本删除后,数据events表的情况

wKioL1VtaZ7j52slAAJ9bApxHl8713.jpg

最大eventid为13亿,现在保留56w数据。