通知やアラートの方法
障害は適切な人が知ることで初めて価値があります。チームが既にいる場所や独自のシステムにwebhooksを通じて通知を送信します。
チャンネル
すべてのチャンネルに同じメッセージが送信されます:どのモニターか、いつからか、そしてその理由。以下に利用可能なチャンネルのリストがあります。
-
Email すべてのプラン
任意のアドレスにメッセージを送信します。メールアドレスは一度確認する必要があります。
-
Webhook (POST) すべてのプラン
指定されたURLに関連データを含むJSONボディを送信します。自動化のために、チケットを開く、人を呼び出す、ステータスライトを切り替えるなどが可能です。
-
Webhook (GET) すべてのプラン
POST webhookと同じフィールドを使用しますが、GETリクエストを受け取るレシーバー向けにクエリパラメータとして送信します。
-
PagerDuty スタータープラン以上
Events API v2を通じてインシデントを送信します。障害発生時に開き、復旧時に解決されます。その後はPagerDutyのエスカレーションが処理します。
-
Slack プロプランおよびビジネスプラン
チャンネルにメッセージを送信します。ダウン時は赤、復旧時は緑で、Webhookを通じて通知されます。
-
Microsoft Teams プロプランおよびビジネスプラン
同じメッセージをTeamsチャンネルにWebhookを通じて送信します。
-
Discord プロプランおよびビジネスプラン
同じメッセージをDiscordチャンネルにチャンネルWebhookを通じて送信します。
-
Telegram プロプランおよびビジネスプラン
同じメッセージをチャットに、あなた自身のボットを通じて送信します。
誰が何をいつ知るか
最初に確認済み
1つのプローブの判断だけでは何も送信されません。3つの大陸のプローブが一致した場合に障害と判断されるため、アラートはネットワークの問題ではなくサイトがダウンしていることを意味します。
ルールとエスカレーション
ルールは、誰がどのモニターについていつ通知を受けるかを定義します。オンコールリストを連絡先グループに追加し、メンバーごとに遅延を設定します。これがエスカレーションポリシーとして機能します。
復旧時に1回通知
障害について通知を受けた全員に、終了時とその継続時間が通知されます。障害が終了したことを伝えるために起こすことはありません。
必要になる前にテスト
すべてのアドレスにはボタンがあり、実際のアラートと同じ経路でテストを送信します。本物の障害と間違えられないように文言が設定されています。
Webhook:あなたのシステム用
Webhookアドレスはお客様のURLです。障害が確認されたとき、復旧したとき、またはテストボタンを押したときに呼び出します。POSTはフィールドをJSONボディとして送信し、GETはクエリパラメータとして送信します。このURLは暗号化されて保存され、再度完全には表示されません。URLを持つ人はそれにPOSTできるためです。
| フィールド | 内容 |
|---|---|
| reason | 障害が確認されたときはdown、終了時はrecovery、ボタンが押されたときはtest |
| monitor | モニターの名前 |
| monitor_id | そのid |
| target | チェック対象:URL、ホストまたは名前 |
| type | チェックの種類(https、dns、ssl_certなどの短い名前) |
| cause | 失敗理由(判明している場合は簡潔に) |
| error_class | プログラムが分岐できる短い名前(timeout、connection、certificate_expiredなど) |
| started | 障害が開始した時刻 |
| confirmed_at | 障害が確認された時刻 |
| confirmed_from | 確認した大陸の名前をリストとして表示します。 |
| degraded | モニターがダウンではなく遅延またはパケットロスしている場合はtrue |
| resolved | 復旧時の終了時刻(ISO 8601タイムスタンプ) |
| duration | 復旧時の継続時間(言葉で表記) |
| incident_id | インシデントのID(障害と復旧で同じ) |
値がないフィールドはJSONではnullとなり、GETでは省略されます。400未満のステータスで応答する必要があります。それ以外は配信失敗とみなされ、30秒、2分、10分後に再試行されますが、15分以内に配信されないアラートは履歴となり、ニュースではありません。