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

使用逻辑应用自定义警报通知

本文介绍如何创建逻辑应用并将其与 Azure Monitor 警报集成。

可以使用 Azure 逻辑应用生成并自定义工作流以进行集成。 使用逻辑应用自定义警报通知。 可以:

  • 使用你自己的电子邮件主题和正文格式自定义警报电子邮件。
  • 通过查找受影响资源的标记或提取日志查询搜索结果来自定义警报元数据。 有关如何访问包含警报数据的搜索结果行的信息,请参阅:
  • 使用 Outlook、Microsoft Teams、Slack 和 PagerDuty 等现有连接器来与外部服务集成。 还可以为自己的服务配置逻辑应用。

此示例创建了一个逻辑应用,它使用通用警报架构发送来自警报的详细信息。

创建逻辑应用

  1. Azure 门户中,创建新的逻辑应用。 在页面顶部的“搜索”栏中,输入“逻辑应用”。

  2. 在“逻辑应用”页上,选择“添加”。

  3. 选择逻辑应用的“订阅”和“资源组”。

  4. 设置逻辑应用名称计划类型选择“消耗”。

  5. 选择“查看 + 创建”>“创建”。

  6. 部署完成后,选择“转到资源”。

    屏幕截图:显示“创建逻辑应用”页。

  7. 在“逻辑应用设计器”页上选择“收到 HTTP 请求时”。

    显示逻辑应用设计器开始页的屏幕截图。

  8. 将通用警报架构粘贴到以下 JSON 中的“请求正文 JSON 架构”字段中:

     {
        "type": "object",
        "properties": {
            "schemaId": {
                "type": "string"
            },
            "data": {
                "type": "object",
                "properties": {
                    "essentials": {
                        "type": "object",
                        "properties": {
                            "alertId": {
                                "type": "string"
                            },
                            "alertRule": {
                                "type": "string"
                            },
                            "severity": {
                                "type": "string"
                            },
                            "signalType": {
                                "type": "string"
                            },
                            "monitorCondition": {
                                "type": "string"
                            },
                            "monitoringService": {
                                "type": "string"
                            },
                            "alertTargetIDs": {
                                "type": "array",
                                "items": {
                                    "type": "string"
                                }
                            },
                            "originAlertId": {
                                "type": "string"
                            },
                            "firedDateTime": {
                                "type": "string"
                            },
                            "resolvedDateTime": {
                                "type": "string"
                            },
                            "description": {
                                "type": "string"
                            },
                            "essentialsVersion": {
                                "type": "string"
                            },
                            "alertContextVersion": {
                                "type": "string"
                            }
                        }
                    },
                    "alertContext": {
                        "type": "object",
                        "properties": {}
                    }
                }
            }
        }
    }
    

    显示“收到 HTTP 请求时”窗格的“参数”选项卡的屏幕截图。

  9. (可选)。 可以通过提取有关触发警报的受影响资源的信息(例如资源的标记)来自定义警报通知。 然后,可以将这些资源标记包含在警报有效负载中,并使用逻辑表达式中的信息发送通知。 若要执行此步骤,我们会:

    • 为受影响的资源 ID 创建变量。
    • 将资源 ID 拆分为数组,以便我们可以使用它的各种元素(例如订阅和资源组)。
    • 使用 Azure 资源管理器连接器读取资源的元数据。
    • 提取资源的标记,然后可以在逻辑应用的后续步骤中使用这些标记。
    1. 选择+>“添加操作”以插入新步骤。

    2. 在“搜索”字段中,搜索并选择“初始化变量”。

    3. 在“Name”字段中,输入变量的名称,例如“AffectedResource”。

    4. 在“类型”字段中,选择“数组”。

    5. 在“值”字段中,选择“添加动态内容”。 选择“表达式”选项卡,然后输入字符串 split(triggerBody()?['data']?['essentials']?['alertTargetIDs'][0], '/')

      显示“初始化变量”窗格的“参数”选项卡的屏幕截图。

    6. 选择+>“添加操作”以插入另一个步骤。

    7. 在“搜索”字段中,搜索并选择“Azure 资源管理器”>“读取资源”。

    8. 使用 AffectedResource 变量中的数组值填充“读取资源”操作的字段。 在每个字段中,单击字段内部,然后向下滚动到“输入自定义值”。 选择“添加动态内容”,然后选择“表达式”选项卡。输入此表中的字符串:

      字段 字符串值
      订阅 variables('AffectedResource')[2]
      资源组 variables('AffectedResource')[4]
      资源提供程序 variables('AffectedResource')[6]
      短资源 ID concat(variables('AffectedResource')[7], '/', variables('AffectedResource')[8])
      客户端 API 版本 资源类型的 API 版本

      如要查找资源类型的 API 版本,请选择资源概述页右上角的 JSON 视图链接。 “ResourceID”和“API 版本”显示在“资源 JSON”页面顶部。

    动态内容现在包括来自受影响资源的标记。 可以按照以下步骤所述在配置通知时使用这些标记。

  10. 发送电子邮件或发布 Teams 消息。

  11. 选择+>“添加操作”以插入新步骤。

    显示“收到 HTTP 请求时”的参数的屏幕截图。

  1. 在搜索字段中搜索 Outlook

  2. 选择“Office 365 Outlook”。

    显示逻辑应用设计器的“添加操作”页的屏幕截图,其中选中了“Office 365 Outlook”。

  3. 从“操作”列表中选择“发送电子邮件(V2)”。

  4. 当系统提示创建连接时,登录到 Office 365。

  5. 创建电子邮件正文:输入静态文本,并通过从“动态内容”列表选择字段来包括来自警报有效负载的内容。 例如:

    • 警报具有监视条件:选择“动态内容”列表中的“monitorCondition”。
    • 触发日期:选择“动态内容”列表中的“firedDateTime”。
    • 受影响的资源:选择“动态内容”列表中的“alertTargetIDs”。
  6. 在“主题”字段中创建主题文本:输入静态文本,并通过从“动态内容”列表选择字段来包括来自警报有效负载的内容。 例如:

    • 警报:选择“动态内容”列表中的“alertRule”。
    • 具有严重性:选择“动态内容”列表中的“严重性”。
    • 具有条件:选择“动态内容”列表中的“monitorCondition”。
  7. 在“收件人”字段中输入要接收警报的电子邮件地址。

  8. 选择“保存”。

    显示“发送电子邮件”窗格上的“参数”选项卡的屏幕截图。

