教學課程:使用 Azure 事件方格和 Azure Logic Apps 監視虛擬機器的變更

適用於:Azure Logic Apps (使用量)

您可以使用 Azure 事件方格和 Azure Logic Apps 監視與回應在 Azure 資源或外部資源中發生的特定事件。 您可以使用 Azure Logic Apps 以最少的程式碼建立自動化消費邏輯應用程式工作流程。 您可以讓這些資源將事件發佈至 Azure 事件方格。 接著,Azure 事件方格會將這些事件發送給以佇列、Webhook 或事件中樞作為端點的訂閱者。 訂閱者的工作流程會先等待這些事件抵達 Azure 事件方格後,再執行步驟來處理事件。

例如,以下是發行者可以透過 Azure 事件方格服務傳送給訂閱者的一些事件:

  • 建立、讀取、更新或刪除資源。 例如,您可以監視可能會產生 Azure 訂用帳戶費用並會影響帳單的變更。

  • 從 Azure 訂用帳戶中新增或移除人員。

  • 您的應用程式會執行特定動作。

  • 新的訊息會出現在佇列中。

本教學課程會建立在多租用戶 Azure Logic Apps中執行的取用邏輯應用程式資源,並以取用價格模式為基礎。 使用此邏輯應用程式資源,您可以建立工作流程來監視虛擬機器的變更,並傳送有關這些變更的電子郵件。 當您建立的工作流程具有 Azure 資源的事件訂閱時,事件會透過 Azure 事件方格從該資源流向工作流程。

Screenshot showing the workflow designer with a workflow that monitors a virtual machine using Azure Event Grid.

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

  • 建立可從 Azure 事件方格監視事件的邏輯應用程式資源和工作流程。
  • 新增可特別檢查虛擬機器變更的條件。
  • 在虛擬機器變更時傳送電子郵件。

必要條件

建立邏輯應用程式資源

  1. 使用您的 Azure 帳戶登入 Azure 入口網站

  2. 在 Azure 首頁中,選取 [建立資源]>[整合]>[邏輯應用程式]

    Screenshot of Azure portal, showing button to create a logic app resource.

  3. 在 [建立邏輯應用程式] 之下,提供邏輯應用程式資源的相關資訊:

    Screenshot of logic apps creation menu, showing details like name, subscription, resource group, and location.

    屬性 必填 Description
    訂用帳戶 Yes <Azure-訂閱-名稱> 在本教學課程中,請針對所有服務選取相同的 Azure 訂用帳戶。
    資源群組 Yes <Azure-resource-group> 邏輯應用程式的 Azure 資源組名稱,您可以針對本教學課程中的所有服務選取此名稱。
    邏輯應用程式名稱 Yes <logic-app-name> 提供邏輯應用程式的唯一名稱。
    發行 Yes 工作流程 選取邏輯應用程式的部署目的地。 在本教學課程中,請確定您選取的是 [工作流程],這會部署至 Azure。
    區域 Yes <Azure-region> 在本教學課程中,針對所有服務選取相同的區域。
    方案類型 Yes 耗用 邏輯應用程式的資源類型。 在本教學課程中,請確定您選取的是 [取用]

    注意

    如果您稍後想要改用 Azure 事件方格作業搭配標準邏輯應用程式資源,請確定您建立「具狀態」的工作流程,而不是無狀態工作流程。 本教學課程僅適用於遵循不同使用者體驗的消費邏輯應用程式。 若要在設計工具中將 Azure 事件方格作業新增至工作流程,請在 [作業選擇器] 窗格上,確定您選取 [Azure] 索引標籤。如需進一步了解多租用戶與單一租用戶 Azure Logic Apps,請檢閱單一租用戶與多租用戶比較和整合服務環境

  4. 當您完成時,選取 [檢閱 + 建立]。 在下一個窗格中確認提供的資訊,然後選取 [建立]

  5. 在 Azure 部署您的邏輯應用程式之後,請選取 [移至資源]

    工作流程設計工具會顯示含有簡介影片和常用觸發程序的頁面。

  6. 捲動到影片視窗和常用的觸發程序區段下方。

  7. 選取 [範本] 下的 [空白邏輯應用程式]

    注意

    工作流程範本庫僅供消費邏輯應用程式使用,不適用於標準邏輯應用程式。

    Screenshot showing Azure Logic Apps templates with selected

    工作流程設計工具現在會顯示觸發程序,可用於啟動邏輯應用程式。 每個工作流程都必須使用觸發程序啟動,觸發程序會在特定事件發生或符合特定條件時引發。 每次引發觸發程序時,Azure Logic Apps 會建立執行邏輯應用程式的工作流程執行個體。

