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分钟测试一次 |
做一个决定,并不难,难的是付诸行动,并且坚持到底。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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)