你已创建一个逻辑应用,该应用将向指定地址发送电子邮件,其中包含触发该电子邮件的警报的详细信息。

下一步是创建操作组来触发逻辑应用。

创建操作组

若要触发逻辑应用,请创建操作组。 然后创建使用该操作组的警报。

  1. 转到“Azure Monitor”页,然后从左侧窗格中选择“警报”。

  2. 选择“操作组”>“创建”。

  3. 选择“订阅”、“资源组”和“区域”的值。

  4. 为“操作组名称”和“显示名称”输入名称。

  5. 选择“操作”选项卡。

    显示“创建操作组”页上的“操作”选项卡的屏幕截图。

  6. 在“操作类型”下的“操作”选项卡中选择“逻辑应用”。

  7. 在“逻辑应用”部分中,从下拉列表中选择自己的逻辑应用。

  8. 将“启用常见警报架构”设置为“是”。 如果选择“否”,则警报类型将确定所使用的警报架构。 有关警报架构的详细信息,请参阅特定于上下文的警报架构

  9. 选择“确定”。

  10. 在“名称”字段中输入名称。

  11. 选择“查看 + 创建”>“创建”。

    显示“创建操作组”页上的“操作”选项卡和“逻辑应用”窗格的屏幕截图。

测试操作组

  1. 选择操作组。

  2. 在“逻辑应用”部分中选择“测试操作组(预览)”。

    显示包含“测试操作组”选项的操作组详细信息页的屏幕截图。

  3. 从“选择示例类型”下拉列表中选择示例警报类型。

  4. 选择“测试”。

    显示操作组详细信息测试页面的屏幕截图。

    以下电子邮件将发送到指定的帐户:

    显示测试页面发送的示例电子邮件的屏幕截图。

使用操作组创建规则

  1. 为自己的某一资源创建规则

  2. 在规则的“ 操作 ”选项卡上,选择“选择操作组”。

  3. 从该列表中选择自己的操作组。

  4. 选择“选择”。

  5. 完成规则的创建。

    显示“创建警报规则”窗格上的“操作”选项卡和“选择操作组”窗格的屏幕截图。

后续步骤