Linux

用於監控 API json 響應的 Bash 腳本

  • March 28, 2020

我想監控下面的健康檢查 URL。如果 mongodb 進入斷開狀態,我需要生成警報。我寫了一個bash腳本。似乎它仍然無法正常工作。有什麼可以幫忙的嗎?謝謝

何時對https://www.example.com/healthz進行健康檢查,結果如下:{"mongodb":"connected","redis":"connected"}

我的 Bash 腳本是:

#!/bin/bash
data=$(wget --timeout 5 -O - -q -t 1 https://www.example.com/healthz)
message=$(jq '.Disconnected' <<< "$data")
if [[ "$message" == '"Success"' ]] ;  then
   echo something
else
   send email

JSON 響應中沒有.Disconnected密鑰。

要檢查.mongodb字元串的密鑰,connected您可以這樣做:

#!/bin/sh

if wget --timeout 5 -O - -q -t 1 https://www.example.com/healthz |
  jq --exit-status '.mongodb == "connected"' >/dev/null
then
   # code for the case when MongoDB is connected
else
   # code for the case when MongoDB is *not* connected
fi

這會將響應直接從wgetto傳遞,jq而不是採用迂迴的方式將其儲存在中間變數中。

如果實用程序不輸出or ,則使用--exit-status(或-e) withjq使實用程序以成功的退出狀態(零)退出。如果鍵具有值,我們給出的表達式將輸出。nil``false``jq``true``.mongodb``connected

jq然後我們使用語句中的退出狀態if來選擇要採取的分支。

引用自:https://unix.stackexchange.com/questions/575531