加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

通过shell监控网页是否正常,然后促发邮件告警

发布时间:2020-12-16 01:55:34 所属栏目:安全 来源:网络整理
导读:最近在网上找了下通过shell编写一个脚本来监控网页是否正常,如果不正常则促发邮件告警,修复后有一个修复的通知邮件;但一直没有找到全面的,所以自己研究了下,写了一个linux对接邮箱和通过shell写了一个监控网页的脚本,如果有兴趣的可以参考下,不过我也
最近在网上找了下通过shell编写一个脚本来监控网页是否正常,如果不正常则促发邮件告警,修复后有一个修复的通知邮件;但一直没有找到全面的,所以自己研究了下,写了一个linux对接邮箱和通过shell写了一个监控网页的脚本,如果有兴趣的可以参考下,不过我也是一个新手,写的不好,请不要见怪。?

分两个大步骤:

步骤一 linux对接邮箱:
1.首先需要安装mailx
如果你是最小化安装的centos/redhat 系统,是没有自带mailx的,也就是没有mail 命令。

?yum -y install mailx

2.编辑配置文件 /etc/mail.rc
vim /etc/mail.rc | tail -10
fwdretain subject date from to
# For Linux and BSD,this should be set.
set bsdcompat
set [email?protected]
set smtp=smtp.163.com
set [email?protected]
set smtp-auth-password=123456
set smtp-auth=login
3.对配置说明
from: 对方收到邮件时 显示的发件人
smtp :指定第三方发邮件的 smtp服务器地址 (如qq,163,也可是公司的邮件服务器)
set smtp-auth-user: 邮件账号的用户名
set smtp-auth-password: 邮件账号的密码,有些邮箱填 授权码
smtp-auth: SMTP 的认证方式,默认是login,也可以改成CRAM-MD5 或 PLAIN 方式。
4.测试邮箱是否对接成功
echo "访问OK." | mail -s " 访问已经恢复" [email?protected]
步骤二shell编写监控的URL:
vim checkweb.sh
#!/bin/bash
#需要接收告警的邮箱
[email?protected]
[email?protected]
#网站url地址
URL="http://www.baidu.com"
logsize=`ls -l /data/script/checkweb.log| awk ‘{print $5}‘`
if [ -n $logsize ]
then
>/data/script/checkweb.log
fi
while true
date=$(date -d "today" +"%Y-%m-%d-%H:%M:%S")
do
sleep 60
#获取http响应代码
HTTP_CODE=`curl -o /dev/null -s -w "%{http_code}" "${URL}"`
#服务器能正常响应,应该返回200的代码
if [ $HTTP_CODE = 200 ]
then
if [ -f /tmp/checkwebfault.log ]
then
`rm -rf /tmp/checkwebfault.log`
else
echo "$date $URL 访问OK." >>/data/script/checkweb.log
[ ! -f "/tmp/checkwebsucceed" ] || continue
echo "$date $URL 故障已修复." | mail -s "网站故障已经修复" $mail1 $mail2
`touch /tmp/checkwebsucceed`
fi
elif [ $HTTP_CODE != 200 ] && [ ! -f "/tmp/checkwebfault.log" ]
then
echo "$date $URL 已无法访问,请尽快处理." | mail -s "网站紧急故障告警" $mail1 $mail2
`touch /tmp/checkwebfault.log`
`rm -rf /tmp/checkwebsucceed `
fi
done
脚本思路:
1.通过CURL访问后判断这个URL里面返回的值是否为200;如果是则页面正常,否则不正常;
2.如果正常,检查是否有错误的临时文件,有则删除,如果没有临时错误文件,则会发送一个邮件通知是成已经修复,且会生成一个成功的临时文件,后面通过判断这个文件是否存来判断是否还需要发送邮件,避免无休止发送邮件告警;(continue是跳出此次循环)
3.如果不正常,也会发送一个URL故障的邮件通知,且会生成一个失败的临时文件,后面通过判断这个文件是否存来判断是否还需要发送邮件,避免无休止发送邮件告警,且会把成功的临时文件删除;
总的来说就是开关原理,通过判断临时文件是否存在来判断是否需要发送邮件,避免无休止发送告警。
测试查看执行判断的过程
sh -x checkweb.sh

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读