http接口监控脚本

环境:centos7

效果:监控所有接口,连续失败两次,发送信息给运维人员

思路:执行check.sh—读取interface接口内容—调用http-check脚本判断接口是否成功,失败写入文件fail.txt中—est-faile-time脚本判断失败的次数,两次及以上检测都失败——调用脚本sed-mail发送信息给相关人员

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
[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 @   苍茫宇宙  阅读(388)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示