外部通知

适用于: Configuration Manager(current branch)

在复杂的 IT 环境中,可能有一个自动化系统,例如 Azure 逻辑应用。 客户使用这些系统来定义和控制自动化工作流,以集成多个系统。 可以通过产品的 SDK API 将Configuration Manager集成到单独的自动化系统中。 但是,对于没有软件开发背景的 IT 专业人员来说,此过程可能很复杂且具有挑战性。

从版本 2107 开始,可以让站点向外部系统或应用程序发送通知。 此功能使用基于 Web 服务的方法简化了该过程。 配置 订阅 以发送这些通知。 这些通知是在发生特定定义事件时做出响应的。 例如, 状态消息筛选规则

注意

外部系统或应用程序定义并提供此功能调用的方法。

设置此功能时,站点会打开与外部系统的信道。 然后,该系统可以启动Configuration Manager中不存在的复杂工作流或操作。

从版本 2111 开始,使用 Configuration Manager 控制台创建或编辑外部通知的订阅。 本文现在重点介绍该体验。 如果使用版本 2107,请参阅 Configuration Manager版本 2107

先决条件

  • 在层次结构的顶级站点上创建订阅。 此站点是独立主站点或管理中心站点, (CAS) 。 可以在层次结构中的任何站点上查看和修改现有订阅。

  • 站点的服务连接点需要处于联机模式。 有关详细信息,请参阅 关于服务连接点

  • 目前,此功能仅支持将 Azure 逻辑应用作为外部系统。 需要具有创建逻辑应用的权限的活动 Azure 订阅。

    服务连接点需要与通知服务通信,例如 Azure 逻辑应用。 有关详细信息,请参阅 Internet 访问要求

  • 若要为应用程序审批请求创建事件类型,网站需要一个需要批准的应用,并将其部署到用户集合。 有关详细信息,请参阅部署应用程序和批准应用程序

权限

可以对 NotificationSubscription 对象配置以下权限:读取、删除、修改、创建。

  • 完全管理员默认安全角色具有这些权限。
  • “只读分析师默认安全角色”具有“读取”权限。

在版本 2107 中,用户还需要 “所有 ”安全作用域。 在版本 2111 及更高版本中,无法限定订阅对象的范围。 如果需要,可以在 网站 对象上使用范围,用户至少需要读取权限。

自定义角色可能需要其他权限。 使用下表了解所需内容:

操作 警报:
阅读
网站:
阅读
通知:
阅读
通知:
修改
通知:
创建
通知:
删除
网站:
管理 SFR
查看订阅 X X
修改订阅 X X X X
创建订阅 说明 1 X X X X
删除订阅 X X X
创建新的 SFR X X X 注释 2 注释 2 X
添加现有 SFR X X X 注释 2 注释 2
添加应用审批 X X X 注释 2 注释 2

上表使用以下简写:

  • 通知通知订阅 对象
  • SFR:状态筛选器规则

注释 1:层次结构中的顶级网站

在层次结构的顶级站点上创建订阅。 此站点是独立主站点或 CAS。 可以在层次结构中的任何站点上查看和修改现有订阅。

注释 2:修改和创建事件操作的权限

管理订阅上的事件时,对通知订阅对象修改或创建的权限取决于是否需要修改或创建事件。 例如,如果具有 “创建” 权限,则可以向订阅添加状态筛选规则。 如果没有 “修改” 权限,则无法对订阅事件进行更改。

创建 Azure 逻辑应用和工作流

使用以下过程在 Azure 逻辑应用中创建示例应用,以接收来自 Configuration Manager 的通知。

注意