新增 Azure 事件方格觸發程序

現在,新增 Azure 事件方格觸發程序,用以監視您虛擬機器的資源群組。

  1. 在設計工具的搜尋方塊中,輸入 event grid。 從觸發程序清單中選取 [當資源事件發生時] 觸發程序。

    Screenshot that shows the workflow designer with the selected Azure Event Grid trigger.

  2. 出現提示時,使用您的 Azure 帳戶認證登入 Azure 事件方格。 在 [租用戶] 清單中 (其中顯示與 Azure 訂用帳戶相關聯的 Microsoft Entra 租用戶),檢查出現的租用戶是否正確,例如:

    Screenshot that shows the workflow designer with the Azure sign-in prompt to connect to Azure Event Grid.

    注意

    如果您已使用 @outlook.com 或 @hotmail.com 等個人 Microsoft 帳戶登入,Azure 事件方格觸發程序可能不會正確顯示。 如需因應措施,請選取 [與服務主體連線],或以您與 Azure 訂用帳戶相關聯的 Microsoft Entra 的成員身分進行驗證,例如 user-name@emailoutlook.onmicrosoft.com。

  3. 現在以邏輯應用程式訂閱發行者的事件。 提供如下表中所述的事件訂閱詳細資料,例如:

    Screenshot that shows the workflow designer with the trigger details editor open.

    屬性 必填 Description
    訂用帳戶 Yes <event-publisher-Azure-subscription-name> 選取與「事件發行者」相關聯的 Azure 訂用帳戶名稱。 在本教學課程中,選取虛擬機器的 Azure 訂用帳戶名稱。
    資源類型 Yes <event-publisher-Azure-resource-type> 選取事件發行者的 Azure 資源類型。 如需有關 Azure 資源類型的詳細資訊,請參閱 Azure 資源提供者和類型。 在本教學課程中,選取 Microsoft.Resources.ResourceGroups 值以監視 Azure 資源群組。
    資源名稱 Yes <event-publisher-Azure-resource-name> 選取事件發行者的 Azure 資源名稱。 這份清單會根據您選取的資源類型而有所不同。 在此教學課程中,請選取包含虛擬機器的 Azure 資源群組名稱。
    事件類型項目 No <event-types> 選取要篩選的一或多個特定事件類型,並傳送至您的 Azure 事件方格。 例如,您可以選擇性地新增這些事件類型,以偵測資源何時遭到變更或刪除:

    - Microsoft.Resources.ResourceActionSuccess
    - Microsoft.Resources.ResourceDeleteSuccess
    - Microsoft.Resources.ResourceWriteSuccess

    如需詳細資訊,請參閱下列主題:

    - Azure Event Grid 資源群組事件結構描述
    - 了解事件篩選
    - 篩選 Azure 事件方格的事件

    若要新增選擇性屬性,請選取 [新增參數],然後選取您想要的屬性。 No {請參閱說明} * 前置詞篩選條件:在此教學課程中,將此屬性保留空白。 預設行為會比對所有的值。 不過,您可以指定前置詞字串作為篩選條件,例如,特定資源的路徑和參數。

    * 後置詞篩選條件:在此教學課程中,將此屬性保留空白。 預設行為會比對所有的值。 不過,您可以指定前置詞字串作為篩選條件,例如,副檔名 (如果只想要特定檔案類型)。

    * 訂閱名稱:在此教學課程中,您可以為事件訂閱提供唯一名稱。

  4. 儲存您的邏輯應用程式工作流程。 在設計師工具列上選取儲存。 若要在工作流程中摺疊並隱藏動作的詳細資料,請選取動作的標題列。

    Screenshot that shows the workflow designer and the

    當您儲存邏輯應用程式工作流程與 Azure 事件方格觸發程序時,Azure 會自動針對您的邏輯應用程式建立所選資源的事件訂閱。 因此當資源將事件發佈到 Azure 事件方格服務時,該服務就會自動推送事件至您的邏輯應用程式。 此事件會觸發並執行您在後續步驟中定義的邏輯應用程式工作流程。

