API json応答を監視するためのBashスクリプト

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

ベストアンサー1

.DisconnectedJSONレスポンスにはキーはありません。

.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直接渡されます。jq

ユーティリティが出力されない場合--exit-status(または-e)を使用すると、ユーティリティは正常終了ステータス(0)で終了します。キーに値がある場合、私たちが提供した式が出力されます。jqnilfalsejqtrue.mongodbconnected

jq次に、ステートメントの終了状態を使用して、if取る分岐を選択します。

おすすめ記事