定时检测接口是否正常飞书告警脚本

news2024/9/30 1:31:20

第一版

支持多个接口地址,循环检测,定时每分钟执行一次脚本

告警效果
在这里插入图片描述
脚本
飞书机器人创建忽略跳过,各大协作平台大同小异拿出机器人hook地址

#!/bin/bash
URL_LIST=('https://gatewaxxxxxxxxxxxxxxxxxx' 'https://sandbox-gatexxxxxxxxxxxxxxxxxx')

for URL in ${URL_LIST[*]}; do
    FAIL_COUNT=0                #设置一个变量来统计访问失败次数

    for ((i=1;i<=3;i++)); do
        HTTP_CODE=$(curl -o /dev/null --connect-timeout 3 -s -w "%{http_code}" $URL)    #超时时间是3if [ $HTTP_CODE -eq 200 ]; then
            echo "`date +\%Y-\%m-\%d-\%H:\%M:\%S`: $URL OK"      #访问正常打印ok并记录时间
            break
        else
            echo "$URL retry $FAIL_COUNT"
            let FAIL_COUNT++            #如果不ok的话就执行计数加一
        fi
    done

    if [ $FAIL_COUNT -eq 3 ]; then              #如果FAIL_COUNT=3,就发出告警
        echo "Warning: $URL Access failure!"      #打印错误的接口地址
        error_msg="API异常警告:Access_failure!,ERROR异常地址:$URL"     #飞书机器人的告警内容
        msg_body="{\"msg_type\":\"text\",\"content\":{\"text\":\"$error_msg\"}}"     #告警消息体格式
        WEBHOOK_URL="https://open.feishu.cn/open-apis/bot/v2/hook/bd445c52-75xxxxxxxxxx"   #飞书机器人hook地址
        req_msg=$(curl -X POST -H "Content-Type: application/json" -d $msg_body $WEBHOOK_URL)   #post请求

        echo "触发报警:" $req_msg
    fi
done

定时任务crontab -e

*/1 * * * * sh /data/api_url.sh >> /data/apiurl.log

第二版

第一版不够美观,并且目前所有告警都在这一个群没有分散,所以基本所有人都是屏蔽群消息的,基于第一版改进美化并实现艾特人员

告警效果
在这里插入图片描述

脚本
怎么获取飞书用户id,查看飞书开放平台的开发文档:点击跳转到飞书文档

#!/bin/bash
URL_LIST=('https://gateway.hkeasyspeed.com/webapi/boxxxxxxxxx' 'https://sandbox-gateway.hkeasyspeed.com/webapxxxxxxxxxxx')
 
for URL in ${URL_LIST[*]}; do
    FAIL_COUNT=0                #设置一个变量来统计访问失败次数
 
    for ((i=1;i<=3;i++)); do
        HTTP_CODE=$(curl -o /dev/null --connect-timeout 3 -s -w "%{http_code}" $URL)    #超时时间是3if [ $HTTP_CODE -eq 200 ]; then
            echo "`date +\%Y-\%m-\%d-\%H:\%M:\%S`: $URL OK"      #访问正常打印ok
            break
        else
            echo "$URL retry $FAIL_COUNT"
            let FAIL_COUNT++            #如果不ok的话就执行计数加一
        fi
    done
 
    if [ $FAIL_COUNT -eq 3 ]; then              #如果FAIL_COUNT=3,就发出告警
        echo "Warning: $URL Access failure!"
        error_msg="$URL"
        WEBHOOK_URL="https://open.feishu.cn/open-apis/bot/v2/hook/bd445c52-7xxxxxxxxxxxx"
        req_msg=$( \
        curl -X POST \
          $WEBHOOK_URL \
          -H 'Content-Type: application/json' \
          -d '{
                "msg_type": "post",
                "content": {
                        "post": {
                                "zh_cn": {
                                        "title": "API\t接口异常",
                                        "content": [
                                                [{
                                                        "tag": "text",
                                                        "text": "地址链接: "
                                                },
                                                {
                                                        "tag": "a",
                                                        "text": "请查看",
                                                        "href": "'$error_msg'"
                                                },
                                                {
                                                        "tag": "at",
                                                        "user_id": "ou_600253ef90xxxxxxxxxxxx"    #@所有人的话直接使用"user_id": "all"
                                                }
                                                ]
                                        ]
                                }
                        }
                }
        }') 

        echo "触发报警:" $req_msg
    fi