邏輯應用程式現在已上架,並且會接聽來自 Azure 事件方格的事件,但是在您將動作新增至工作流程以前,不會執行任何動作。

新增條件

如果只想在發生特定事件或作業時執行邏輯應用程式工作流程,請新增檢查 Microsoft.Compute/virtualMachines/write 作業的條件。 當此條件成立時,邏輯應用程式工作流程就會傳送電子郵件給您,內含已更新虛擬機器的詳細資料。

  1. 在工作流程設計工具的 Azure 事件方格觸發程序下,選取 [新增步驟]

    Screenshot that shows the workflow designer with

  2. 在 [選擇動作] 底下的搜尋方塊中,輸入 condition 作為篩選條件。 從動作清單中,選取 [條件] 動作。

    Screenshot that shows the workflow designer with

    工作流程設計工具會將空白條件新增至您的工作流程,包括根據條件為 true 或 false 所要遵循的動作路徑。

    Screenshot that shows the workflow designer with an empty condition added to the workflow.

  3. 將條件標題重新命名為 If a virtual machine in your resource group has changed。 在條件的標題列上,選取省略符號 (...) 按鈕,然後選取 [重新命名]

    Screenshot that shows the workflow designer with the condition editor's context menu and

  4. 建立一個條件,以針對 operationName 屬性等於 Microsoft.Compute/virtualMachines/write 作業的 data 物件,檢查事件 body。 深入了解 Azure 事件方格事件結構描述

    1. 在 [AND] 底下的第一個資料列中,按一下左側方塊內部。 在顯示的動態內容清單中,選取 [運算式]

      Screenshot that shows the workflow designer with the condition action and dynamic content list open with

    2. 在運算式編輯器中輸入此運算式,運算式會從觸發程序傳回作業名稱,然後選取 [確定]

      triggerBody()?['data']['operationName']

      例如:

      Screenshot showing workflow designer and condition editor with expression to extract the operation name.

    3. 在中間的方塊中,將運算子保留為 [等於]

    4. 在右側方塊中,輸入您想要監視的作業,此範例為下列值:

      Microsoft.Compute/virtualMachines/write

    您完成的條件現在看起來就像下面這個範例︰

    Screenshot that shows the workflow designer with a condition that compares the operation.

    如果您從設計檢視切換為程式碼檢視,而後回到設計檢視,您在條件中指定的運算式會解析為 data.operationName 語彙基元:

    Screenshot that shows the workflow designer with a condition that has resolved tokens.

  5. 儲存邏輯應用程式。

傳送電子郵件通知

