寫了個自動巡檢多個接口地址的腳本!

作者:JackTian
文章首發(fā)于公眾號:【杰哥的IT之旅】

沒錯,這次我結(jié)合工作運(yùn)用場景在現(xiàn)網(wǎng)環(huán)境服務(wù)器上部署了一個自動巡檢多個接口地址是否正常并按 crontab 定時任務(wù)通過企業(yè)微信機(jī)器人以文本的形式發(fā)送到告警群的腳本。

思路需求很明確,目前接口服務(wù)器為固定設(shè)備、固定 IP。首先,我們可以先創(chuàng)建一個接口地址檢查的目錄以及需要輸出的日志文件。

第一步:
# mkdir -p /opt/interface-check

第二步:
# cd /opt/interface-check/
# touch interface.log

mkdir [-p] DirName:確保目錄名稱存在,如果目錄名稱不存在,則需要新創(chuàng)建一個。

接著,我們只需在這一臺服務(wù)器上將對接過的省份、企業(yè)的接口地址,以及包括自身回調(diào)地址、涉及相關(guān)內(nèi)部網(wǎng)絡(luò)可以互通的各種接口地址全部收集起來。

第三步:

vim jkdz-check.sh

#!/bin/bash

#1、北京接口地址
http_beijing_addr=接口地址
#2、xxx企業(yè)接口地址
http_xxxqiye_addr=接口地址

# 企業(yè)微信機(jī)器人地址(需要根據(jù)實際機(jī)器人地址配置)
WEBHOOK_URL=企業(yè)微信機(jī)器人地址

# 循環(huán)執(zhí)行檢測方法
while :
do
       date=$(date +%Y-%m-%d-%H:%M:%S)

       #1、北京接口地址檢測
       beijing_status_code=`curl -m 20 -s -o /dev/null -w %{http_code} $http_beijing_addr`
       if [ "$beijing_status_code" -ne 200 ]
       then

        curl --location --request POST ${WEBHOOK_URL} \
--header 'Content-Type: application/json' \
-d '{"msgtype": "text","text": {"content": "'$date' 北京-接口連接異常"}}'
       echo "$date 北京-接口連接異常" >>/opt/interface-check/interface.log

       else

       echo "$date 北京-接口連接正常" >>/opt/interface-check/interface.log
       fi

       #2、xxx企業(yè)接口地址檢測
       xxxqiye_status_code=`curl -m 20 -s -o /dev/null -w %{http_code} $http_xxxqiye_addr`
       if [ "$xxxqiye_status_code" -ne 200 ]
       then

        curl --location --request POST ${WEBHOOK_URL} \
--header 'Content-Type: application/json' \
-d '{"msgtype": "text","text": {"content": "'$date' xxx企業(yè)-接口連接異常"}}'
       echo "$date xxx企業(yè)-接口連接異常" >>/opt/interface-check/interface.log

       else

       echo "$date xxx企業(yè)-接口連接正常" >>/opt/interface-check/interface.log
       fi

exit

done第三步:

vim jkdz-check.sh

#!/bin/bash

#1、北京接口地址
http_beijing_addr=接口地址
#2、xxx企業(yè)接口地址
http_xxxqiye_addr=接口地址

# 企業(yè)微信機(jī)器人地址(需要根據(jù)實際機(jī)器人地址配置)
WEBHOOK_URL=企業(yè)微信機(jī)器人地址

# 循環(huán)執(zhí)行檢測方法
while :
do
       date=$(date +%Y-%m-%d-%H:%M:%S)

       #1、北京接口地址檢測
       beijing_status_code=`curl -m 20 -s -o /dev/null -w %{http_code} $http_beijing_addr`
       if [ "$beijing_status_code" -ne 200 ]
       then

        curl --location --request POST ${WEBHOOK_URL} \
--header 'Content-Type: application/json' \
-d '{"msgtype": "text","text": {"content": "'$date' 北京-接口連接異常"}}'
       echo "$date 北京-接口連接異常" >>/opt/interface-check/interface.log

       else

       echo "$date 北京-接口連接正常" >>/opt/interface-check/interface.log
       fi

       #2、xxx企業(yè)接口地址檢測
       xxxqiye_status_code=`curl -m 20 -s -o /dev/null -w %{http_code} $http_xxxqiye_addr`
       if [ "$xxxqiye_status_code" -ne 200 ]
       then

        curl --location --request POST ${WEBHOOK_URL} \
