5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

New Relic のアラートを Webhook とワークフローを使ってMicrosoft Teamsに通知

Last updated at Posted at 2024-11-14

 New RelicのアラートをMicrosoft Teamsに通知する方法を紹介します。従来の Webhook URL を使った方法が EOL を迎えるため、Teams のワークフロー機能を使用して連携する方法です。

 New Relicのアラート機能は、システムの異常やパフォーマンスの低下を即座に検知するための強力なツールです。Microsoft Teamsはチームコミュニケーションの効率を高めるために広く利用されています。この2つを連携させることにより、運用チームは迅速に問題へ対処できるようになります。

今回のポイント

この記事で紹介しているポイントは、次の2つです。

  1. Teamsへアラートを連携する新しい方法を知る
    Teamsでワークフローの設定を有効化してWebhookでNew Relicのアラートを連携する方法を紹介します。
  2. Teamsで表示するメッセージのカスタマイズ方法がわかる
    Adaptive Card を使って Teams で表示するメッセージをカスタマイズする方法を紹介します。

最新のアップデートの詳細はこちら
New Relic アップデート一覧

無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!

設定のステップ

  1. Microsoft Teams での ワークフロー の有効化
  2. New Relic でのアラート設定

Microsoft Teams での ワークフロー の有効化

まず、 Microsoft のドキュメントを参考に Microsoft Teams で ワークフローを有効化することから始めましょう。

1. Teams で、通知を受け取りたいチャネルを選択します
2. チャネル名の横にある「その他のオプション」(...)をクリックし、「ワークフロー」を選択します

3. 「Webhook 要求が受信されたときにチャットに投稿する」選択します

4. ワークフローに名前を付け、作成します

5. Webhook を受信するチームとチャネルを選択してワークフローを追加します

6. 作成できると Webhook で使用するワークフローURLが表示されるためコピーしておきます

New Relic でのアラート設定

次に、 New Relic でアラートの「Destination」と「Workflow」を設定し、先ほどの Webhook URL に通知を送るようにします。

Destination の設定

  1. New Relic にログインし、メニューから「Alerts & AI」に移動します
  2. 「ENRICH & NOTIFY」の「Destinations」をクリックします
  3. 「Add a destination」で「Webhook」を選択してクリックします
  4. 「Webhook name」を入力し、「Endpoint URL」に、 Microsoft Teams の Webhook URL を貼り付けます

5. 「Use authorization」の設定は必要ないため、「Save destination」をクリックして保存します

Workflow の設定

Workflow設定の流れ

  1. 「ENRICH & NOTIFY」 の 「Workflows」 をクリックします

  2. 「Add a workflow」 をクリックして新しい Wokflow を作成します

  3. 「Filter data」 で通知するアラートの条件を設定します。今回は Priority が 「CRITICAL」のものを通知する設定にします
    img.png

  4. 「Notify」 の 「Add channel」 から 「Webhook」 を選択します

  5. 「Destination」 から 先ほど作成した Microsoft Teams の destination を選択します
    destinationの選択.png

  6. TemplateをカスタマイズしてPayloadの設定を行います。詳細は後ほど紹介します

  7. 「Save message」をクリックし設定内容を保存します

  8. 「Notify」 に Webhook が追加されていることが確認できたら、「Activate workflow」をクリックしてworkflowの設定は完了です

Payloadの設定

Webhookでどういった内容が通知されるかはPayloadの設定内容によって決まります。
下記の内容を「Template」にコピー&ペーストして内容を確認してみましょう。

従来方式で Webhook を設定している場合は、Payloadの内容を変更する必要があるため注意してください。

