教學課程:在 Metrics Advisor 中啟用異常通知

重要

從 2023 年 9 月 20 日起,您將無法建立新的 Metrics Advisor 資源。 Metrics Advisor 服務將于 2026 年 10 月 1 日淘汰。

在本教學課程中,您會了解如何:

  • 在 Metrics Advisor 中建立勾點
  • 使用 Azure Logic Apps 傳送通知
  • 將通知傳送至 Microsoft Teams
  • 透過 SMTP 伺服器傳送通知

必要條件

建立 Metrics Advisor 資源

若要探索 Metrics Advisor 的功能,您可能需要 在 Azure 入口網站 中建立 Metrics Advisor 資源 ,以部署您的 Metrics Advisor 實例。

在 Metrics Advisor 中建立勾點

Metrics Advisor 中的勾點是一個橋接器,可讓客戶訂閱計量異常狀況,並透過不同通道傳送通知。 Metrics Advisor 中有四種類型的勾點:

  • 電子郵件勾點
  • Webhook
  • Teams 勾點
  • Azure DevOps 勾點

每個攔截類型都會對應至特定通道,該通道會透過該通道收到異常通知。

使用 Azure Logic Apps、Teams 和 SMTP 傳送通知

使用 Azure Logic Apps 傳送電子郵件通知

有兩個常見選項可用來傳送 Metrics Advisor 中支援的電子郵件通知。 其中一個是使用 Webhook 和 Azure Logic Apps 來傳送電子郵件警示,另一個是設定 SMTP 伺服器,並使用它直接傳送電子郵件警示。 本節將著重于第一個選項,對於沒有可用 SMTP 伺服器的客戶來說,這比較容易。

步驟 1: 在 Metrics Advisor 中建立 Webhook

Webhook 是 Metrics Advisor 服務中所有可用資訊的進入點,並在觸發警示時呼叫使用者提供的 API。 所有警示都可以透過 Webhook 傳送。

選取 [計量建議程式] 工作區中的 [攔截] 索引標籤,然後選取 [ 建立勾點 ] 按鈕。 選擇 Web 攔截 勾點類型。 填入必要的參數,然後選取 [ 確定 ]。 如需詳細步驟,請參閱 建立 Webhook

端點有一個額外的參數 需要填寫,這可以在完成下面的步驟 3 之後完成。

步驟 2: 建立取用邏輯應用程式資源

Azure 入口網站中,依照建立範例使用量邏輯應用程式工作流程中的指示,建立具有空白工作流程的使用量邏輯應用程式資源。 當您看到工作流程設計工具開啟時,請回到本教學課程。

步驟 3: 新增收到 HTTP 要求時的觸發程式

  • Azure Logic Apps 會使用各種動作來觸發定義的工作流程。 針對此使用案例,其使用命名為收到 HTTP 要求時的觸發程序。

  • 在 [收到 HTTP 要求時] 對話方塊中 ,選取 [ 使用範例承載來產生架構 ]。

    Screenshot that shows the When an HTTP request dialog box and the Use sample payload to generate schema option selected.

    將下列範例 JSON 複製到文字方塊中,然後選取 [ 完成 ]。

    {
    "properties": {
        "value": {
            "items": {
                "properties": {
                    "alertInfo": {
                        "properties": {
                            "alertId": {
                                "type": "string"
                            },
                            "anomalyAlertingConfigurationId": {
                                "type": "string"
                            },
                            "createdTime": {
                                "type": "string"
                            },
                            "modifiedTime": {
                                "type": "string"
                            },
                            "timestamp": {
                                "type": "string"
                            }
                        },
                        "type": "object"
                    },
                    "alertType": {
                        "type": "string"
                    },
                    "callBackUrl": {
                        "type": "string"
                    },
                    "hookId": {
                        "type": "string"
                    }
                },
                "required": [
                    "hookId",
                    "alertType",
                    "alertInfo",
                    "callBackUrl"
                ],
                "type": "object"
            },
            "type": "array"
        }
    },
    "type": "object"
     }
    
  • 選擇方法為 'POST',然後選取 [ 儲存 ]。 您現在可以看到 HTTP 要求觸發程式的 URL。 選取複製圖示以複製它,並將它填回 步驟 1 中的端點

    Screenshot that highlights the copy icon to copy the URL of your HTTP request trigger.