done

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/906118.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习深度学习——NLP实战(情感分析模型——textCNN实现)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——NLP实战&#xff08;情感分析模型——RNN实现&#xff09; &#x1f4da;订阅专栏&#xff1a;机器学习…

NDK 的配置记录~

NDK 的配置 NDK配置 NDK设置在 AS 路径中设置在 local.properties设置在 build.gradle ndk 和 gradle 对应关系gradle的插件和版本对应关系gradle 插件和NDK对应关系 NDK NDK&#xff08;Native Development Kit&#xff09;是一组工具和库&#xff0c;用于在 Android 平台上开…

加强预算管理一体化,走进全面预算管理的数智化时代

自2021年&#xff0c;国务院印发《国务院关于进一步深化预算管理制度改革的意见》&#xff08;国发〔2021〕5号&#xff09;以来&#xff0c;中央政府对企业实施全面预算管理越来越重视&#xff0c;预算绩效管理逐渐进入大家的视线。各个企业逐步落实应用&#xff0c;推进预算管…

C++的常用基础知识100个

1、定义一个常量 2、数据类型-整型 3、数据类型-字符型 4、数据的输入 5、运算符 6、三目运算符 7、循环案例-99乘法表 8、数组 9、冒泡排序 10、函数的定义 11、函数的分文件编写 12、指针 12、结构体 13、通讯录项目 创建一个空项目&#xff0c;并命名为通讯录管理系统。 14…

“我来拿”APP设计报告

1.设计摘要 想必大家对学校的悬赏互助群并不陌生&#xff0c;学生们在群里提出要求并标明价格&#xff0c;就可以找人帮忙。我们的跑腿平台就是以此为灵感&#xff0c;让学生之间通过一个专门的020平台实现有报酬的互助跑腿&#xff0c;但是相比QQ、微信群&#xff0c;我们让定…

js数组常用的方法(总结)

目录 1.数组头和尾操作——push、pop、unshift/shift 2、数组转为字符串 —— join() 3、数组截取 —— slice() 4、数组更新 —— splice() 5、反转数组 —— reverse() 6、连接数组 —— concat() 7、ES6连接数组 —— ... ES5数组新增方法 8、索引方法 —— indexO…

PgSQL中的DATE_PART使用

用法&#xff1a; DATE_PART(field, source) 这个DATE_PART()函数返回类型为double precision的值 century decade year month day hour minute second microseconds milliseconds dow doy epoch isodow isoyear timezone timezone_hour timezone_minute

水经微图网页版发布

水经微图网页版&#xff0c;可轻松将关注的地点制作成你的个人地图。 你可以在任意位置添加标注点或绘制地图&#xff0c;查找地点并将其保存到你的地图中&#xff0c;或导入地图数据迅速制作地图并保存&#xff0c;你还可以运用图标和颜色展示个性风采&#xff0c;从而可让每…

线程阻塞队列

阻塞队列 一、BlockingQueue 接口 BlockingQueue 是阻塞队列接口实现机制是使用两条线程&#xff0c;允许两个线程同时操作队列一个线程用于写入 Put ,一个线程用于读取 Take当队列中没有数据的情况下&#xff0c;读取线程会自动阻塞&#xff0c;直到有数据放入队列当队列中数…

opencv进阶12-EigenFaces 人脸识别

EigenFaces 通常也被称为 特征脸&#xff0c;它使用主成分分析&#xff08;Principal Component Analysis&#xff0c;PCA&#xff09; 方法将高维的人脸数据处理为低维数据后&#xff08;降维&#xff09;&#xff0c;再进行数据分析和处理&#xff0c;获取识别结果。 基本原理…

