shell linux命令 Windows 程序员 Ubuntu HTML5 php java apache wordpress 微软 nginx centos Android mysql linux google 开源 Firefox Python

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

脚本功能:实现对公司网站的url地址检查,把故障通过邮件或者短信的形式报告给管理员,可以同时加入多个监控点,URL地址可以是实际网站地址,也可以是专门的地址,当然,我们也可以结合nagios等软件来实现。

1)脚本内容

[root@nosql01 scripts]# cat check_url_by_oldboy.sh 

 #!/bin/bash 
 # this script is created by oldboy. 
 # e_mail:31333741@qq.com 
 # 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="31333741@qq-.com 49000448@qq-.com" 
 #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<<EOF 
 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)生产用法

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

延伸阅读

评论