通过linux mail实现网站存活监控告警通知

时间:2022-08-30 15:49:42
我的网站 爱分享读书( www.ishareread.com )是放在家里的两台机器提供的web服务,然后通过通过阿里云服务器上装的nginx反向代理提供外部访问的,在家里的两台机器上做了个集群负载。因为是放在家里的机器,有时候不稳定如电源跳闸等导致无法提供服务,所以需要有个机制来监控家里的机器上面的web服务是否正常。所以想起通过linux的mail来发送通知实现网站存活的监控告警通知。

原理很简单,就是在阿里云服务器(云服务器还是比较稳定的)上起一个监控程序定时持续的访问家里的web服务,如果不能够访问了就发邮件告警。

首先在云服务器上配置mail,环境是CentOS 7的。登录到服务器上。
安装mail命令
yum -y install mailx
vi /etc/mail.rc
文件尾增加以下内容,设置邮件服务器及发件人信息
set from=master@ishareread.com smtp="smtp.ishareread.com"
set smtp-auth-user="master@ishareread.com" smtp-auth-password="123456"
set smtp-auth=login

测试邮件发送是否正常
echo "邮件正文内容" | mail -s "邮件主题" xiejava@ishareread.com

邮件能够正常收到。
通过linux mail实现网站存活监控告警通知

编写定时检查web服务并发送Email的脚本
vi checkalive.sh
代码如下:
#!/bin/bash
echo "begin to check web alive..."

if [ $# -ne 1 ];then
echo $"usage $0 url"
fi

issendmail=0
while true
do
if [ `curl -o /dev/null --connect-timeout 15 -s -w "%{http_code}" $1|egrep -w "200|301|302"|wc -l` -ne 1 ]
then
echo `date "+%Y-%m-%d %H:%M:%S"`" $1 is error...."
if [ ${issendmail} -eq 0 ]
then
echo `date "+%Y-%m-%d %H:%M:%S"`" $1 is error...."|mail -s "$1 is error ..." xiejava@ishareread.com
issendmail=1
fi
else
echo `date "+%Y-%m-%d %H:%M:%S"`" $1 is ok"
issendmail=0
fi
sleep 60
done

echo "end check...."
编辑保存后,将该脚本加入执行权限
chmod +x checkalive.sh

执行脚本
nohup ./checkalive.sh http://xiejava.ishareread.com:11881 >checkweb.log 2>&1 &

效果:
当http://xiejava.ishareread.com:11881的web服务不能访问时,会自动发邮件告警。
通过linux mail实现网站存活监控告警通知