此过程作为示例提供,可帮助你入门。 它不适用于生产用途。

  1. 登录 Azure 门户

  2. 在 Azure 搜索框中,输入 logic apps,然后选择“ 逻辑应用”。

  3. 选择 “添加 ”,然后选择“ 消耗”。 此操作将创建新的逻辑应用。

  4. 在“ 基本信息 ”选项卡上,根据需要为环境指定项目详细信息:订阅名称、资源组、逻辑应用名称和区域。

  5. 然后“审阅 + 创建”。 在验证页上,确认你提供的详细信息,然后选择“ 创建”。

  6. “后续步骤”下,选择“ 转到资源”。

  7. 在“ 使用通用触发器开始”部分下,选择“ 收到 HTTP 请求时”。

  8. 在触发器编辑器底部,选择“ 使用示例有效负载生成架构”。

  9. 粘贴以下示例有效负载:

    {
        "EventID":0,
        "EventName":"",
        "SiteCode":"",
        "ServerName":"",
        "MessageID":0,
        "Source":"",
        "EventPayload":""
    }
    
  10. 选择 “完成 ”,然后选择“ 保存”。

  11. 复制逻辑应用生成的 URL。 稍后在 Configuration Manager 中创建订阅时,将使用此 URL。

    注意

    逻辑应用的 Azure URL 包含密钥。 保存在 Configuration Manager 中时,其保护与任何其他密码或密钥相同。 如果环境使用代理服务器或其他网络检查设备,则存在记录此 URL 并公开密钥的风险。 控制对此类系统的访问,并准备好在Azure 门户中续订逻辑应用的密钥。 还可以在Azure 门户中设置密钥的过期日期。 有关详细信息,请参阅 保护逻辑应用

  12. 若要在设计器中添加新步骤,请选择“ + 新建步骤”。 在收到来自Configuration Manager的通知时,选择适当的操作。 例如:

    如有必要,请登录并完成操作所需的信息。 有关详细信息,请参阅 Azure 逻辑应用 文档中的创建逻辑应用快速入门。

通知架构

这些通知使用以下标准化架构:

{
    "properties": {
        "EventID": {
            "type": "integer"
        },
        "EventName": {
            "type": "string"
        },
        "EventPayload": {
            "type": "string"
        },
        "MessageID": {
            "type": "string"
        },
        "ServerName": {
            "type": "string"
        },
        "SiteCode": {
            "type": "string"
        },
        "Source": {
            "type": "string"
        }
    },
    "type": "object"
}

创建事件

目前支持两种类型的事件:

  • 站点会引发一条状态消息,该消息与外部通知的状态筛选器规则中指定的条件匹配。 可以创建新规则或使用现有规则。

  • 用户在软件中心请求对应用程序进行审批。

注意

在层次结构中,事件的范围取决于事件类型:

  • 应用程序审批事件仅在主站点发生。
  • 状态筛选器规则适用于使用创建 外部服务通知事件向导创建规则的网站。
    • 如果在连接到 CAS 时运行向导来创建事件,则只会在 CAS 中的匹配事件上触发。
    • 若要订阅子主站点引发的事件,请连接到主站点。 修改通知订阅,为子主站点创建新的状态筛选器规则。

使用以下过程创建事件:

  1. 在 Configuration Manager 控制台中,连接到层次结构的顶级站点。 此站点是独立主站点或 CAS。

  2. 转到“ 监视 ”工作区,展开 “警报”,然后选择“ 外部服务通知” 节点。

  3. 在功能区中,选择“ 创建订阅”。

  4. 在“新建订阅”窗口中,指定订阅的名称,以便在Configuration Manager控制台中标识该订阅。 最大长度为 254 个字符。 (可选)添加 “说明”。

  5. 对于 “外部服务 URL” 值,请粘贴之前复制的 Azure 逻辑应用的 URL。

  6. 选择黄金星号 以将新事件添加到订阅。

    1. 在“创建外部服务通知事件”向导的“事件类型”页上,选择以下事件类型之一:

      • 新建状态筛选器规则:创建用于此事件的新状态筛选器规则。 指定状态筛选规则的名称,然后配置筛选条件。 有关状态消息规则的条件的详细信息,请参阅 使用状态系统

        重要

        请谨慎对待所创建的状态筛选器规则的类型。 对于外部通知,站点每五分钟可以处理 300 条状态消息。 如果规则允许的邮件数超过此限制,则会导致网站上出现积压工作。 为特定方案创建具有窄筛选器的规则。 避免使用允许大量消息的通用规则。

      • 现有状态筛选器规则:对已存在的外部通知重用状态筛选器规则。 它不会显示所有状态筛选器规则,仅显示使用此向导创建的规则。

      • 用户提交应用程序请求:针对应用程序审批请求发送外部通知。

