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

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

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

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

下面是发布者可以通过 Azure 事件网格发送到订阅服务器的一些事件:

  • 创建、读取、更新或删除资源。 例如,你可以监视可能在 Azure 订阅中产生费用并影响你账单的更改。
  • 从 Azure 订阅添加或删除某个人。
  • 你的应用可执行特定的操作。
  • 队列中显示新消息。

在本教程中,你将创建在 多租户 Azure 逻辑应用中运行的消耗逻辑应用资源。 应用基于 消耗定价模型。 你将使用此逻辑应用资源创建一个工作流,用于监视对虚拟机的更改,并发送有关这些更改的电子邮件。 当你创建具有 Azure 资源事件订阅的工作流时,事件会通过 Azure 事件网格从该资源流向工作流。

屏幕截图显示了工作流设计器,其中包含使用 Azure 事件网格监视虚拟机的工作流。

在本教程中,你将了解如何执行以下操作:

  • 创建逻辑应用资源以及通过 Azure 事件网格监视事件的工作流。
  • 添加一个专门检查虚拟机更改的条件。
  • 虚拟机更改时发送电子邮件。

先决条件

  • Azure 帐户和订阅。 如果没有订阅,可以注册免费的 Azure 帐户

  • 一个电子邮件帐户,来自配合使用 Azure 逻辑应用来发送通知的电子邮件服务,例如 Office 365 Outlook、Outlook.com 或 Gmail。 对于其他提供程序,请参阅 连接器列表

    本教程将使用 Office 365 Outlook 帐户。 如果使用其他电子邮件帐户,但 UI 可能略有不同。

    重要

    如果要使用 Gmail 连接器,则只有 G-Suite 商业帐户可以在逻辑应用中不受限制地使用此连接器。 如果有 Gmail 用户帐户,则只能将此连接器与 Google 批准的特定服务一起使用,也可以创建用于通过 Gmail 连接器进行身份验证的 Google 客户端应用。 有关详细信息,请参阅 Azure 逻辑应用中 Google 连接器的数据安全和隐私策略

  • 一个在其自己的 Azure 资源组中独一无二的虚拟机。 如果需要虚拟机,请参阅 在 Azure 门户中创建 Windows 虚拟机。 若要使虚拟机发布事件,无需执行任何其他作。

  • 如果防火墙限制特定 IP 地址的流量,请设置防火墙,以允许 Azure 逻辑应用通过防火墙进行通信。 需要在创建逻辑应用的 Azure 区域中允许 Azure 逻辑应用使用的入站出站 IP 地址访问。

    本示例使用的托管连接器要求防火墙允许访问 Azure 区域中逻辑应用资源的所有托管连接器出站 IP 地址

创建逻辑应用资源

  1. 使用 Azure 帐户登录到 Azure 门户

  2. 在 Azure 主页中,选择“创建资源”“集成”>“逻辑应用”。

    屏幕截图显示了 Azure 门户,其中包含用于创建逻辑应用资源的选项。

  3. 选择“ 消耗>多租户”。

  4. 在“创建逻辑应用”下,提供有关逻辑应用资源的信息:

    屏幕截图显示了逻辑应用创建菜单,其中显示了名称、订阅、资源组和位置等详细信息。

    参数 需要 说明
    订阅 < Azure-subscription-name> 在本教程中,选择同一 Azure 订阅用于所有服务。
    资源组 <Azure-resource-group 逻辑应用的 Azure 资源组名称,可以在本教程中选择用于所有服务。
    逻辑应用名称 < logic-app-name> 提供逻辑应用的唯一名称。
    区域 < Azure 区域> 在本教程中,选择同一区域用于所有服务。

    注意

    本教程仅适用于遵循不同用户体验的消耗型逻辑应用。 有关详细信息,请参阅 标准单租户逻辑应用与消耗多租户逻辑应用之间的差异

  5. 完成操作后,选择“查看 + 创建”。 在下一页上,确认提供的信息,然后选择“ 创建”。

添加 Azure 事件网格触发器