步驟 4: 使用 'HTTP' 動作新增下一個步驟

透過 Webhook 推送的訊號只包含時間戳記、alertID、configurationID 等有限資訊。需要使用訊號中提供的回呼 URL 來查詢詳細資訊。 此步驟是查詢詳細的警示資訊。

  • 選擇 'GET' 的方法

  • 從 [URI] 中的 [動態內容] 清單中選取 [callBackURL]。

  • 在 'Headers' 中輸入 'Content-Type' 的索引鍵,並輸入 'application/json' 的值

  • 在 [標頭] 中輸入 'x-api-key' 的索引鍵,然後在您的 Metrics Advisor 工作區中按一下 [API 金鑰] 索引標籤來取得此金鑰。 此步驟是確保工作流程有足夠的 API 呼叫許可權。

    Screenshot that highlights the api-keys

步驟 5: 將下一個步驟新增至 「剖析 JSON」

您需要剖析 API 的回應,以便更輕鬆地格式化電子郵件內容。

注意

本教學課程只共用快速範例,最後的電子郵件格式必須進一步設計。

  • 從 [內容] 中的 [動態內容] 清單中選取 [本文]
  • 選取 [使用範例承載來產生架構 ]。 將下列範例 JSON 複製到文字方塊中,然後選取 [ 完成 ]。
{
    "properties": {
        "@@nextLink": {},
        "value": {
            "items": {
                "properties": {
                    "properties": {
                        "properties": {
                            "IncidentSeverity": {
                                "type": "string"
                            },
                            "IncidentStatus": {
                                "type": "string"
                            }
                        },
                        "type": "object"
                    },
                    "rootNode": {
                        "properties": {
                            "createdTime": {
                                "type": "string"
                            },
                            "detectConfigGuid": {
                                "type": "string"
                            },
                            "dimensions": {
                                "properties": {
                                },
                                "type": "object"
                            },
                            "metricGuid": {
                                "type": "string"
                            },
                            "modifiedTime": {
                                "type": "string"
                            },
                            "properties": {
                                "properties": {
                                    "AnomalySeverity": {
                                        "type": "string"
                                    },
                                    "ExpectedValue": {}
                                },
                                "type": "object"
                            },
                            "seriesId": {
                                "type": "string"
                            },
                            "timestamp": {
                                "type": "string"
                            },
                            "value": {
                                "type": "number"
                            }
                        },
                        "type": "object"
                    }
                },
                "required": [
                    "rootNode",
                    "properties"
                ],
                "type": "object"
            },
            "type": "array"
        }
    },
    "type": "object"
}

步驟 6: 將下一個步驟新增至 「建立 HTML 資料表」

不過,根據您的案例,API 呼叫已傳回一堆資訊,並非所有資訊都很有用。 選擇您關心的專案,並想要包含在警示電子郵件中。

以下是 HTML 資料表的範例,其中選擇要包含在警示電子郵件中的 'timestamp'、'metricGUID' 和 'dimension'。

Screenshot of html table example

步驟 7: 新增最後一個步驟以「傳送電子郵件」

有數個選項可以傳送電子郵件,包括 Microsoft 託管和協力廠商供應專案。 客戶可能需要有其所選選項的租使用者/帳戶。 例如,選擇 [Office 365 Outlook] 作為伺服器時。 登入程式將會進行幫浦,以建置連線和授權。 系統會建立 API 連線,以使用電子郵件伺服器傳送警示。

在電子郵件中填入您想要包含至 「內文」、「主旨」的內容,並在 「收件者」中填入電子郵件地址。

Screenshot of send an email

下一步

請前進到下一篇文章,以瞭解如何建立。