低调做人,高调做事!
分类: LINUX
2008-03-14 11:09:33
最近有台机器出现这样的情况,apache服务存在,查看进程和端口都存在,但是,这个时候打开网页打不开,我认为此时apache服务是由于某种原因死掉了,重新启动apache后解决问题。
解决思路:所以现在就想通过一个监控脚本,来定时访问apache里面的测试页面,看返回的页面是否可以返回定义的值“true”,如果失败,就重试3次,失败就发送邮件到。
脚本如下:
#!/bin/bash
# Program:
# This program is used to show "Hello World !" in screen.
# History:
# 2007/08/23 chentao 1.1
#---------------------------------------------------------------
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
MaxTryNums=6;
MaxTimeout=6;
file=/usr/local/crontab/testlist
recive="true"
cat $file | while read LINE
do
echo $LINE
domain=$( echo $LINE | awk -F"/" '{print $3}')
echo $domain
ipaddr=$(ping -c1 $domain | grep -o "\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)" | head -1)
echo $ipaddr
result=$((GET -t $MaxTimeout $LINE) 2>/dev/null | grep "$recive")
echo $result
if [ "$result" != "" ];then
echo "test ok"
else
echo 'retry............................'
trynums=0
total=0
while [ "$trynums" -le "$MaxTryNums" ];do
error=$((GET -t $MaxTimeout $LINE) 2>/dev/null | grep "$recive")
if [ "$error" != "" ];then
echo "test_retry ok"
break
else
sleep 60
trynums=$(($trynums+1))
total=$(($total+$total))
echo "$trynums times"
fi
done
if [ $trynums = 7 ];then
echo "$ipaddr httpd is fail"
/bin/mail -s $ipaddr-httpd-down -- -f root@sina.net
fi
fi
done
1,在apache服务器上建立一个测试页面---test.html,内容---true.
2,在监控机器上建立usr/local/crontab/test文件,格式如下:
3,建立shell脚本如上内容。
4,crond任务,5分钟运行一次就ok了。