若要添加 Azure 事件网格触发器,以便可以监视虚拟机的资源组,请执行以下步骤:

  1. 在 Azure 门户中,打开你的消耗逻辑应用资源。

  2. 在资源边栏的 “开发工具”下,选择设计器以打开工作流。

  3. 在设计器中,按照以下 常规步骤 将名为 “资源事件发生时”的 Azure 事件网格触发器添加到工作流。

  4. “创建连接 ”窗格中,提供以下信息:

    参数 需要 说明
    身份验证 选择要连接所需的身份验证类型。 所选内容确定此连接所需的其他参数值。

    例如,使用 OAuth 身份验证时, 会显示租户 ID 列表,并显示 Azure 订阅的 Microsoft Entra 租户。 确认显示正确的租户:

    屏幕截图显示了工作流设计器,其中显示了 Azure 事件网格的登录提示。

    注意

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

  5. 完成后,选择“登录”。

  6. 现在,使用来自发布服务器的事件的订阅设置工作流。

    在触发器窗格中,提供有关事件订阅的以下信息:

    屏幕截图显示了打开触发器详细信息编辑器的工作流设计器。

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

    - Microsoft.Resources.ResourceActionSuccess
    - Microsoft.Resources.资源删除成功
    - Microsoft.Resources.ResourceWriteSuccess

    有关详细信息,请参阅:

    - 作为事件网格源的 Azure 资源组
    - 了解事件筛选
    - 筛选事件网格的事件
    若要添加可选参数,请打开 “高级参数 ”列表,然后选择所需的参数。 {参阅说明} - 前缀筛选器:对于本教程,请将此值留空。 默认行为与所有值匹配。 但是,你可以指定一个前缀字符串作为筛选器,例如,特定资源的路径和参数。

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

    - 订阅名称:在本教程中,可提供事件订阅的唯一名称。
  7. 保存工作流。 在设计器工具栏上选择“保存”。

    使用 Azure 事件网格触发器保存工作流时,Azure 会将工作流的事件订阅创建到所选资源。 当资源将事件发布到 Azure 事件网格服务时,该服务会将事件推送到工作流。 此事件触发并运行下一部分中定义的工作流。

保存工作流时,逻辑应用资源将实时显示在 Azure 门户中,并开始从 Azure 事件网格侦听事件。 但是,在添加执行任务的作之前,工作流不会执行任何其他作。

添加条件

若要仅在特定事件或作发生时在工作流中运行作,请添加检查该事件或作的条件。 本教程检查 Microsoft.Compute/virtualMachines/write 作。 如果此条件为 true,工作流中的另一个作会向你发送一封电子邮件,其中包含有关更新的虚拟机的信息。

  1. 在设计器中,按照以下 常规步骤 将名为 Condition 的内置作添加到工作流。

    设计器将空条件添加到工作流,包括根据条件为 true 还是 false 遵循的作路径。

    屏幕截图显示了工作流设计器,其中添加了空条件。

  2. 若要重命名条件,请在作窗格的作标题中选择“ 条件”。 将标题重命名为“ 如果资源组中的虚拟机已更改”。

    屏幕截图显示了工作流设计器和具有新名称的作标题框。

  3. 创建一个条件,用于检查参数等于 body作的对象data的事件operationName。 有关详细信息,请参阅 Azure 事件网格事件架构

    1. “And”下的第一行中,在左侧框中选择以显示输入选项,即动态内容列表(闪电图标)和表达式编辑器(函数图标)。 选择表达式编辑器。

      屏幕截图显示了工作流设计器,其中打开了重命名的条件作和表达式编辑器。

    2. 在编辑器中,确保已选择 函数 。 在编辑器框中,输入以下表达式,该表达式从触发器返回作名称,然后选择“ 添加” :

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

      例如:

      屏幕截图显示了工作流设计器和条件编辑器,其中包含用于提取作名称的表达式。

    3. 在中间框中,保留“等于”(=) 运算符。

    4. 在右侧框中,输入要监视的操作,此示例中即为以下值:

      Microsoft.Compute/virtualMachines/write

    现在,已完成的条件应如下例所示:

    屏幕截图显示了工作流设计器,其中包含比较作的条件。

    如果保存更改,然后从设计器视图切换到代码视图,然后返回到设计器视图,条件中的表达式将解析为 data.operationName 标记:

    屏幕截图显示了工作流设计器,其中包含解析令牌的条件。

  4. 保存工作流。

发送电子邮件通知

