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分钟测试一次 

  

  

posted @ 2021-05-07 23:13  苍茫宇宙  阅读(383)  评论(0编辑  收藏  举报