监控网站可用性超实用脚本分享

本脚本出自 老男孩linux运维实战培训中心 shell编程课程脚本案例!
脚本功能:实现对公司网站的url地址检查,把故障通过邮件或者短信的形式报告给管理员,可以同时加入多个监控点,URL地址可以是实际网站地址,也可以是专门的地址,当然,我们也可以结合nagios等软件来实现。
1)脚本内容

 
   [root@nosql01 scripts]# cat check_url_by_oldboy.sh    
   #!/bin/bash   
   # this script  
   is 
    created  
   by 
    oldboy.   
   # e_mail:[email protected]   
   # qqinfo:49000448   
    
   function 
   : oldboy trainning stripts,check_service.   
   # version:1.1    
   ################################################   
   # oldboy trainning info.         
   # QQ 1986787350 70271111   
   # site:http://www.etiantian.org   
   # blog:http://oldboy.blog.51cto.com   
   # oldboy trainning QQ  
   group 
   : 208160987 226199307   
   ################################################   
   # 
   set 
    -x   
   RETVAL=0   
   SCRIPTS_PATH= 
   "/server/scripts" 
     
   MAIL_GROUP= 
   "[email protected] [email protected]" 
     
   #MAIL_GROUP= 
   "18600338340 18911718229" 
     
   ## web detection  
   function 
     
   LOG_FILE= 
   "/tmp/web_check.log" 
     
   function 
    Get_Url_Status(){   
   FAILCOUNT=0   
   for 
    (( i=1 ; $i <= 3 ; i++ ))    
    do    
       wget -T 15  
   --tries=1 --spider http://${1} >/dev/null 2>&1  
     
       if [ $? -ne 0 ]   
            
   then 
     
            let FAILCOUNT+=1;   
       fi   
   done   
     
   #if 3 times  
   then 
    send mail.   
   if [ $FAILCOUNT -gt 1 ]   
         
   then 
       
          RETVAL=1   
          NOW_TIME=` 
   date 
    + 
   "%m-%d %H:%M:%S" 
   `   
          SUBJECT_CONTENT= 
   "http://${HOST_NAME} service is error,${NOW_TIME}." 
     
          echo  
   "send to :$MAIL_USER ,Title:$SUBJECT_CONTENT" 
    >$LOG_FILE   
           
   for 
    MAIL_USER   
   in 
    `$MAIL_GROUP`   
          do   
             mail -s  
   "$SUBJECT_CONTENT " 
    $MAIL_USER <$LOG_FILE   
             #sh $SCRIPTS_PATH/sms_send $SUBJECT_CONTENT $MAIL_USER    
          done   
   else 
     
         RETVAL=0   
   fi   
   return 
    $RETVAL   
   }   
   #func  
   end 
   .   
   [ ! -d  
   "$SCRIPTS_PATH" 
    ] && {   
     mkdir -p $SCRIPTS_PATH   
   }   
     
   [ ! -f  
   "$SCRIPTS_PATH/domain.list" 
    ] && {   
   cat >$SCRIPTS_PATH/domain.list< 
   oldboy.blog.51cto.com   
   bbs.etiantian.org   
   EOF   
   }   
   #service  
   check 
       
   for 
     HOST_NAME  
   in 
    `cat $SCRIPTS_PATH/domain.list`   
      do   
          echo -n  
   "checking $HOST_NAME: " 
     
          Get_Url_Status $HOST_NAME && echo ok||echo  
   no 
     
          #Get_Url_Status $HOST_NAME   
   done  
   

2)演示结果
[root@nosql01 scripts]# sh check_url_by_oldboy.sh
checking oldboy.blog.51cto.com: ok
checking bbs.etiantian.org: no
提示:上面我们看到的仅仅是为了调试而加的,后台已经对故障站进行了邮件及短信报警。

3)生产用法
实际工作中,我们可以结合定时任务调用脚本检查,甚至可以稍加改进,在服务的重启过程中进行检查。

你可能感兴趣的:(监控网站可用性超实用脚本分享)