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

我的网站 爱分享读书( 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

邮件能够正常收到。


编写定时检查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服务不能访问时,会自动发邮件告警。

原文地址:https://www.cnblogs.com/xiejava/p/15171448.html