邮件报警版本HTTP状态监控脚本
编程需求:
在实际的生产环境中,业务可能会发生短暂的健康抖动,从而造成服务处于不可用的状态,但实际上服务是没有问题且正常运行的。抖动的原因有很多种,比如说网络的问题、运营商问题、访问量的问题、计算机硬件等问题,所以可以对服务进行多次检测,假设三次检测结果都不正常,则认定为服务器故障。使用循环语句可以实现对特定的服务器页面进行多次检测,并设置一个统计失败次数的计数器,当失败次数大于3次则触发脚本报警,否则仅通过记录日志的形式纪录状态。
检测脚本:
#! /bin/bash
#功能描述:使用curl访问具体的HTTP页面,检测HTTP状态码
#连续3次都失败则发送邮件报警
#curl选项说明
#-m 设置超时时间
#-s 设置静默时间
#-o 下载数据另存为
#-w 返回附加信息,HTTP状态码
url=服务器index.html文件路径
date=$(date +"%Y-%m-%d %H:%M:%S")
mail_to="root@localhost"
mail_subject="http_warning"
fail_times=0
for i in 1 2 3
do
status_code=$(curl -m 3 -s -o /dev/null -w %{http_code} $url)
#使用<<-重定向可以忽略Tab键缩进的内容,代码可读性更好
if [ $status_code -ne 200 ];then
let fail_times++
fi
sleep 1
done
if [ $fail_times -eq 3 ];then
mail -s $mail_subject $mail_to <<- EOF
检测时间为:$date
$url 页面异常,服务器返回状态码为:${status_code}
请尽快排查
EOF
else
cat >> /var/log/http_check.log <<- EOF
$date "$url 页面访问正常"
EOF
fi