シェルスクリプトで簡易の死活監視をしてSlackに通知する

公開日時

Raspberry Pi上で動かしているサービスで簡易の死活監視がしたかったので以下のシェルスクリプトを作った。

ヘルスチェックURLが[[{"message":"ok"}]]を返さなかった場合はSlackにアラート通知を飛ばすようになっている。

#!/bin/bash

health=`/usr/bin/curl -s 'https://localhost:3000/'`
if [ "$health" != '{"message":"ok"}' ]; then
  echo $health
  data=$(cat << EOS
{
 "attachments":[
    {
       "fallback":"xxx service is down",
       "pretext":"",
       "color":"#D00000",
       "fields":[
          {
             "title":"xxx service is down",
             "value": "please check this"
          },
       ]
    }
 ]
}
EOS
)

  /usr/bin/curl -X POST -H 'Content-type: application/json' --data "${data}" 'https://hooks.slack.com/services/WEBHOOK_TOKEN'
fi

cronで5分おきにスクリプトを実行するようにすれば簡易の死活監視のできあがり。

*/5 * * * * $HOME/health_alert/xxx-service.sh

RaspberryPi自体が落ちた時はどうしようもないけど簡易なので良しとする。

参考


Related #raspberry pi

ngrokの代わりにCloudflare Tunnelを使う

botやwebhookを利用するサービスの開発が捗る

Dockerのデータ保存場所を変更する

/etc/docker/daemon.jsonに追記

Alexaにゲーミングマシンと周辺環境を終了してもらう

「Alexa Steamを終了して」ができるようになった

Alexaにゲーミングマシンと周辺環境を起動してもらう

PC起動、TV起動、サウンドバー起動がまとめてできるようになった

docker-compose build時に「no Space Left on Device」が発生

1年前にも同じエラーにハマってた