用zabbix的low_level_discovery监控web code状态

  • 时间 2013-01-30
  • 版权 GPL
  • 作者 itnihao
  • 邮箱 admin#itnihao
  • 博客 http://www.itnihao.com
  • 如需重新发行,请注明以上信息,谢谢合作
  • 需求:

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

    需求详细分析:

    大量的url,且url经常变化,现在监控用的是zabbix,如果手动添加模板,会造成大量重复工作,
    造成人力财力的浪费,造成休息时间的浪费,得不尝失,如果利用脚本+mail,无法图形呈现
    解决方案:
    zabbix有discovery功能,利用此功能,即可轻松解决此问题

    zabbix客户端配置
    #########egrep -v '(^#|^$)'   /etc/zabbix/zabbix_agentd.conf##########
    ##此处省略N多信息,
    Include=/etc/zabbix/zabbix_agentd.conf.d/   #配置文件路径
    UnsafeUserParameters=1                      #自定义key
    
    ###########自动发现脚本编写
    ########################cat /etc/zabbix/scripts/web_site_code_status##############
    #!/bin/bash 
    # function:monitor web site code status from zabbix 
    # License: GPL 
    # mail:admin#itnihao.com 
    # version:1.0 date:2012-12-09 
         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  WEB1.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 
    
    客户端配置文件
    #########cat /etc/zabbix/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/scripts/WEB.txt########### 
    www.qq.com 
    www.baidu.com 
    www.sina.com.cn 
    
    测试:
    zabbix_get -s 127.0.0.1 -k web.site.discovery
    zabbix_get -s 127.0.0.1 -k web.site.code[www.qq.com]
    此时返回状态为200
    至此,脚本,客户端配置文件OK
    接下来是web的添加
    利用以上方法,哪怕是1000个url监控,也是分分钟的事情
    总结:工欲善其事,必先利其器
    参考文档:https://www.zabbix.com/documentation/2.0/manual/discovery/low_level_discovery
    此外,还可以参考我写的文档:http://code.google.com/p/auto-task-pe/downloads/list zabbix自动发现监控http端口.pdf
    如遇到问题,请先仔细阅读这2个文档,另外附模板文件。
    欢迎交流。

    © itnihao 2013