Written by razrlele
17:46 May 6, 2017
博客最近出现了几次nginx进程莫名其妙地挂掉,有好几次博客一晚上不能访问我都不知道,查日志也没查出来什么原因,后来用了监控宝家的报警服务,效果还蛮不错的,基本上出了故障十分钟以内都会检测到,并且还有邮件和免费短信通知,但是有的时候即使通知到了也不方便及时上服务器重启服务,所以索性自己写了个检测脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
res=`ps aux | grep nginx | wc -l` local_name=`hostname` words="\n\n The people who is crazy enough to change the world, are the ones who do.\n\n Best Regards." server_down=`cat /root/server_down` if [[ $res == 1 && $server_down == 0 ]];then /usr/sbin/service nginx start res=`ps aux | grep nginx | wc -l` if [ $res == 1 ];then echo 1 > /root/server_down echo -e "Fail to restart! ${words}"| mail -s "[${local_name}] Nginx down" ${mail_address} else echo -e "Restart successfully! ${words}"| mail -s "[${local_name}] Nginx down" ${mail_address} fi else echo 0 > /root/server_down fi |
每分钟运行一次,如果检测到nginx挂了就尝试重启一次,然后把重启结果邮件告知,这样基本就可以cover住大部分挂掉的情形了。
但是有个问题有点辣眼睛,就是每次收邮件的时候显示发件人都是root:
这个帖子底下有一些解决方案,但是都只解决了发件人地址的问题,发件人的名字怎么都改不过来,后来在另外一个帖子里找到了解决方案,即用chfn
命令修改一下root用户下的用户信息,postfix在发送邮件的时候就会直接去读取系统里面存储的操作账号对应的用户信息,其他地方也有一些解决方案,但是跟用chfn
大同小异,似乎并不能很方便地像我想象的那样直接在命令里面指定发件人名字。。。
虽然博客没什么人访问,但是还是尽量做到高可用吧~