现在添加操作,以便在指定条件为 true 时接收电子邮件。

  1. 在条件的 True 框中,选择“ +>添加作”。

    屏幕截图显示了工作流设计器,其中打开了条件的“True”窗格,并选择了“添加作”选项。

  2. “添加作 窗格”搜索框中,输入 发送电子邮件。 根据电子邮件提供商找到相应的连接器类型。 为连接器选择“发送电子邮件”作。 例如:

    • 对于 Azure 工作或学校帐户,请选择名为 “发送电子邮件”(V2)的 Office 365 Outlook 连接器作。
    • 对于个人Microsoft帐户,请选择名为 “发送电子邮件”(V2)的 Outlook.com 连接器作。
    • 对于 Gmail 帐户,请选择名为“发送电子邮件”的 Gmail 连接器作(V2)。

    本教程继续执行 Office 365 Outlook 连接器作。 如果使用其他提供程序,步骤保持不变,但 UI 可能略有不同。

  3. 如果还没有电子邮件提供商的连接,请在系统要求你对标识进行身份验证时登录到你的电子邮件帐户。

  4. 将发送电子邮件作重命名为以下标题: 在虚拟机更新时发送电子邮件

  5. 在作窗格中,提供有关要发送电子邮件的以下信息:

    提示

    若要在工作流中选择上述作(触发器和作)的输出,请执行以下步骤:

    1. 在编辑框中选择以显示输入选项,即动态内容列表(闪电图标)和表达式编辑器(函数图标)。 选择动态内容列表。
    2. 查找并选择要包含的输出。 对于多个结果,请选择列表中每个部分的“查看更多”。
    参数 需要 说明
    To <recipient@domain> 输入收件人的电子邮件地址。 为进行测试,可以使用自己的电子邮件地址。
    主题 资源更新:[主题] 输入电子邮件的主题内容。 对于本教程,请输入指定的文本并选择该事件的“主题”字段。 此处,电子邮件主题包含更新资源(虚拟机)的名称。
    正文 资源:[主题]

    事件类型:[事件类型]

    事件 ID:[ID]

    Time:[事件时间]
    输入电子邮件的正文内容。 对于本教程,请输入指定的文本并选择事件 的主题事件类型ID事件时间 输出,以便电子邮件包含触发事件、事件类型、事件时间戳和更新事件 ID 的资源。 对于本教程,资源是在触发器中选择的 Azure 资源组。

    若要在内容中添加空白行,请按 Shift + Enter

    注意

    如果你选择表示数组的字段,设计器会围绕引用数组的操作自动添加“For each”循环。 这样,工作流会对每个数组项执行该作。

    电子邮件作可能如以下示例所示:

    屏幕截图显示工作流设计器,其中显示了更新虚拟机时要发送电子邮件的选定输出。

    已完成的工作流现在如以下示例所示:

    屏幕截图显示了设计器,其中包含完整的工作流以及触发器和作的详细信息。

  6. 保存工作流。

    工作流更新现已推出。 工作流触发器在执行任何作之前会等待对虚拟机的更改。 若要现在测试工作流,请继续学习下一节。

测试工作流

  1. 若要检查工作流是否将获取指定事件,请更新你的虚拟机。

    例如,你可以重设虚拟机大小

    几分钟后,你应会收到一封电子邮件。 例如:

  2. 若要查看工作流的运行历史记录或触发历史记录,请在资源边栏上选择“ 概述”。

  3. 在“ 概述 ”页上,选择“ 运行历史记录”。 若要查看有关工作流运行的更多详细信息,请选择该运行。

    屏幕截图显示了逻辑应用概述页,其中选择了成功的运行。

  4. 若要查看每个作的输入和输出,请选择该作。

    此信息可以帮助你诊断和调试工作流中的问题。

    屏幕截图显示了工作流运行历史记录,其中包含有关每个运行的详细信息。

祝贺! 你已创建并运行一个工作流,用于监视 Azure 事件网格中的资源事件,并在发生这些事件时发送电子邮件。 此外,还学习了如何轻松创建工作流,以便将流程自动化,并将系统和云服务相集成。

可以使用事件网格和工作流监视其他配置更改,例如:

  • 虚拟机获取 Azure 基于角色的访问控制(Azure RBAC)权限。
  • 对网络接口 (NIC) 上的网络安全组 (NSG) 进行的更改。
  • 添加或删除虚拟机磁盘。
  • 公共 IP 地址被分配给虚拟机 NIC。

清理资源

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

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

    屏幕截图显示了“逻辑应用概述”页,其中选择了“禁用”按钮。

    提示

    如果没有看到逻辑应用边栏,请尝试返回到 Azure 门户主页,然后重新打开逻辑应用资源。

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

有关使用不同的编程语言发布事件和使用 Azure 事件网格的事件的示例,请参阅以下示例: