你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:通过 Azure 事件网格和 Azure 逻辑应用监视虚拟机更改

适用范围:Azure 逻辑应用(消耗)

可使用 Azure 事件网格和 Azure 逻辑应用监视和响应 Azure 资源或外部资源中发生的特定事件。 可使用 Azure 逻辑应用以最少的代码创建自动化的消费型逻辑应用工作流。 可让这些资源将事件发布到 Azure 事件网格。 反过来,Azure 事件网格将这些事件推送给以队列、网络挂钩或事件中心作为终结点的订阅者。 作为订阅者,你的工作流会在运行事件处理步骤之前,等待这些事件到达 Azure 事件网格。

例如,下面是发布者可以将通过 Azure 事件网格发送给订阅者的某些事件:

  • 创建、读取、更新或删除资源。 例如,你可以监视可能在 Azure 订阅中产生费用并影响你账单的更改。

  • 从 Azure 订阅添加或删除某个人。

  • 你的应用可执行特定的操作。

  • 队列中显示新消息。

本教程将创建一个消耗逻辑应用资源,该资源在多租户 Azure 逻辑应用中运行并基于消耗定价模型。 你将使用此逻辑应用资源创建一个工作流,用于监视对虚拟机的更改,并发送有关这些更改的电子邮件。 当你创建具有 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.

    properties 需要 说明
    订阅 <Azure-subscription-name> 在本教程中,选择同一 Azure 订阅用于所有服务。
    资源组 <Azure-resource-group> 逻辑应用的 Azure 资源组名称,可以在本教程中选择用于所有服务。
    逻辑应用名称 <logic-app-name> 提供逻辑应用的唯一名称。
    发布 工作流 选择逻辑应用的部署目标。 对于本教程,请确保选择“工作流”,它将部署到 Azure。
    区域 <Azure-region> 在本教程中,选择同一区域用于所有服务。
    计划类型 消耗 逻辑应用的资源类型。 对于本教程,请确保选择“消耗”。

    注意

    如果以后想要将 Azure 事件网格操作与标准逻辑应用资源一起使用,请确保创建有状态工作流,而不是无状态工作流。 本教程仅适用于遵循不同用户体验的消耗型逻辑应用。 若要在设计器中将 Azure 事件网格操作添加到工作流,请确保在“操作选取器”窗格中选择“Azure”选项卡。有关多租户 Azure 逻辑应用与单租户 Azure 逻辑应用的详细信息,请查看单租户与多租户以及集成服务环境

  4. 完成操作后,选择“查看 + 创建”。 在下一个窗格中,确认提供的信息,然后选择“创建”。

  5. 在 Azure 部署逻辑应用后,选择“转到资源”。

    工作流设计器显示一个包含简介视频和常用触发器的页面。

  6. 滚动越过视频窗口和常用触发器部分。

  7. 在“模板”下选择“空白逻辑应用”。

    注意

    工作流模板库仅适用于消耗型逻辑应用,不适用于标准逻辑应用。

    Screenshot showing Azure Logic Apps templates with selected

    工作流设计器现在显示可用于启动逻辑应用的触发器。 每个工作流都必须从触发器开始,该触发器在发生特定事件或满足特定条件的情况下触发。 每当触发器触发时,Azure 逻辑应用都会创建一个运行逻辑应用的工作流实例。

