Web 服务器监控与邮箱提醒
浅蓝色的夜 2019-06-24 12:56:30 最近linux实训做了Web服务器的监控这个课题,网上查找了教程后,综合了一些牛人的帖子和自己的心得给大家发一篇比较完整的教程。
一:安装mailx,配置sendmailx。
yum install –y mailx
修改/etc/mail.rc添加以下配置,输入vim /etc/mail.rc
set from=xxx@163.com
set smtp=smtp.163.com
set smtp-auth-user=xxx #网易邮箱名
set smtp-auth-password=xxx #这里要写SMTP授权码,需要到邮箱设置
set smtp-auth=login
当然这里也可以用其他邮箱,比如qq邮箱,只需改一下上面的代码就可以了
使用mail命令发送邮件:
echo "邮件内容"|mail -s 标题 xxx@163.commail -s 标题 xxx@163.com < file
163开通SMTP授权码:
1、进入邮箱首页后,点击设置
2、选择POP3/SMTP/IMAP
3、在弹出的页面中勾选POP3/SMTP服务
4、弹出设置授权码提醒,点击确定
5、勾选设置授权码位置后面的开始
6、弹出验证信息,通过手机号验证码。如果没有绑定手机号需绑定后再操作。
7、输入获取的验证码,每天只有三次机会,最好别浪费。
8、设置授权码,需要输入两遍,一定要记住。
9、弹出一个小窗口,点击确定即可。
10、可以看到设置授权码已开启,开启成功。开启成功后,手机会收到一条短信,其中就有授权码信息。
11、同时SMTP/POP3服务开启成功。
二:编写要进行监控的文件url。
在root文件目录下:
vim url
输入要进行监控的网址,例如我要监控的是一个域名,所以文件中的内容是:
www.xxx.com
三:编写监控脚本monitor.sh。
在root文件目录下:
Vim monitor.sh
编写脚本:
#!/bin/bash
#监控web服务并邮件提醒
while true
do
Mail="xxx@163.com" #记得把这个邮箱修改成你的
FailCount=0
Retval=0
GetUrlStatus() {
for ((i=1;i<=3;i++)) #使用i++判断访问次数,如果wget两次超时则判断网站异常
do
wget -T 3 --tries=1 --spider ${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....."
## 使用mutt
#echo -e "Date : $Date\nProblem : $url is not running." | mutt -s "web server Monitor" $Mail
echo "Date : $Date \n Problem :$url服务挂了" | mailx -v -s "服务监控提醒" $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 600 #死循环,设置每600s运行一次
done
上面这个代码是网上搬来的,实测能用。
四:启动脚本,将echo输出至指定文件monitor.log。
bash monitor.sh
nohup sh monitor.sh >> monitor.log &
五:退出系统之后重新登录查看脚本运行状态。
ps -ef|grep monitor
六:查看monitor.log及邮箱验证。
到了这一步,我们先把我们的网站给关闭先这里我使用比较直接的方法,直接关闭httpd进程。
systemctl stop httpd
关闭网站之后就可以查看monitor脚本并观察是否有邮箱报错邮件发过来。
cat monitor.log