死活監視には大きく分けて二つの方法があります。
- チェックして、正常でなければ異常と判定する
- 常に正常報告し、報告が途切れたら異常と判定する
(もちろん分類軸は他にもありますけどね。push 型と pull 型とか...)
この記事では後者である報告が途切れたら異常と判定する方法のサービスである Healthchecks.io を使ってみるというものです。
以前、こちらの記事で書いたものとアイデアとしては同じです。私なんぞが考えるようなことは、既に世の中にいくらでも存在するということですね(当たり前)
Healthchecks とは
Healthchecks は以下の URL で公開されている OSS で、自前の環境に構築して使用することも出来ます。
Healthchecks.io はこの Healthchecks を SaaS として利用できるようにしたサービスです。監視対象が20以下といった制限下では無料で利用できます。
今回は、この Healthchecks.io を使ってみます。
アカウント作成
https://healthchecks.io/ にアクセスしたら、左上にある「Sign Up」をクリックします。
メールアドレスを入力するダイアログが表示されますので、入力して「Email Me a Link」をクリックします。
メールアドレス宛に招待メールが届きますので、「Log in」をクリックします。
Healthchecks.io にアカウントが作成され、ログインされます。この時点ではパスワードが設定されてませんのでご注意ください。
「Account」-「Account Settings」からパスワードと2要素認証を設定しておきます(下の画像はパスワードのみ設定済の状態です)。
死活監視を行う
「My First Check」というチェックが最初から用意されていますので、こちらを利用します。
「Period Grace」というカラムをクリックすると、ダイアログが開きます。最初は1日と1時間に設定されていますが、テストを行うのには間隔が長すぎますので、Period/Grace Time を共に 1 分に変更し、「Save」をクリックします。
「Ping URL」カラムにある URL をクリックすると、報告用 URL がクリップボードにコピーされます。この URL を使って以下のようなテストスクリプトを用意します。
#!/bin/bash
curl -fsS -m 10 --retry 5 -o /dev/null https://hc-ping.com/xxxxx
監視対象になるホストの crontab に以下の記述を行います。
* * * * * /home/hoge/bin/check.sh
Checks の右端にある「...」をクリックして表示される詳細画面の Events 欄に通知があったことが表示されます。
crontab を書き換え、テストスクリプトを停止します。
# * * * * * /home/hoge/bin/check.sh
Events の Status が down になりました。
同時にメールで通知が届きます。
crontab を元に戻して、テストスクリプトの実行を再開させます。
* * * * * /home/hoge/bin/check.sh
Events の Status が up になりました。
メールでの up 報告も届いています。
Slack に通知する
最初の例では通知先がメールでしたが、これは用意されていた設定でして、他の通知先に変更することもできます。ここでは Slack に通知するように変更してみます。
CHECKS の隣の INTEGRATIONS メニューをクリックすると、以下の画面になります。
Add More を辿っていくと Slack がありますので、「Add Integration」をクリックします。
ガイドに従って設定を行います。最初に「Add to Slack」をクリックします。
Slack のアプリ権限設定画面に遷移しますので、Workspace と Webhook 用のチャンネルを選択して、「許可する」をクリックします。
Slack 通知の integration が追加されました。
CHECKS に戻ると、integrations に Slack が追加されています。メール通知は不要なので、クリックして不活性化しておきます。
先ほどと同じ手順でテストスクリプトを停止させると、Slack に down の通知が来ました。
テストスクリプトを再開させると、Slack に up 通知が来ました。



















