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취할 분기를 선택합니다.

관련 정보