添加 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.

    注意

    如果使用个人 Microsoft 帐户登录,如 @outlook.com 或 @hotmail.com,Azure 事件网格触发器可能不会正确显示。 作为一种解决方法,选择与服务主体连接,或作为与 Azure 订阅关联的 Microsoft Entra 成员进行身份验证,例如,user-name@emailoutlook.onmicrosoft.com。

  3. 现在,通过逻辑应用订阅发布者的事件。 提供下表所述事件订阅的详细信息,例如:

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

    properties 需要 说明
    订阅 <event-publisher-Azure-subscription-name> 选择与事件发布者关联的 Azure 订阅名称。 对于本教程,请选择用于虚拟机的 Azure 订阅名称。
    资源类型 <event-publisher-Azure-resource-type> 选择事件发布者的 Azure 资源类型。 有关 Azure 资源类型的详细信息,请参阅 Azure 资源提供程序和类型。 对于本教程,请选择 Microsoft.Resources.ResourceGroups 值以监视 Azure 资源组。
    资源名称 <event-publisher-Azure-resource-name> 选择事件发布者的 Azure 资源名称。 此列表依据所选择的资源类型而异。 对于本教程,请选择虚拟机所在的 Azure 资源组的名称。
    事件类型项 <event-types> 选择一个或多个特定事件类型以筛选并发送到 Azure 事件网格。 例如,可选择添加这些事件类型以检测何时更改或删除了资源:

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

    有关详细信息,请参阅以下主题:

    - 资源组的 Azure 事件网格事件架构
    - 了解事件筛选
    - 筛选 Azure 事件网格的事件

    若要添加可选属性,请选择“添加新参数”,然后选择所需属性。 {参阅说明} * 前缀筛选器:对于本教程,请将此属性留空。 默认行为与所有值匹配。 但是,你可以指定一个前缀字符串作为筛选器,例如,特定资源的路径和参数。

    * 后缀筛选器:对于本教程,请将此属性留空。 默认行为与所有值匹配。 但是,当你仅需要特定文件类型,可以指定一个后缀字符串作为筛选器,例如,文件扩展名。

    * 订阅名称:在本教程中,可提供事件订阅的唯一名称。

  4. 保存逻辑应用工作流。 在设计器工具栏上选择“保存”。 若要折叠和隐藏工作流中操作的详细信息,请选择操作的标题栏。

    Screenshot that shows the workflow designer and the

    当你使用 Azure 事件网格触发器保存逻辑应用工作流时,Azure 将自动为选定资源的逻辑应用创建事件订阅。 因此,当资源将事件发布到 Azure 事件网格服务时,该服务会自动将事件推送到逻辑应用。 此事件触发并运行你在这些后续步骤中定义的逻辑应用工作流。

逻辑应用现已发布,并侦听 Azure 事件网格中的事件,但在将操作添加到工作流之前它不会执行任何操作。

添加条件

如果希望逻辑应用工作流仅在特定事件或操作发生时运行,请添加一个检查是否存在 Microsoft.Compute/virtualMachines/write 操作的条件。 如果此条件为 true,你的逻辑应用工作流会向你发送包含已更新虚拟机详细信息的电子邮件。

  1. 在工作流设计器中的工作流触发器下,选择“新建步骤”。

    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. 创建一个条件,用于检查事件 bodydata 对象中的 operationName 属性是否等于 Microsoft.Compute/virtualMachines/write 操作。 详细了解 Azure 事件网格事件架构

    1. 在“和”下面的第一行中,单击左侧框的内部。 在显示的“动态内容”中,选择“表达式”。

      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. 在条件的 If 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.

    提示

    若要选择工作流中的前述步骤的输出,请单击编辑框以显示动态内容列表,或选择“添加动态内容”。 对于多个结果,请选择列表中每个部分的“查看更多”。 若要关闭“动态内容”列表,请再次选择“添加动态内容”。

    属性 需要 说明
    To <recipient@domain> 输入收件人的电子邮件地址。 为进行测试,可以使用自己的电子邮件地址。
    主题 Resource updated:主题 输入电子邮件的主题内容。 对于本教程,请输入指定的文本并选择该事件的“主题”字段。 此处,电子邮件主题包含更新资源(虚拟机)的名称。
    正文 Resource:主题

    Event type:事件类型

    Event ID:ID

    Time:事件时间

    输入电子邮件的正文内容。 对于本教程,请输入指定的文本并选择事件的“主题”、“活动类型”、“ID”和“事件时间”字段,以便电子邮件包含触发事件的资源、事件类型、事件时间戳和更新的事件 ID 。 对于本教程,资源是在触发器中选择的 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 基于角色的访问控制 (Azure RBAC) 权限。
  • 对网络接口 (NIC) 上的网络安全组 (NSG) 进行的更改。
  • 添加或删除虚拟机磁盘。
  • 公共 IP 地址被分配给虚拟机 NIC。

清理资源

本教程使用的资源和执行的操作将会在你的 Azure 订阅上产生费用。 因此,完成本教程和测试后,请确保禁用或删除你不希望产生费用的任何资源。

  • 若要在不删除所做工作的情况下停止运行工作流,请禁用应用。 在逻辑应用菜单中,选择“概述”。 在工具栏中选择“禁用”。

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

    提示

    如果看不到逻辑应用菜单,请尝试返回到 Azure 仪表板,然后重新打开逻辑应用。

  • 若要永久删除逻辑应用,请在逻辑应用菜单上选择“概览”。 在工具栏中选择“删除”。 确认要删除逻辑应用,然后选择“删除”。

后续步骤

请查看以下示例,了解如何使用不同的编程语言将事件发布到 Azure 事件网格以及如何从事件网格使用事件。