読者です 読者をやめる 読者になる 読者になる

ワタナベ書店

読んだ本の感想とか美味しかったお店の紹介とかLinuxの知見とか好きなことを好きなだけ書くブログです。

Mackerel+IFTTTで運用担当者がアラートに絶対に気づく仕組みを作る

Linux テクノロジー

Mackerelアドベントカレンダー 4日目です。

昨日は@dolpenさんの「RTX1200の状態をMackerelに監視させる」でした。

qiita.com

ネットワーク機器が高負荷で落ちそうとかパケットロスしたときに、グラフでどんな通信があったのかとか確認できると便利ですよね。

そのアラート気付いてます?放置してません?

Mackerelとても便利ですよね。Mackerelサーバにクライアントから情報をプッシュするタイプの監視サービスなので、 自宅サーバと外部のサーバを1つの監視に集約できたり、
監視サーバの監視問題(監視サーバの監視はどうしたらいいか)もMackerelに監視を任せることで解決しました。

しかし、監視がどんなに便利になっても、アラートがなった時に対応が出来なければ意味がありません。
導入当時は、監視がこんな簡単にできるなんて便利だなぁとしみじみ思いつつ、アラートに対して対応出来ないことが幾度かありました。
アラートメールに気づかなかったり、寝てる時にアラートを受け取ったり、ゲームをして気づかなかったり、後で良いかと放置したり。
個人のサーバの監視だからこそ、「まあ、いいか」で終わっているのですが、世間には1人で運用を担当している人がいて、アラートが出たら深夜だろうが起きて対応しなければならない大変な人もいらっしゃるのではないかと思います(いないと言って欲しい・・・!)
ということで、MackerelとIFTTTを組み合わせて運用担当者がゲームしてようが寝ていようが容赦なくアラート対応させる仕組みアラートに絶対に気づく仕組みを作ってみました。

IFTTTとは

IFTTTとはWEBサービス同士をつなげて連携させることができるサービスです。
レシピと呼ばれるそれぞれのサービスをつなげた仕組みを公開することができ、
Instagramに写真を投稿したらDropboxに保存とか 今日の天気を朝7時にスマホに通知等、 便利な組み合わせが公開されています。

IFTTTと連携する

Mackerelには豊富な通知機能がり、その中の一つ、WebhookからIFTTTと連携させます。
Webhookは複数追加可能なので、いま別のサーバーに設定していても、更に追加できるので安心。
IFTTTのMakerチャンネルから、IFTTTを叩く用のURLを取得します。

ifttt.com

例えば、イベントの名前が[mackerel]なら、 https://maker.ifttt.com/trigger/mackerel/with/key/yourkey って感じになります。
このURLをMackerelのWebhookに登録します。

help-ja.mackerel.io

確認したところ、一度、reflector.ioというwebhook転送サービスで一度パススルーしないとIFTTTのWebhookを叩けないようです。すみません。

reflector.ioとはSendGridというクラウドメールサービスがやっているサービスでSendGridユーザーでなくても使えるwebhook転送サービスです。 リクエスト数は制限されますが、結構ゆるく、それで無料で使えるので愛用してます。

sendgrid.kke.co.jp

以下、reflector.ioにIFTTTの転送設定を追加する方法を追記します。

reflector.ioにサインインして、新しいwebhookを作成

f:id:iuyui:20151204172246p:plain

Add First Groupを選択して転送設定を追加

f:id:iuyui:20151204172527p:plain

グループ名を任意のものにしてパススルーを選択

f:id:iuyui:20151204172616p:plain

URLにIFTTTで生成した転送先を指定

f:id:iuyui:20151204172704p:plain

reflector.ioの転送URLが発行されるので、それをMackerelに登録

f:id:iuyui:20151204172840p:plain

こんなふうに。

f:id:iuyui:20151204172803p:plain

これで下準備は完了。あとはreflector.ioのWebhookに登録したEvent NameのURLからIFTTT経由でいろんなサービスを起動させてアラートを見逃さないようにします。

(追記・修正ここまで)

レシピ

アラートを検知すると部屋の明かりが点滅する

APIで操作可能なLED電球、Philips hueを使ってアラートを検知したときに部屋の明かりを点滅させます。

Philips hue(ヒュー) スターターセット 929000259907 リテールパッケージ

Philips hue(ヒュー) スターターセット 929000259907 リテールパッケージ

使用しているレシピはこれ。Mackerelに登録したEvent Nameと、hueの電球のどれを点滅させるかを指定します。
IFTTT Recipe: Mackerelのアラート発報時に照明を点滅させる connects maker to philips-hueifttt.com

うおっまぶしっ

これは、結構簡単ですし、絶対に気づくのでおすすめです。

アラートを検知するとテレビが消える

IRKitという赤外線信号をネット経由で操作できるデバイスを使います。

IRKitから赤外線情報を取得してIFTTTのレシピに記載してください。

IFTTT Recipe: Mackerelのアラート発報時にテレビを消す connects maker to makerifttt.com

あああ・・・・!ゲームしてたのに。

アラートを検知するとTodoにアラート対応のTodoが追加される

アラートを検知するとTodoサービスにアラートを確認するというTodoを追加します。
こちらはすぐに対応するためというより、アラートがなったことを覚えておくものです。
todoistとiosのリマインダの2つのレシピを貼っておきます。

IFTTT Recipe: MackerelのアラートからTodoを生成 connects maker to todoistifttt.com

IFTTT Recipe: MackerelのアラートからTodoを生成 connects maker to ios-remindersifttt.com

MackerelのWebhookは便利

ということで、MackerelとIFTTTの組み合わせはとても便利という話でした。IFTTTを使えばアラートを起点にデバイスやサービスを操作できるので運用担当者の部屋の明かりを容赦なく点滅させたり、テレビを消したり、音を再生したり、Todoに追加したりして、アラートに対する気付きを増やしてくれるので障害が手遅れになる前に対処できるようになるはずです。

明日は@kariaさんです!

おまけ

更に我が家ではLaMetricというLEDスマートディスプレイにアラートを通知するようにしています。
reflector.ioというwebhook転送・加工サービスを使ってディスプレイにアラート内容が通知されるようにしました。とても便利。