--header 'Content-Type: application/json' \
-d '{"msgtype": "text","text": {"content": "'$date' xxx企業(yè)-接口連接異常"}}'
       echo "$date xxx企業(yè)-接口連接異常" >>/opt/interface-check/interface.log

       else

       echo "$date xxx企業(yè)-接口連接正常" >>/opt/interface-check/interface.log
       fi

exit

done

通過 while 循環(huán)語句進(jìn)行多次循環(huán)接口地址檢測、if 判斷語句來判斷省份、企業(yè)的接口正常 / 異常情況并輸出打印日志至 /opt/interface-check/interface.log 文件中。

企業(yè)微信添加群機(jī)器人方法:

1、需先建一個群,建好后,通過聊天信息找到添加群機(jī)器人。

2、新建機(jī)器人,填寫好機(jī)器人名稱,保存。

3、添加成功后,創(chuàng)建者可以在機(jī)器人詳情頁看到該機(jī)器人特有的 webhookurl,可以按說明 a 向這個地址發(fā)起 HTTP POST 請求,即可實現(xiàn)給該群組發(fā)送消息。

根據(jù)機(jī)器人配置說明,可以看到有用 curl 工具往群組推送文本消息的示例:

curl 'webhookurl地址' \
   -H 'Content-Type: application/json' \
   -d '
   {
        "msgtype": "text",
        "text": {
            "content": "hello world"
        }
   }'

注意要將 webhookurl 替換成你的機(jī)器人 webhook 地址,content 必須是 utf8 編碼。

當(dāng)前自定義機(jī)器人支持文本(text)、markdown(markdown)、圖片(image)、圖文(news)四種消息類型。

機(jī)器人的 text/markdown 類型消息支持在 content 中使用 <@userid> 擴(kuò)展語法來 @群成員。

除此之外,還有消息類型及數(shù)據(jù)格式(文本類型、markdown類型、圖片類型、圖文類型、文件類型)模版卡片類型(文本通知模版卡片、圖文展示模版卡片)消息發(fā)送頻率限制、文件上傳接口等配置說明,可根據(jù)實際需求參考進(jìn)行配置。

第三步腳本中需根據(jù)實際情況更新接口地址、企業(yè)微信機(jī)器人地址、$http_beijing_addr、beijing_status_code$date 北京-接口連接異常、$date 北京-接口連接正常字段。

配置無誤后,可以先手動驗證下腳本的語法是否無誤,避免出現(xiàn)語法錯誤:未預(yù)期的文件結(jié)尾提示。

腳本中未加 &> /dev/null 相關(guān)參數(shù)配置,因此在驗證腳本時,會有打印信息提示,我們可以放后臺運(yùn)行。

# nohup bash /opt/interface-check/jkdz-check.sh &

# more nohup.out
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   134  100    27  100   107     64    254 --:--:-- --:--:-- --:--:--   254
{"errcode":0,"errmsg":"ok"}  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   140  100    27  100   113     63    267 --:--:-- --:--:-- --:--:--   267
{"errcode":0,"errmsg":"ok"}  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   134  100    27  100   107     61    244 --:--:-- --:--:-- --:--:--   245
{"errcode":0,"errmsg":"ok"}  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   134  100    27  100   107     58    232 --:--:-- --:--:-- --:--:--   232
{"errcode":0,"errmsg":"ok"}  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   140  100    27  100   113     56    235 --:--:-- --:--:-- --:--:--   235
{"errcode":0,"errmsg":"ok"}  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   140  100    27  100   113     58    244 --:--:-- --:--:-- --:--:--   244

寫個 crontab 定時任務(wù),每 2 小時執(zhí)行該腳本。

第四步:
crontab -e
0 */2 * * * sh /opt/interface-check/jkdz-check.sh

最后,我們可以通過企業(yè)微信群查看機(jī)器人發(fā)送的告警信息,效果如下:

輸出的 log 日志情況如下:


以上就是今天所要分享的全部內(nèi)容了。

如果你覺得這篇文章對你有點(diǎn)用的話,為本文點(diǎn)個贊、留個言或者轉(zhuǎn)發(fā)一下,讓更多的朋友看到,因為這將是我持續(xù)輸出更多優(yōu)質(zhì)文章的最強(qiáng)動力!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容