蓝牙资讯|消息称富士康投资4亿美元在印度生产苹果 AirPods 耳机

根据印度最大通讯社 PTI 报道&#xff0c;苹果和富士康已经签署一项新的协议&#xff0c;富士康将投资 4 亿美元在印度第四大城市海得拉巴扩建工厂&#xff0c;负责为苹果生产 AirPods TWS 耳机。 报道称苹果已经决定在印度本土生产 AirPods 耳机&#xff0c;富士康计划投资 …

测试框架pytest教程(2)-用例依赖库-pytest-dependency

对于 pytest 的用例依赖管理&#xff0c;可以使用 pytest-dependency 插件。该插件提供了更多的依赖管理功能&#xff0c;使你能够更灵活地定义和控制测试用例之间的依赖关系。 Using pytest-dependency — pytest-dependency 0.5.1 documentation 安装 pytest-dependency 插…

ipad手写笔有必要买吗?开学便宜又好用电容笔推荐

苹果电容笔之所以能够被iPad用户广泛使用&#xff0c;很大程度上是因为其的优秀性能&#xff0c;具有着独特的重力压感功能。但苹果原装的电容笔&#xff0c;价格相对比较高&#xff0c;所以很多人&#xff0c;都选择了普通的平替电容笔。如今许多人都爱用iPad来画图或写笔记&a…

Go 数组

一、复合类型&#xff1a; 二、数组 如果要存储班级里所有学生的数学成绩&#xff0c;应该怎样存储呢&#xff1f;可能有同学说&#xff0c;通过定义变量来存储。但是&#xff0c;问题是班级有80个学生&#xff0c;那么要定义80个变量吗&#xff1f; 像以上情况&#xff0c;最…

攻防世界-command_execution

原题 解题思路 题目告诉了&#xff0c;这可以执行ping命令且没WAF&#xff0c;那就可以在ping命令后连接其他命令。 服务器一般使用Linux&#xff0c;在Linux中可使用“&”连接命令。 ping 127.0.0.1&find / -name "flag*" ping 127.0.0.1&cat /home/f…

Linux中shell脚本常用命令、条件语句与if、case语句

目录 一.shell脚本常用命令 1.1.echo命令 1.2.date命令 1.3.cal命令 1.4.tr命令 1.5.cut命令 1.6.sort命令 1.7.uniq命令 1.8.cat多行重定向 二.条件语句 2.1.条件测试&#xff08;三种测试方法&#xff09; 2.2.正整数值比较 2.3.字符串比较 2.4.逻辑测试 三.i…

深入了解 Java 中 Files 类的常用方法及抽象类的 final 修饰

文章目录 Files 类常用方法抽象类的 final 修饰 &#x1f389;欢迎来到Java学习路线专栏~深入了解 Java 中 Files 类的常用方法及抽象类的 final 修饰 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章专栏&#xff1a…

【C语言学习】二分法查找有序数组中的数

二分查找的基本原理 二分查找的基本逻辑就是每次找区间的中间数&#xff0c;然后与要查找的数进行比较&#xff0c;不断的缩小区间&#xff0c;最后区间中只剩一个数&#xff0c;即为要查找的数。如果不是&#xff0c;则没有该数。 二分查找只适用于有序数组 以数组中的数从左…

计算机视觉领域文献引用

Bag of freebies 炼丹白嫖加油包 Bag of freebies、致力于解决数据集中语义分布可能存在偏差的问题。在处理语义分布偏差问题时&#xff0c;一个非常重要的问题是不同类别之间存在数据不平衡的问题。 一、数据增强篇 Data Augmentation &#xff08;1&#xff09;图片像素调整…

安全模式进不去,解决方法在这!

“我想让电脑进入安全模式&#xff0c;但无论我怎么操作都无法进入。这是怎么回事呢&#xff1f;我怎么才能让电脑进入安全模式呢&#xff1f;请求帮助&#xff01;” 安全模式是Windows操作系统的一种启动选项&#xff0c;用于解决系统问题和故障。然而&#xff0c;有时候用户…