管理事件

创建订阅后,使用 “外部服务通知 ”节点执行以下操作:

  • 属性:编辑订阅的名称、说明或事件。 无法编辑外部服务 URL。

  • 删除:删除订阅。

注意

可以在层次结构中的任何站点上查看和修改现有订阅。

选择订阅时,详细信息窗格会显示有关已发生的事件的信息。

触发事件

触发事件的过程取决于订阅的类型:

监视工作流

Configuration Manager控制台

从版本 2309 开始,当 Azure 逻辑应用生成与特定事件或条件相关的通知或警报时,Configuration Manager现在可以捕获和显示这些通知。 通过此集成,可以直接在 Configuration Manager 控制台中监视 Azure 逻辑应用通知,从而提供一个集中位置来跟踪关键事件、采取适当的操作并保持较高的运营效率。 

若要使用此功能,需要一个有效的Microsoft Entra Web 应用。 请在“管理\概述\云服务\Azure 服务”下部署用于管理服务管理的 Azure 服务。 如果服务已部署,管理员可以使用现有 Web 应用程序查看 Azure 逻辑应用中的 运行详细信息

有关详细信息,请参阅配置 Azure 服务以用于 Configuration Manager

使用以下过程查看订阅的运行详细信息:

  1. 在Configuration Manager控制台中,单击“监视”。
  2. 在“监视”工作区中,单击“ 外部服务通知 ”并选择所需的订阅。
  3. 单击“ 显示详细信息”。
  4. 在对话框中,选择 Azure 环境,从下拉列表中Microsoft Entra租户名称,并使用 Azure 管理员 帐户登录。
  5. 选择“订阅 ID”,并输入 “资源组 名称 ”和“工作流 名称”。
  6. 单击“ 获取运行详细信息 ”按钮以查看 “运行详细信息”。

Configuration Manager控制台中的“运行详细信息”向导的屏幕截图。

Azure 门户

在五分钟内,事件将触发逻辑应用工作流。 在Azure 门户中检查工作流的状态。 导航到逻辑应用的 “运行历史记录 ”页。

有关详细信息,请参阅 监视运行状态、查看触发器历史记录和设置 Azure 逻辑应用的警报

疑难解答

在站点服务器上使用以下Configuration Manager日志文件来帮助排查此过程问题:

  • ExternalNotificationsWorker.log:检查队列是否已处理以及通知是否已发送到外部系统。
  • statmgr.log:检查是否已处理状态筛选器规则,且未出错

已知问题

如果创建状态筛选器规则,则会在Configuration Manager控制台中的状态筛选器规则的网站列表中看到它。 如果在规则属性的“ 操作 ”选项卡上进行更改,外部通知将不起作用。

(CAS) 恢复管理中心站点 后,请删除并重新创建订阅。

提示

在删除 CAS 之前,请在子主站点上重新创建订阅。

Configuration Manager版本 2107

重要

本部分和 PowerShell 脚本仅适用于版本 2107。 在版本 2111 及更高版本中,使用 Configuration Manager 控制台创建和管理事件。

版本 2107 的其他先决条件

若要在 Configuration Manager 版本 2107 中创建对象,需要使用 PowerShell 脚本 SetupExternalServiceNotifications.ps1。 使用以下脚本示例来正确获取要用于此功能的 PowerShell 脚本:

