在启动监控前,先安装sendmail通过发送邮件来实现告警通知。为了能达到及时提醒的作用,我们采用移动139邮箱,接到邮件手机短信实时提醒。
一、安装sendmail
1.安装sendmail来发邮件
# yum -y install sendmail
# /etc/init.d/sendmail start
# chkconfig sendmail on
需要安装sendmail并开启防火墙的25端口,如果你需要收邮件110端口也要开
2.安装mutt邮件客户端,并设置相关信息
# yum -y install mutt
# cp /etc/Muttrc /root/.muttrc 重命名,并修改配置
vi /root/.muttrc
set charset="utf-8" #设置发邮件编码
set use_envelope_from=yes
set rfc2047_parameters=yes #解决附件乱码问题
set realname="报警" #发件人别名
set use_from=yes #指定是否显示别名
set from=root@localhost #发送人地址,当前主机名称,若配置其他邮箱,需配置协议主机名和密码
二、检查脚本
vi check_web.sh
#!/bin/bash
#====================================================
#监控web服务是否可用
#====================================================
while true
do
Mail="158****3564@139.com"
FailCount=0
Retval=0
GetUrlStatus() {
for ((i=1;i<=3;i++)) #使用i++判断访问次数,如果wget两次超时则判断网站异常
do
wget -T 3 --tries=1 --spider http://${1} >/dev/null 2>&1
#-T超时时间,--tries尝试1次,--spider蜘蛛
[ $? -ne 0 ] && let FailCount+=1; #访问超时时,$?不等于0,则FailCount加1
done
Date=`date +%F" "%H:%M`
if [ $FailCount -gt 1 ];then
Retval=1
echo "check fail!!!,sendmail....."
echo -e "Date : $Date\nProblem : $url is not running." | mutt -s "web server Monitor" $Mail
else
Retval=0
echo "Date : $Date $url is running."
fi
return $Retval #如果返回值为0,就正常退出循环,不为0则继续循环
}
for url in `cat url | sed '/^#/d'`
do
#GetUrlStatus $url && echo yes || echo no
GetUrlStatus $url
done
sleep 3 #死循环,设置每3s运行一次
done
脚本读取url文件中域名来检查,我们需要创建一个url文件,并添加访问域名:
echo "www.baidu.com" >url
echo "test.abc.com" >>url
好了,运行脚本,看一下。
./check_web.sh #发送邮件比较慢