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

管理前置事件和后置事件(预览版)

适用于:✔️ Windows VM ✔️ Linux VM ✔️ 本地环境 ✔️ 已启用 Azure Arc 的服务器 ✔️ Azure VM。

前置事件和后置事件允许你在计划的维护配置前后执行用户定义的操作。 有关详细信息,请参阅 Azure 更新管理器中前置事件和后置事件的工作。 本文介绍了如何在 Azure 更新管理器中创建和管理前置事件和后置事件。

计划维护配置中的事件网格

Azure 更新管理器利用事件网格创建和管理前置事件和后置事件。 有关详细信息,请参阅事件网格概述。 若要在计划维护时段之前或之后触发某个事件,需要满足以下条件:

  1. 计划维护配置 - 可以在 Azure 更新管理器中为计划维护配置创建前置事件和后置事件。 有关详细信息,请参阅使用维护配置来计划更新
  2. 要在前置事件或后置事件中执行的操作 - 可以使用事件网格支持的事件处理程序(终结点)来定义操作或任务。 下面是有关如何通过 Webhook 和 Azure Functions 创建 Azure 自动化 Runbook 的示例。 在这些事件处理程序/终结点中,你必须定义应当在前置事件和后置事件中执行的操作。
    1. Webhook - 创建 PowerShell 7.2 Runbook。请了解详细信息并将 Runbook 链接到 Webhook。 了解详细信息
    2. Azure 函数 - 创建 Azure 函数。 [了解详细信息]在 Azure 门户中创建你的第一个函数
  3. 前置事件和后置事件 - 你可以按照以下部分中分享的步骤为计划维护配置创建前置事件和后置事件。 有关详细信息,请参阅事件的“基本信息”选项卡

注册订阅公共预览版

若要在 Azure 门户中自行注册订阅的公共预览版,请执行以下操作:

  1. 登录到 Azure 门户,选择“更多服务”

  2. “所有服务”页上,搜索“预览功能”

  3. “预览功能”页上,搜索并选择“预维护和后期维护事件”

  4. 选择该功能,然后选择“注册”以注册订阅。

    显示如何注册预览功能的屏幕截图。

预维护和后期维护事件的时间线

建议浏览下表,了解预维护和后期维护事件的时间线。

例如,如果维护计划设置为从下午 3:00 开始,来宾维护范围的维护时段为 3 小时 55 分钟,以下是详细信息:

时间 详细信息
下午 2:19 可以在计划的补丁运行前最多 40 分钟编辑计算机和/或动态地将计算机范围限定为关联的预维护事件。 如果对此时间之后附加到计划的资源进行任何更改,则资源将包含在后续计划运行中,而不是当前运行中。
请注意
如果要创建新的计划或使用预事件编辑现有计划,则需要在维护时段前至少 40 分钟运行预事件。

在此示例中,如果设置了下午 3:00 开始的计划,则可以在设置的时间之前的 40 分钟(即下午 2.19)修改范围。
下午 2:20 到 2:30 之间 在补丁安装开始运行之前,将触发预维护事件,最多需要 20 分钟完成。

在此示例中,预维护事件在下午 2:20 到 2:30 之间开始。
下午 2:50 在补丁安装开始运行之前,预维护事件至少需要 20 分钟才能完成。
注意
- 如果预事件持续运行超过 20 分钟,则无论预事件运行状态如何,修补程序安装都将继续。
- 如果选择取消当前运行,则可以在计划前 10 分钟使用取消 API 取消。 在此示例中,在下午 2:50 之前,可以从脚本或 Azure 函数代码中取消。
如果取消 API 无法调用或尚未设置,则补丁安装将继续运行。

在此示例中,预事件应在下午 2:50 之前完成任务。 如果选择取消当前运行,则调用取消 API 的最近时间是下午 2:50。
下午 3:00 如维护配置中定义的那样,计划将在指定时间触发。
在此示例中,日程安排在下午 3:00 触发。
下午 6:55 在定义的维护时段完成后,将触发后期维护事件。 如果定义了较短的 2 小时维护时段,则后期维护事件将在 2 小时后触发,如果维护计划在规定的 2 小时之前(即 1 小时 50 分钟内)完成,则后期维护事件将开始。

在此示例中,如果维护时段设置为最大值,则在下午 6:55 之前,补丁安装过程已完成,并且维护时段较短,则补丁安装过程在下午 5:00 完成。
晚上 7:15 安装补丁后,后期维护事件将运行 20 分钟。
在此示例中,后期维护事件在下午 6:55 开始,下午 7:15 完成,如果维护时段较短,则后期维护事件在下午 5:00 触发,下午 5:20 完成。

建议注意以下事项:

  • 如果要使用预维护事件创建新计划或编辑现有计划,则需要在维护时段开始(上述示例中的下午 3:00)之前至少需要 40 分钟才能运行,否则将导致当前计划的运行自动取消。
  • 在计划的补丁运行前 30 分钟触发预维护事件,为预维护事件提供至少 20 分钟的完成时间。
  • 在补丁安装完成后,后期维护事件立即运行。
  • 若要取消当前补丁的运行,请在计划维护时间前 10 分钟使用取消 API。

根据现有计划配置预维护和后期维护事件