$FileName = ".\SetupExternalServiceNotifications.ps1"
Invoke-WebRequest https://aka.ms/cmextnotificationscript -OutFile $FileName
(Get-Content $FileName -Raw).Replace("`n","`r`n") | Set-Content $FileName -Force
(Get-Content $FileName -Raw).TrimEnd("`r`n") | Set-Content $FileName -Force

注意

SetupExternalServiceNotifications.ps1 由 Microsoft 进行数字签名。 此脚本示例下载 文件并修复换行符以保留数字签名。

在版本 2107 中创建事件

版本 2107 支持两种类型的事件:

  • 站点将引发与状态筛选器规则中指定的条件匹配的状态消息。

  • 用户在软件中心请求对应用程序进行审批。

在版本 2107 中创建状态消息事件

  1. 在站点服务器上,运行 SetupExternalServiceNotifications.ps1。 由于你在站点服务器上运行它,请输入 y 以继续。

  2. 选择选项 2 以创建新的状态筛选规则。

  3. 指定新状态筛选器规则的名称。

  4. 为规则选择消息匹配条件,并指定要匹配的值。 指定 0 以不使用条件。

    以下条件可用:

    • :客户端、SMS 提供程序、站点服务器
    • 站点代码
    • 系统
    • 组件
    • 消息类型:里程碑、详细信息、审核
    • 严重性:信息性、警告、错误
    • 邮件 ID
    • 属性
    • 属性值

    有关状态消息规则的条件的详细信息,请参阅 使用状态系统

    重要

    请谨慎对待所创建的状态筛选器规则的类型。 对于外部通知,站点每五分钟可以处理 300 条状态消息。 如果规则允许的邮件数超过此限制,则会导致网站上出现积压工作。 为特定方案创建具有窄筛选器的规则。 避免使用允许大量消息的通用规则。

  5. 重新运行 PowerShell 脚本。 选择选项 3 以创建新订阅。

  6. 指定订阅的名称和说明。 然后指定之前从Azure 门户复制的逻辑应用 URL。

  7. 选择新的状态筛选器规则。

  8. 选择退出 0 脚本。

在版本 2107 中创建应用审批事件

注意

此事件类型需要一个需要批准的应用程序,并将其部署到用户集合。 有关详细信息,请参阅部署应用程序和批准应用程序

  1. 在站点服务器上,运行 SetupExternalServiceNotifications.ps1。 由于你在站点服务器上运行它,请输入 y 以继续。

  2. 选择选项 3 以创建新订阅。

  3. 指定订阅的名称和说明。 然后指定之前从Azure 门户复制的逻辑应用 URL。

  4. 为应用程序请求选择适当的事件。

  5. 选择退出 0 脚本。

删除版本 2107 中的订阅

如果需要删除订阅,请使用以下过程:

  1. 运行 SetupExternalServiceNotifications.ps1 脚本,其中包含列出可用订阅的选项 1 。 请注意订阅 ID,它是整数值。

  2. 使用管理服务的 NotificationSubscription API。 对 URI https://<SMSProviderFQDN>/AdminService/v1.0/NotificationSubscription/<Subscription_ID>进行 DELETE 调用。

    有关详细信息,请参阅如何在 Configuration Manager 中使用管理服务

删除订阅后,站点不会向外部系统发送通知。

版本 2107 中的脚本用法

运行 SetupExternalServiceNotifications.ps1时,它会检测它是否在站点服务器上运行:

  • Y:在当前服务器上继续
  • N:指定要使用的站点服务器的 FQDN

如果脚本未检测到站点服务器,则会提示输入 FQDN。

然后,可以使用以下操作:

  • 0:跳过/继续
  • 1:列出可用订阅
  • 2:创建状态筛选器规则以公开状态消息
  • 3:创建订阅。 此选项仅适用于顶级网站。

注意

仅运行版本 2107 或更高版本的站点支持此脚本。

后续步骤

使用状态系统

配置警报