最近、New RelicのAlertの通知先をメールから、ChatWorkに変更しました。
Slack等と比較すると、ChatWorkは外部サービスとの連携が弱く、New Relicとの連携もなかなか面倒です。
数カ月前に、zapierというハブサービスが出てきたものの、無償版だと制限が厳しく、結局Railsで自作しました。
※ zapierの有償版は、それほど高くないので、本格的にChatWork連携を活用するのなら使うのは有りだと思います。
New RelickからChatWorkへの通知の流れ
New Relic のWebhookを利用して、以下の流れで通知されます。
- New RelicでAlert発生
- New RelicがWebhookで指定されたURLを呼ぶ
- New Relicからの情報を受け取り、ChatWorkへ通知
連携手順
前提
- ChatWorkのAPIキーは、既に取得済みであること
- New Relic のAlertは、最近?新しくなったBETA版を利用
1. Webhookを受け取るRailsプログラムの準備
New Relic側の設定の前に、Webhookの受け口の準備が必要になります。 New Relicからは、以下のパラメータ(一部略)がPOSTで渡されるので、このパラメータを受け取って、ChatWorkへ通知するプログラムを準備します。
pp params => {"owner"=>"", "severity"=>"CRITICAL", "current_state"=>"open", "policy_name"=>"CPU High", "targets"=> [{"id"=>"123456", "name"=>"xxxx-server", "link"=> "https://rpm.newrelic.com/accounts/xxxxxx/servers/xxxxxxx?tw[start]=1454862970&tw[end]=1454864770", "labels"=>{}, "product"=>"SERVERS", "type"=>"Server"}], "event_type"=>"INCIDENT", "runbook_url"=>nil, "details"=>"CPU > 85% for at least 5 minutes", "condition_name"=>"CPU % (High)", "timestamp"=>1454864765138, }
ちなみに、ChatWorkへ通知は、以下のgemを使えば簡単に実装できます。
2. New RelicのChannels で Webhook URLを登録
New Relicの画面で、
Alerts > Notification channels > New notification channel
を開くとchannelを選択できます。
Slack等はデフォルトで用意されてますが、ChatWorkはないのでWebhookを選びます。
1で準備したRailsのURLを指定し、Saveすれば登録されます。
3. New RelicのAlertで、Channelsを選択
あとは、Alertの条件を設定して、notification channelに、2で準備したchannelを選択すれば完了です。
Alertが発生すると、
ChatWokにAlert情報が通知されます。
メール通知だと、Alertに対応する前にまず「今メール通知来ているAlertの件だけど・・・」とワンクッション説明が必要でしたが、チャット通知だと即対応に入れるので楽ですね。