現在新增動作,以在指定的條件為 true 時收到電子郵件。

  1. 在條件的 [若為 true] 方塊中,選取 [新增動作]

    Screenshot that shows the workflow designer with the condition's

  2. 在 [選擇動作] 底下的搜尋方塊中,輸入 send an email 作為篩選條件。 根據您的電子郵件提供者,尋找並選取相符的連接器。 然後針對您的連接器選取 [傳送電子郵件] 動作。 例如:

    • 對於 Azure 公司或學校帳戶,選取 Office 365 Outlook 連接器。

    • 對於個人 Microsoft 帳戶,選取 Outlook.com 連接器。

    • 對於 Gmail 帳戶,選取 Gmail 連接器。

    本教學課程將使用 Office 365 Outlook 連接器繼續操作。 如果您使用不同的提供者,步驟維持不變,但您的 UI 可能會稍微不同。

    Screenshot that shows the workflow designer with the search box open to find the

  3. 如果尚未連線到電子郵件提供者,請在系統要求驗證時登入電子郵件帳戶。

  4. 將傳送電子郵件動作重新命名為此標題:Send email when virtual machine updated

  5. 如下表中所指定,提供電子郵件的相關資訊:

    Screenshot that shows the workflow designer with dynamic content being addded to email subject line for a true condition.

    提示

    若要從工作流程的先前步驟輸出中選取,請按一下編輯方塊以便顯示動態內容清單,或選取 [新增動態內容]。 如需更多結果,在清單中的每個區段選取 [更多資訊]。 若要關閉動態內容清單,請再次選取 [新增動態內容]

    屬性 必填 Description
    目標 Yes <recipient@domain> 輸入收件者的電子郵件地址。 為了測試用途,您可以使用自己的電子郵件地址。
    主體 Yes Resource updated:主體 輸入電子郵件主旨的內容。 在本教學課程中,輸入指定的文字,然後選取事件的 [主旨] 欄位。 在這裡,您的電子郵件主旨包含更新資源 (虛擬機器) 的名稱。
    本文 Yes Resource:主題

    Event type:事件類型

    Event ID:識別碼

    Time:事件時間

    輸入電子郵件內文的內容。 在本教學課程中,輸入指定的文字並選取事件的 [主題]、[事件類型]、[識別碼] 和 [事件時間] 欄位,讓您的電子郵件包含觸發事件的資源、事件類型、事件戳記,以及更新的事件識別碼。 在本教學課程中,此資源是觸發程序中選取的 Azure 資源群組。

    若要在內容中新增空白的行,請按 Shift + Enter。

    注意

    如果您選取代表陣列的欄位,設計工具會自動新增以參考該陣列的動作為主的 For each 迴圈。 如此一來,邏輯應用程式工作流程即會對每個陣列項目執行該動作。

    現在,您的電子郵件動作看起來可能就像下面這個範例︰

    Screenshot that shows the workflow designer with selected outputs to send in email when VM is updated.

    您已完成的邏輯應用程式工作流程可能如下例所示:

    Screenshot showing designer with complete workflow and details for trigger and actions.

  6. 儲存邏輯應用程式。 若要在邏輯應用程式中摺疊並隱藏每個動作的詳細資料,請選取動作的標題列。

    邏輯應用程式現在已上限,但是在執行任何作業之前,等候您的虛擬機器變更。 若要立即測試工作流程,請繼續下一節。

測試邏輯應用程式工作流程

  1. 請更新您的虛擬機器,以檢查工作流程是否正在取得指定的事件。

    例如,您可以調整虛擬機器的大小

    一會兒之後,您應可取得電子郵件。 例如:

    Screenshot of example Outlook email, showing details about VM update.

  2. 若要檢閱邏輯應用程式的執行和觸發歷程記錄,請在邏輯應用程式功能表上選取 [概觀]。 若要檢視執行的更多詳細資料,請選取該執行的資料列。

    Screenshot of logic app's overview page, showing a successful run selected.

  3. 若要檢視每個步驟的輸入和輸出,請展開您需要檢閱的步驟。 此資訊可協助您診斷和偵錯應用程式邏輯中的問題。

    Screenshot of logic app's runs history, showing details for each run.

恭喜,您已建立並執行邏輯應用程式工作流程,其可透過 Azure 事件方格監視資源事件,並在這些事件發生時以電子郵件通知您。 您也了解如何輕鬆地建立工作流程,以自動執行程序並整合系統與雲端服務。

您可以使用事件格線和邏輯應用程式來監視其他組態變更,例如:

  • 虛擬機器可取得 Azure 角色型存取控制 (RBAC) 權限。
  • 對網路介面 (NIC) 上的網路安全性群組 (NSG) 進行變更。
  • 已新增或移除虛擬機器的磁碟。
  • 已將公用 IP 位址指派給虛擬機器 NIC。

清除資源

本教學課程使用會資源並執行會產生 Azure 訂用帳戶費用的動作。 當您完成本教學課程和測試時,請務必停用或刪除您不想產生費用的任何資源。

  • 若要停止執行工作流程,但不刪除您的工作,請停用您的應用程式。 在邏輯應用程式功能表上,選取 [概觀]。 在工具列上,選取 [停用]

    Screenshot of logic app's overview, showing Disable button selected to disable the logic app.

    提示

    如果您沒有看到邏輯應用程式功能表,請嘗試返回 Azure 儀表板,然後重新開啟邏輯應用程式。

  • 若要永久刪除邏輯應用程式,請在邏輯應用程式功能表上選取 [概觀]。 在工具列上,選取 [刪除]。 確認您想要刪除邏輯應用程式,然後選取 [刪除]

下一步

請參閱下列範例,了解如何使用不同的程式設計語言,將事件發佈至 Azure 事件方格,以及從 Azure 事件方格取用事件。