Linux
用於監控 API json 響應的 Bash 腳本
我想監控下面的健康檢查 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
這會將響應直接從
wget
to傳遞,jq
而不是採用迂迴的方式將其儲存在中間變數中。如果實用程序不輸出or ,則使用
--exit-status
(或-e
) withjq
使實用程序以成功的退出狀態(零)退出。如果鍵具有值,我們給出的表達式將輸出。nil``false``jq``true``.mongodb``connected
jq
然後我們使用語句中的退出狀態if
來選擇要採取的分支。