Skip to content

ThousandEyes のアラートを Microsoft Teams へ通知する

以前に Microsoft Teams へ Workflow として Webhook を設定する で言及しましたが Retirement of Office 365 connectors within Microsoft Teams に記載されている通り、Microsoft Teams へ Connector 経由の Incoming Webhook でのメッセージ受信はサポートされなくなり、今後は Power Automate による Workflow でのメッセージ受信へ移行していくことになります。 ですが ThousandEyes の Custom Webhook で用意されているデフォルトテンプレート に記載した「ThousandEyes の Custom Webhook で Microsoft Teams へメッセージ送信するプリセット」は今後は廃止される Incoming Webhook を前提したものになっており、少なくても現時点で Workflow に対応したプリセットは用意されていません。 つまり、ThousandEyes 上で Microsoft Teams へのアラート通知を行うには現状、以下の整理になります。

新/旧 通知方法 プリセット設定の有無 備考
Connector による Incoming Webhook 有り 事前準備されているプリセットを利用可能
Power Automate による Workflow 無し (プリセットが無い為) 手動設定が必要

そこで今回は手動で ThousandEyes に Custom Webhook を設定し、Power Automate による Workflow へアラートを通知する設定方法をメモしておきます。

アラート受信用 Workflow の作成

Microsoft Teams へ Workflow として Webhook を設定する で言及した方法で Microsoft Teams に Workflow を作成します。 Workflow 作成後はメッセージ受信用の URL をコピーしておきます。 URL は以下のような形式になっているはずです。

https://aaaaaaa.japaneast.logic.azure.com:443/workflows/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=ccccccccccccccccccccccccccccccccccccccccccc

Workflow 用 Custom Webhook の設定

ThousandEyes 上で Custom Webhook を作成するには以下の 4 パラメータを用意する必要があります。

  1. URL
  2. ヘッダー
  3. URL パラメータ
  4. ボディ (JSON)

1.URL

「Workflow の URL から ? 以降を削除したもの」が Custom Webhook に設定する URL になります。 今回の例では以下です。

https://aaaaaaa.japaneast.logic.azure.com:443/workflows/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/triggers/manual/paths/invoke

2. ヘッダー

データ部分が JSON 形式になる為、ヘッダーには以下を指定します。

Key Value
Content-Type application/json

3. URL パラメータ

「Workflow の URL から ? 以降を抽出したもの」を加工することで URL パラメータを作成します。 今回の例では「? 以降」は以下でした。

?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=ccccccccccccccccccccccccccccccccccccccccccc

これを ThousandEyes へ設定出来る形に変換すると以下のようになります。 %2F は URL デコードすると / (スラッシュ) になります。

1
2
3
4
5
6
{
    "api-version": "2016-06-01",
    "sp": "/triggers/manual/run",
    "sv": "1.0",
    "sig": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
} 

4. ボディ (JSON)

Workflow 経由 Microsoft Teams へメッセージを送信するには AdaptiveCards 形式にする必要があります。 詳細は Teams でカードを書式設定する に記載されています。 ThousandEyes の Custom Webhhok のボディ部分で利用可能な変数は Webhook Variables にまとめられています。 ボディ部分に設定する JSON のサンプルは以下の通りです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
{
    "type": "message",
    "attachments": [
        {
            "contentType": "application/vnd.microsoft.card.adaptive",
            "contentUrl": null,
            "content": {
                "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
                "type": "AdaptiveCard",
                "version": "1.2",
                "body": [
                    {
                        "type": "Image",
                        "url": "https://app.thousandeyes.com/static/images/logo.png"
                    },
                    {
                        "type": "TextBlock",
                        "text": "**Type:**\n\n{{#eq type.id 2}} Triggered{{else}} Cleared{{/eq}}"
                    },
                    {
                        "type": "TextBlock",
                        "text": "**Test Name (Severity):**\n\n{{alert.test.name}} ({{alert.severity.display}})"
                    },
                    {
                        "type": "TextBlock",
                        "text": "**Alert Rule:**\n\n{{alert.rule.name}} - {{formatExpression alert.rule.expression}}"
                    },
                    {
                        "type": "TextBlock",
                        "text": "**Alert ID:**\n\n[{{alert.id}}](https://app.thousandeyes.com/alerts/list/?__a={{alert.rule.account.id}}&alertId={{alert.id}})"
                    },
                    {
                        "type": "TextBlock",
                        "text": "([Open Alerts Link](https://app.thousandeyes.com/alerts/list/active))"
                    }
                ]
            }
        }
    ]
}

AdaptiveCard に画像を挿入するには "type": "Image" を利用します。 Markdown 記法による画像イメージの挿入は出来ないようです。 尚、SVG 形式は表示されないようです。 ThousandEyes のロゴとしてめぼしいものを探してみたところ下記がありました。 3 と 4 は SVG 形式なのでそもそも AdaptiveCard では利用出来ません。 上記の JSON サンプルでは 1 の画像を利用しました。

No. URL ファイル形式 画像
1 https://app.thousandeyes.com/static/images/logo.png PNG file
2 https://app.thousandeyes.com/static/images/logo_128x128.png PNG file
3 https://app.thousandeyes.com/static/images/ciscoThousandEyesV2.svg SVG file
4 https://www.thousandeyes.com/img/logos/TE-Logo-WhiteOrange.svg SVG fiale

実際の設定例

実際の設定は IntegrationsNew IntegrationCustom Webhook から実施します。 ここまでに整理したパラメータを以下のように設定します。

file

Microsoft Teams へ通知されたアラーム

実際に Microsoft Teams へ通知されたアラームの表示例は以下の通りです。

発生

file

回復

file

参考