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

本脚本出自 老男孩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)生产用法
实际工作中,我们可以结合定时任务调用脚本检查,甚至可以稍加改进,在服务的重启过程中进行检查。

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