系列文章目录
前言
该脚本为linux的shell脚本,作用是通过网站状态码判断网站是否存活,出现两次健康检查失败就发送邮件通知管理人员。
一、脚本创建思路
思路:执行check.sh—读取interface接口内容—调用http-check脚本判断接口是否成功,失败写入文件fail.txt中—est-faile-time脚本判断失败的次数,两次及以上检测都失败——调用脚本sed-mail发送信息给相关人员。
效果:监控所有接口,连续失败两次,发送信息给运维人员
二、使用步骤
1.使用方式
在linux服务期上创建一个目录,创建下面的文件:
[root@SmartCommunity-Node01 ezc-check]# ls
check.sh est-fail-time.sh http-check.sh interface.txt sed-mail.sh
2.将对应脚本拷入对应文件
代码如下:
[root@SmartCommunity-Node01 ezc-check]# cat interface.txt
#需要监控的网站都可用直接列入下发
http://192.168.10.100:8080 tomcat服务
http://www.baidu.com 百度服务
[root@SmartCommunity-Node01 ezc-check]# cat check.sh
#!/bin/bash
dir=$(cd $(dirname $0);pwd)
rm -rvf $dir/fail.txt
cat $dir/interface.txt|while read -r line
do
#注意赋值不要有空格
jk=`echo $line|awk '{print $1}'`
name=`echo $line|awk '{print $2}'`
sh $dir/http-check.sh $jk $name
done
#sh $dir/sed-mail.sh
#根据结果判断是否要发送短信,一次失败不发送信息,两次及以上才发送
if [ -f "$dir/fail.txt" ];then
sh $dir/est-fail-time.sh 1
else
sh $dir/est-fail-time.sh 0
fi
[root@SmartCommunity-Node01 ezc-check]# cat est-fail-time.sh
#!/bin/bash
#当前目录路径
dir=$(cd $(dirname $0);pwd)
#1表示失败0表示成功
if [ $1 -eq 1 ]
then
#失败一次记录一条
echo 1 >> $dir/result.txt
#计数
c=$(cat $dir/result.txt|wc -l)
#大等于2次失败 发送
if [ $c -ge 2 ]
then
#发送信息
echo sed-meil
sh $dir/sed-mail.sh
else
#失败一次
echo faile-one
fi
else
rm -rvf $dir/result.txt
echo server-ok
fi
[root@SmartCommunity-Node01 ezc-check]# cat http-check.sh
#!/bin/bash
dir=$(cd $(dirname $0);pwd)
dct(){
http_status=$(curl -m 5 -s -w %{http_code} $1 -o /dev/null)
#状态码等于000,-o(或者)状态码大于500 如果有其他的状态码 可用自己加例如:-o $http_status -eq 403
if [ $http_status -eq 409 -o $http_status -eq 200 -o $http_status -eq 401 -o $http_status -eq 000 ]
then
echo $2 server is $http_status成功
else
echo $2:$1 is $http_status失败 >> $dir/fail.txt
fi
}
dct $1 $2
[root@SmartCommunity-Node01 ezc-check]# cat sed-mail.sh
#!/bin/bash
dir=$(cd $(dirname $0);pwd)
a_name=("zhangs@qq.com" "lisi@qq.com" )
for element in ${a_name[@]}
do
cat $dir/fail.txt|grep '失败'|mail -v -s "服务检测结果" $element
done
3.赋予文件可执行权限,配置定时任务即可
注意:第一个文件修改为自己的接口,最后一个文件修改为自己邮箱
#赋予权限
[root@SmartCommunity-Node01 ezc-check]# chmod u+x *
#定时任务配置
[root@SmartCommunity-Node01 ezc-check]# crontab -l
*/5 7-22 * * * /wj/ezc-check/check.sh #每天7点到22点每相隔5分钟测试一次