可以按现有计划配置预维护和后期维护事件,并将多个预维护和后期维护事件添加到单个计划。 若要添加预维护和后期维护事件,请执行以下步骤:

  1. 登录到 Azure 门户,然后转到“Azure 更新管理器”

  2. “管理”下,选择“计算机”“维护配置”

  3. “维护配置”页上,选择要向其添加预维护和后期维护事件的维护配置。

  4. 在所选“维护配置”页上的“设置”下,选择“事件”。 或者,在“概述”下,选择卡片“创建维护事件”

    显示用于创建维护事件的选项的屏幕截图。

  5. 选择“+事件订阅”以创建预维护/后期维护事件。

    显示维护事件的屏幕截图。

  6. “创建事件订阅”页上,输入以下详细信息:

    • “事件订阅详细信息”部分,提供适当的名称。

    • 将架构保留为“事件网格架构”

    • “主题详细信息”部分,为“系统主题名称”提供适当的名称。

    • “事件类型”部分,在“筛选事件类型”下选择要推送到终结点或目标的事件类型。 可以在预维护事件后期维护事件之间选择。

    • “终结点详细信息”部分,选择要从中接收响应的终结点。 这将有助于客户触发其预维护事件或后期维护事件。

      有关如何创建事件订阅的屏幕截图。

  7. 选择“创建”以配置现有计划中的预维护和后期维护事件。

注意

  • 预维护和后期维护事件只能在计划的维护配置级别创建。
  • 系统主题根据维护配置自动创建,所有事件订阅都链接到 EventGrid 中的系统主题。
  • 预维护和后期维护事件运行在计划维护时段之外。

查看预维护和后期维护事件

若要查看预维护和后期维护事件,请执行以下步骤:

  1. 登录到 Azure 门户,然后转到“Azure 更新管理器”
  2. “管理”下,选择“计算机”“维护配置”
  3. “维护配置”页上,选择要向其添加预维护和后期维护事件的维护配置。
  4. 选择“概述”并检查维护事件
    • 选择“配置”以设置一个。 显示如何查看和配置预维护和后期维护事件的屏幕截图。

    • 如果设置已完成,可以在“事件”页中看到与配置关联的预维护和后期维护事件计数。

      显示如何查看预维护和后期维护事件的屏幕截图。

删除预维护和后期维护事件

若要删除预维护和后期维护事件,请执行以下步骤:

  1. 登录到 Azure 门户,然后转到“Azure 更新管理器”

  2. “管理”下,选择“计算机”“维护配置”

  3. “维护配置”页上,选择要向其添加预维护和后期维护事件的维护配置。

  4. 在所选“维护配置”页上的“设置”下,选择“事件”。 或者,在“概述”下,选择卡片“创建维护事件”

  5. 选择要从网格中删除的事件名称

  6. 在所选事件页上,选择“删除”

    显示如何删除预维护和后期维护事件的屏幕截图。

注意

  • 如果从维护配置中删除所有预维护和后期维护事件,系统主题将自动从 EventGrid 中删除。
  • 建议避免从 EventGrid 服务手动删除系统主题。

从预维护事件取消计划

若要取消计划,必须在预维护中调用取消 API,以设置 Runbook 脚本或 Azure 函数代码中的取消流程。 在这里,必须定义必须取消计划时的条件。 系统不会监视,也不会根据预维护事件的状态自动取消计划。

取消有两种类型:

  • 用户取消 - 从脚本或代码调用取消 API 时。
  • 系统取消 - 当系统因内部错误调用取消 API 时。 仅当系统无法在计划的补丁安装作业前 30 分钟将预维护事件发送到客户的终结点时,才会执行此操作。

注意

如果取消操作是由系统完成的,那么由于系统未能运行前期事件,即将进行的计划补丁任务将被取消。

重要

如果用户通过取消 API 或使用户取消计划的维护作业,或者由于任何内部故障导致系统取消,那么如果用户已订阅后期维护事件,后期维护事件将发送到用户配置的终结点。

查看取消状态

若要查看取消状态,请执行以下步骤:

  1. Azure 更新管理器主页中,转到历史记录

  2. 选择“维护运行 ID”,然后选择要查看其状态的运行 ID。

    显示如何查看取消状态的屏幕截图。

可以从 JSON 中的错误消息中查看取消状态。 可以从 Azure Resource Graph (ARG) 获取 JSON。 将使用取消 API 取消相应的维护配置。

通过以下查询可以查看给定计划或维护配置的 VM 列表:

maintenanceresources  
| where type =~ "microsoft.maintenance/maintenanceconfigurations/applyupdates"  
| where properties.correlationId has "/subscriptions/your-s-id/resourcegroups/your-rg-id/providers/microsoft.maintenance/maintenanceconfigurations/mc-name/providers/microsoft.maintenance/applyupdates/"  
| order by name desc

用户取消操作的屏幕截图。

  • your-s-id:创建预维护事件或后期维护事件的维护配置的订阅 ID
  • your-rg-id:在其中创建维护配置的资源组名称
  • mc-name:创建预维护事件维护配置的名称

如果维护作业因任何原因而被系统取消,则对应维护配置的 JSON 中的错误消息将从 Azure Resource Graph 获取,该消息会是“由于内部平台故障,维护计划已取消”。

调用取消 API

 C:\ProgramData\chocolatey\bin\ARMClient.exe put https://management.azure.com/<your-c-id-obtained-from-above>?api-version=2023-09-01-preview "{\"Properties\":{\"Status\": \"Cancel\"}}" -Verbose 

注意

必须替换从上述 ARG 查询收到的关联 ID,并在取消 API 中替换它。

示例

  C:\ProgramData\chocolatey\bin\ARMClient.exe put https://management.azure.com/subscriptions/eee2cef4-bc47-4278-b4f8-cfc65f25dfd8/resourcegroups/fp02centraluseuap/providers/microsoft.maintenance/maintenanceconfigurations/prepostdemo7/providers/microsoft.maintenance/applyupdates/20230810085400?api-version=2023-09-01-preview "{\"Properties\":{\"Status\": \"Cancel\"}}" -Verbose

后续步骤