Uptime Robotはウェブサイトが落ちた時に通知してくれるが、その通知方法は限られている。スマフォ・アプリがあって通知で受け取れることができれば良さそうだが、残念ながら公式アプリはない。そこで対応しているWebhookとIFTTTのMakerチャンネルを使うことでiOSの通知に送ることにした。

IFTTT側でMakerチャンネルの設定が終わってるとすると、まずはUptime Robot側でMy SettingsからAlert Contactを追加する。

設定
Friendly Name IFTTT Maker
URL to Notify https://maker.ifttt.com/trigger/uptimerobot/with/key/{secret_key}?
JSON {"value1":"monitorFriendlyName","value2":"alertDetails"}

URLではイベントとしてuptimerobotなどを指定しておく(落ちた時と復活した時の両方で送られると思うので、website_downとかは付けないほうが良い)。また最後に?をつける必要がありそう。Makerチャンネルには3つまでしか値を渡せないので、モニターの名前(monitorFriendlyName)とエラーの詳細(alertDetails)が確定だろう。後で修正することはできないので、間違えた場合は消して作りなおす必要がある。

作り終わったら忘れずに各モニターの設定から通知先でIFTTT Makerにチェックを入れておく。

IFTTTレシピはトリガーがMakerチャンネルでアクションがIF Notificationsチャンネル(最近iOSとAndroidの通知チャンネルが統合された)になる。Makerチャンネル側では先ほどAlert ContactのURLで指定したイベント名uptimerobotを指定するだけだ。IF Notificationチャンネルの設定は以下のような簡単なものしか作ることはできなそうだ。IFアプリ経由での通知なので、Uptime Robotからの通知であることがすぐわかるようにラベルは付けておいた方が良い。

フィールド
Notification Uptime Robot: {{Value1}} ({{Value2}})

これでウェブサイトが落ちた場合にiPhone等へ次のような通知が送られてくる。

Uptime Robot: Hail2u.net (HTTP 409 - Conflict)

もちろん回復した時にもちゃんと通知が送られる。

Uptime Robot: Hail2u.net (HTTP 200 - OK)

GitHub Pagesが落ちた時やCloudflareが調子悪い時にちゃんと通知が来るところまでは確認した。