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

本文介绍如何创建逻辑应用并将其与 Azure Monitor 警报集成。 可以使用 Azure 逻辑应用生成并自定义工作流以进行集成。 使用逻辑应用自定义警报通知。 您可以:

  • 使用你自己的电子邮件主题和正文格式自定义警报电子邮件。

  • 通过查找受影响资源的标记或提取日志查询搜索结果来自定义警报元数据。 有关如何访问包含警报数据的搜索结果行的信息,请参阅:

  • 使用 Outlook、Microsoft Teams、Slack 和 PagerDuty 等现有连接器来与外部服务集成。 还可以为自己的服务配置逻辑应用。

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

创建逻辑应用

  1. Azure 门户中,创建新的逻辑应用。 在页面顶部的 搜索 栏中,输入 逻辑应用 并从下拉菜单中选择它。

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

  3. 在“消耗”下,选择“多租户”。

  4. 在下一页上,选择逻辑应用的 订阅资源组

  5. 设置 逻辑应用名称 并选择 区域

  6. 选择 查看 + 创建>创建

    “创建逻辑应用”页的屏幕截图。

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

设置触发器

  1. “逻辑应用 ”页上,选择顶部作栏中的 “编辑 ”。

  2. 选择 “添加触发器”,搜索 “收到 HTTP 请求时”,并从搜索结果中选择它。

    “添加触发器”菜单的屏幕截图,其中突出显示了“收到 HTTP 请求时”。

  3. 将通用警报架构粘贴到以下 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 请求时”菜单的屏幕截图,其中突出显示了“请求正文 JSON 架构”字段。

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

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

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

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

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

    5. “值 ”字段中,选择 fx 以打开“函数”弹出窗口。 在顶部的空字段中输入字符串 split(triggerBody()?['data']?['essentials']?['alertTargetIDs'][0], '/') ,然后选择“ 添加”。

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

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

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

    8. 选择 身份验证 方法并 登录

    9. 使用 变量中的数组值填充“读取资源”操作的字段。 在每个字段中,单击字段内部,然后向下滚动到“输入自定义值”。 选择 fx 以打开“函数”弹出窗口。 在顶部的空字段中输入此表中的相应字符串,然后选择“ 添加”。

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

      若要查找资源类型的 API 版本,请选择资源概述页面右上角的 JSON 视图 链接。

      ResourceID”和“API 版本”显示在“资源 JSON”页面顶部。

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

设置操作

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

  1. 在搜索字段中,搜索“发送电子邮件”(V2)。

  2. Office 365 Outlook 下,从作列表中选择 “发送电子邮件”(V2 )。

    “添加操作”菜单的屏幕截图,其中“发送电子邮件(V2)”被突出显示。

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

  4. 在“收件人”字段中输入要接收警报的电子邮件地址。

  5. 在“主题”字段中创建主题文本:输入静态文本,并通过从“动态内容”列表选择字段来包括来自警报有效负载的内容。

    例如:

    • 警报:选择“动态内容”列表中的“alertRule”。
    • 具有严重性:选择“动态内容”列表中的“严重性”。
    • 具有条件:从“动态内容”列表中选择“monitorCondition”。
  6. 创建电子邮件正文:输入静态文本,并通过从“动态内容”列表选择字段来包括来自警报有效负载的内容。

    例如:

    • 监视条件:“动态内容”列表中选择 monitorCondition
    • 触发日期:选择“动态内容”列表中的“firedDateTime”。
    • 受影响的资源:选择“动态内容”列表中的“alertTargetIDs”。
  7. 选择“保存”。

    “发送电子邮件(V2)”菜单的屏幕截图,其中突出显示了“发件人”、“主题”和“正文”字段。

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

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

创建操作组

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

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

  2. 选择操作组>创建

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

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

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

    “创建作组”页上的“基本信息”选项卡的屏幕截图。

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

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

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

  9. 选择“确定”。

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

  11. 选择 查看 + 创建>创建

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

测试操作组

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

  2. 转到 操作组 并选择逻辑应用程序。

  3. 在顶部动作栏中选择“测试”

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

  5. 选择“测试”。

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

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

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

使用操作组创建规则

  1. 为其中一个资源创建警报规则

  2. 在规则的 操作 选项卡上,选择 使用动作组

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

  4. 选中“选择”。

  5. 完成规则的创建。

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

后续步骤