http接口监控脚本
环境:centos7
效果:监控所有接口,连续失败两次,发送信息给运维人员
思路:执行check.sh—读取interface接口内容—调用http-check脚本判断接口是否成功,失败写入文件fail.txt中—est-faile-time脚本判断失败的次数,两次及以上检测都失败——调用脚本sed-mail发送信息给相关人员
[root@SmartCommunity-Node01 ezc-check]# ls check.sh est-fail-time.sh http-check.sh interface.txt sed-mail.sh [root@SmartCommunity-Node01 ezc-check]# tail interface.txt http://192.168.10.100:8080 tomcat服务 http://www.baidu.com 百度服务 [root@SmartCommunity-Node01 ezc-check]# for i in `ls |grep -v interface.txt`;do echo $i && cat $i;done 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 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 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 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 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 #定时任务配置 [root@SmartCommunity-Node01 ezc-check]# crontab -l */5 7-22 * * * /wj/ezc-check/check.sh #每天7点到22点每相隔5分钟测试一次
做一个决定,并不难,难的是付诸行动,并且坚持到底。