shell监控网站并发邮件报警
时间:2016-06-05 02:29 来源:linux.it.net.cn 作者:IT
目前网上关于网站存活监控的脚本很多,本站也放过几个,今天给大家再来个ping+curl监控网站并发邮件报警的脚本,我觉得这个脚本的思路很不错,大家有兴趣的可以下来看看.
脚本内容:
cat /root/soft_shell/check-www.sh
01
#!/bin/bash
02
#Created by haiyun
03
#set -x
04
while true
05
do
06
list=(blog.slogra.com slogra.com)
07
mail=rocdk@163.com
08
date=$(date -d "today" +"%Y-%m-%d-%H:%M:%S")
09
i=0
10
id=${#list[*]}
11
while [ $i -lt $id ]
12
do
13
if ping -c1 ${list[$i]} >/dev/null
14
then
15
echo $date:服务器${list[$i]}能ping通.
16
else
17
if curl -m 10 ${list[$i]} > /dev/null
18
then
19
echo $date:服务器${list[$i]} ping不通,能打开网页.
20
else
21
echo "您好,据系统监测服务器${list[$i]}不能访问且ping不通,请及时处理!故障发生时间:$date"|mail -s "服务器${list[$i]}不能连接! 故障发生时间:$date"$mail
22
until
23
date=$(date -d "today" +"%Y-%m-%d-%H:%M:%S")
24
ping -c1 ${list[$i]} >/dev/null && echo "恭喜!服务器${list[$i]}已恢复正常,恢复时间:$date"|mail -s "服务器${list[$i]}已恢复正常! 恢复时间:$date" $mail
25
do
26
sleep 5
27
done
28
fi
29
fi
30
let i++
31
done
32
sleep 60
33
done
放入后台运行:
nohup sh /path/file.sh & #把脚本放到后台运行,程序自己会60秒检查一次网站.
开机自启动:
echo "nohup sh /root/soft_shell/check-www.sh & " >> /etc/rc.local
下面还有个类似的脚本,但他控制了发邮件的频率:
cat /root/soft_shell/check-web.sh
01
#!/bin/bash
02
#Created by jbxue
03
SITES=("http://blog.slogra.com" "http://slogra.com")# 要监控的网站
04
NOTICE_EMAIL='me@example.com' # 管理员电邮
05
MAXLOADTIME=10 # 访问超时时间设置
06
REMARKFILE='/tmp/monitor_load.remark' # 记录时否发送过通知电邮,如发送过则一小时内不再发送
07
ISSEND=0 # 是否有发送电邮
08
EXPIRE=3600 # 每次发送电邮的间隔秒数
09
NOW=$(date +%s)
10
11
if [ -f "$REMARKFILE" ] && [ -s "$REMARKFILE" ]; then
12
REMARK=$(cat $REMARKFILE)
13
14
# 删除过期的电邮发送时间记录文件
15
if [ $(( $NOW - $REMARK )) -gt "$EXPIRE" ]; then
16
rm -f ${REMARKFILE}
17
REMARK=""
18
fi
19
else
20
REMARK=""
21
fi
22
23
# 循环判断每个site
24
for site in ${SITES[*]}; do
25
26
printf "start to load ${site}\n"
27
site_load_time=$(curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}" "${site}")
28
site_access=$(curl -o /dev/null -s -w %{http_code} "${site}")
29
time_total=${site_load_time##*:}
30
31
printf "$(date '+%Y-%m-%d %H:%M:%S')\n"
32
printf "site load time\n${site_load_time}\n"
33
printf "site access:${site_access}\n\n"
34
35
# not send
36
if [ "$REMARK" = "" ]; then
37
# check access
38
if [ "$time_total" = "0.000" ] || [ "$site_access" != "200" ]; then
39
echo "Subject: ${site} can access $(date +%Y-%m-%d' '%H:%M:%S)" | sendmail ${NOTICE_EMAIL}
40
ISSEND=1
41
else
42
# check load time
43
if [ "${time_total%%.*}" -ge ${MAXLOADTIME} ]; then
44
echo "Subject: ${site} load time total:${time_total} $(date +%Y-%m-%d' '%H:%M:%S)" | sendmail ${NOTICE_EMAIL}
45
ISSEND=1
46
fi
47
fi
48
fi
49
50
done
51
52
# 发送电邮后记录发送时间
53
if [ "$ISSEND" = "1" ]; then
54
echo "$(date +%s)" > $REMARKFILE
55
fi
56
exit 0
ps:
1.检查网站返回的http_code是否等于200,如不是200视为异常.
2.检查网站的访问时间,超过MAXLOADTIME(10秒)视为异常.
3.发送通知邮件后,在/tmp/monitor_load.remark记录发送时间,在一小时内不重复发送,如一小时后则清空/tmp/monitor_load.remark.
脚本来源:
http://www.jbxue.com/article/15072.html
http://www.haiyun.me/archives/shell-check-server-mail.html
(责任编辑:IT)
目前网上关于网站存活监控的脚本很多,本站也放过几个,今天给大家再来个ping+curl监控网站并发邮件报警的脚本,我觉得这个脚本的思路很不错,大家有兴趣的可以下来看看. 脚本内容: cat /root/soft_shell/check-www.sh
放入后台运行: nohup sh /path/file.sh & #把脚本放到后台运行,程序自己会60秒检查一次网站. 开机自启动: echo "nohup sh /root/soft_shell/check-www.sh & " >> /etc/rc.local 下面还有个类似的脚本,但他控制了发邮件的频率: cat /root/soft_shell/check-web.sh
ps: 1.检查网站返回的http_code是否等于200,如不是200视为异常. 2.检查网站的访问时间,超过MAXLOADTIME(10秒)视为异常. 3.发送通知邮件后,在/tmp/monitor_load.remark记录发送时间,在一小时内不重复发送,如一小时后则清空/tmp/monitor_load.remark.
脚本来源: (责任编辑:IT) |