この記事は「もくもく会ブログリレー」 17日目の記事です。
導入目的
個人で使う用途や、身内で Minecraft のサーバーを運用しているケースなど
Discord へ New Relic のアラートを通知させたいケースがあると思います。
そういう方へ向けて New Relic のアラートを Discord へ通知させる方法を紹介します。
通知方法
Discord への通知は Slack のように New Relic 側では対応していないため
Webhook を用いることで Discord へ通知させることができます。
そのため作業の流れとしては、Discord 側で Webhook の設定を行った上で
New Relic の Workflow を設定する必要があります。
Discord側での設定
先述した通り、まず Discord 側で Webhook の設定を行う必要があるため
アラートを通知したいDiscord のサーバーの [ サーバー設定 ] から [ 連携サービス ] を押下します。
その上で、[ ウェブフックを作成 ] を押下することで Webhook を作成することができます。
そして作成後に、 Webhook で Discord へポストする際の名前・画像・チャンネルを定義することができます。
最後に [ ウェブフックURLをコピー ] を押下し、Webhook の URL を控えておきましょう。
New Relic 側の操作で必要になります。
これで Discord 側の操作は完了です。
New Relic側での設定
New Relic での設定は Discord への送信部分に関わる Workflows と Destinations についてのみ
解説を行います。アラートの設定部分に関してはこの記事では説明を行いません。
左ペインから [ Alerts ] > [ Workflows ] の順に押下することで Workflows の画面へ遷移するため
Workflows の画面の右上にある [ Add a workflow ] を押下することで Workflow を作成することができます。
そうすると、Workflow の作成画面に遷移するため、[ workflow 名 ]と [ Filter data ] を入力し
[ Notify ] から [ Webhook ] を選択することで Webhook の設定を行うことができます。
その上で [ Add a destination ] を押下すると、Destinations の作成画面へ遷移し、
ここで Webhook の設定を行うことができるため、以下を入力します。
設定項目 | 設定値 | デフォルト値 |
---|---|---|
Webhook name | Destinations の識別子 | – |
Endpoint URL | [ Discord側での設定 ] で控えた Webhook のURL | – |
Authorization | No authorization | No authorization |
設定後に [ Save destination ] を押下し、設定を保存します。
保存後、Webhook テンプレートの設定画面に遷移するため、Webhook テンプレートの設定を行います。
デフォルトの状態だと、Discord の仕様に則っておらず Discord へ送信することができないため
Discord 仕様に更新をする必要があります。
Discord の Webhook の仕様についてはこちらを参考にしてください。
今回は、必要最低限にどの重要度のどのアラートが上がったのかを把握するために
このような Webhook テンプレートを用意しました。必要に応じてカスタマイズしてください。
{ "username": "New Relic", "avatar_url": "画像のURL", "embeds": [ { "title": {{ json annotations.title.[0] }}, "url": {{ json issuePageUrl }}, "fields": [ { "name": ":warning:Severity", "value": {{ json priority }}, "inline":true }, { "name": ":red_circle:State", "value": {{ json state }}, "inline":true } ] } ] }
設定後に [ Send test notification ] を押下することでテストを行うことができます。
設定が問題なければ Discord へ通知されます。
テスト後に [ Save message ] を押下することで Webhook テンプレートの設定が保存され
Workflow の設定画面に戻るため [ Activate workflow ] を押下することで、Workflow が作成されます。
これで New Relic 側の設定も完了したため、[ Alert Policies ] との紐付けができていれば
アラートが Webhook から Discord へ通知が行われます。
動作確認
アラートの設定を行い、実際にアラートを発砲させることでDiscord へアラートを通知させることができました。
個人で使う用途の場合、Slack より Discord を使ってるケースが多いかと思うので参考にしてみてください!
最後に
明日の記事の担当は 檜山 さんの 「AWS CloudFormation IaC ジェネレーター 生成されたコードが正常にデプロイできるまでにやるべきすべてのエラー対処」 です!
これを機に、 IaC ジェネレーターの知見を広げて活用していきましょう!
引き続き、「もくもく会ブログリレー」を楽しんでください!