Webhookで設定するPayload
{
	"type": "message",
	"attachments": [
		{
			"contentType": "application/vnd.microsoft.card.adaptive",
			"version": "1.0",
			"content": {
				"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
				"type": "AdaptiveCard",
				"body": [
					{
						"type": "TextBlock",
						"size": "Medium",
						"weight": "Bolder",
						"text": {{ json annotations.title.[0] }}
					},
					{
						"type": "TextBlock",
						"text": {{ json issuePageUrl }},
						"wrap": true
					},
					{
						"type": "FactSet",
						"facts": [
							{
								"title": "Priority",
								"value": {{ json priority }}
							},
							{
								"title": "Created date",
								"value": {{#timezone createdAt 'Asia/Tokyo'}}{{/timezone}}
							},
							{
								"title": "Updated date",
								"value": {{#timezone updatedAt 'Asia/Tokyo'}}{{/timezone}}
							},
							{
								"title": "Status",
								"value": {{ json state }}
							}
						]
					}
				],
				"actions": [
					{
						"type": "Action.OpenUrl",
						"title": "View in New Relic",
						"url": {{ json issuePageUrl }}
					}
				]
			}
		}
	]
}

すると 「Preview」に連携される通知内容が表示されます。

変数が置換された通知内容
{
	"type": "message",
	"attachments": [
		{
			"contentType": "application/vnd.microsoft.card.adaptive",
			"version": "1.0",
			"content": {
				"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
				"type": "AdaptiveCard",
				"body": [
					{
						"type": "TextBlock",
						"size": "Medium",
						"weight": "Bolder",
						"text": "SyntheticCheck query deviated from the baseline at least once in 5 minutes on 'synthetics duration'"
					},
					{
						"type": "TextBlock",
						"text": "https://radar-api.service.newrelic.com/accounts/1/issues/xxxxxxx-xxxxx-xxxx-xxxx-xxxxxxx?notifier=SLACK",
						"wrap": true
					},
					{
						"type": "FactSet",
						"facts": [
							{
								"title": "Priority",
								"value": "CRITICAL"
							},
							{
								"title": "Created date",
								"value": "2024-11-12 15:08:28 JST"
							},
							{
								"title": "Updated date",
								"value": "2024-11-12 15:18:21 JST"
							},
							{
								"title": "Status",
								"value": "ACTIVATED"
							}
						]
					}
				],
				"actions": [
					{
						"type": "Action.OpenUrl",
						"title": "View in New Relic",
						"url": "https://radar-api.service.newrelic.com/accounts/1/issues/xxxxxxx-xxxxx-xxxx-xxxx-xxxxxxx?notifier=SLACK"
					}
				]
			}
		}
	]
}

通知のテストと確認

 設定が完了したら、テスト通知を送信して、Microsoft Teamsで正しく表示されるかを確認しましょう。New Relic の workflow 設定ページで「Send a test notification」をクリックすると、テスト通知を送信できます。Teams のチャネルに通知が届けば成功です。
TeamsMessage.png

この記事では Adaptive Cards の形式で通知しています。ワークフローで設定できるWebhookの受信では Adaptive Cards で受信する前提で用意されています。Adaptive Cards の内容をカスタマイズする際は、こちらのドキュメントをご確認ください。

上記のツールで作成した JSON をそのまま貼り付けてもエラーになるため注意してください。
Body部分のみをコピーして使用してください。

カスタマイズと最適化

 Microsoft Teams で受け取る通知の内容は、Workflow の Filter と Payload の設定内容でカスタマイズできます。例えば、Filterの設定で特定の条件や閾値を満たしたときにのみ通知を送るように設定することが可能です。また、Payload の設定をカスタマイズすることでチームのニーズに合わせて、必要な情報が通知されるように最適化できます。
 Payload の設定をカスタマイズする際は、template に {{ を入力すると表示される補完機能を活用するのが便利です。設定可能な変数の候補を表示してくれます。
Payloadの補完機能.png

 Payload のカスタマイズについてはこちらのブログでも紹介されています。

まとめ

 New RelicのアラートをMicrosoft Teamsに通知する設定は、運用チームがシステムの問題に迅速に対処するための効率的な手段です。この記事で紹介したステップに従えば、簡単に設定を行うことができます。問題が発生した際には、運用チームが即座に通知を受け取り、迅速な対応が可能になります。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?