服务器系统centos7.6
1、安装邮箱服务,一般服务器都已经安装了,查看是否安装。
yum list mailx
rpm -qa | grep mail
查看是已经安装了。
未安装的执行命令安装即可。
yum -y install mailx
配置mail,配置文件路径/etc/mail.rc
vim /etc/mail.rc
在尾部加入以下内容
set from=12345678@139.com ###(发送邮箱账号)
set smtp=smtp.139.com ###(发送邮箱smtp服务器地址,很多人使用的是qq的,qq的就需要修改,smtp.qq.com)
set smtp-auth-user=12345678 ###(发送邮箱账号,这里只需要写你的邮箱账号,不需要写@后面的字符)
set smtp-auth-password=123456abc ###(邮箱的密码)
set smtp-auth=login ###(登陆方式,这个不用改)
保存退出。
这里会使用到你邮箱的smtp服务,一般你的邮箱这个服务是关闭的,需要登录你的邮箱开启这个服务。我是139的邮箱,登陆邮箱开启这个服务。
smtp使用25,465端口,需要在防火墙放行此端口。
测试给邮箱发送一个邮件
echo “服务器存在异常,请登录服务器进行查看” | mail -s “服务器报警” 123@qq.com
mail邮箱服务搭建完成。
2、检测网站是否健康运行
定义需要监控的网站地址,脚本30秒探测一次,当检测到网站返回状态不为200时,隔三秒在进行探测,三秒后再次探测不为200时则进行告警。
#!/bin/bash
#定义探测网站的列表
web_list=("https://www.zph.com" "https://okayfancy.com" "https://test.com")
#定义告警函数
function alert() {
echo "$(date): $1 状态为:$2 请及时查看!"
echo echo "$(date): $1 状态为:$2 请及时查看 !!!" | mail -s "服务器异常" mail1-test.com
}
#循环探测每个网站
while true; do
for website in ${web_list[@]}; do
response=$(curl -s -w %{http_code} $website -o /dev/null)
if [ $response -ne 200 ]; then
echo "$(date): $website 状态 $response"
#如果状态异常,隔三秒在进行探测。隔三秒在进行探测还是异常则进行告警
sleep 3
response=$(curl -s -w %{http_code} $website -o /dev/null)
if [ $response -ne 200 ]; then
alert $website $response
fi
fi
done
sleep 30
done
#本地输出结果