用于监控 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) with会使实用程序以成功退出状态(零)退出。如果键具有值,我们给出的表达式将输出。jqnilfalsejqtrue.mongodbconnected

jq然后我们使用语句中的退出状态if来选择要采用的分支。

相关内容