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

创建或编辑日志搜索预警规则

本文介绍了如何在 Azure Monitor 中创建新的日志搜索警报规则或编辑现有日志搜索警报规则。 若要了解有关警报的详细信息,请参阅 警报概述

警报规则将要监视的资源、来自资源的监视数据以及要触发警报的条件组合在一起。 然后,可以定义 作组警报处理规则 ,以确定触发警报时会发生什么情况。

这些警报规则触发的警报会包含使用通用警报架构的有效负载。

Prerequisites

若要创建或编辑警报规则,你必须具有以下权限:

  • 对警报规则的目标资源具有读取权限。
  • 对在其中创建警报规则的资源组具有写入权限。 如果从 Azure 门户中创建预警规则,则默认在目标资源所在的同一资源组中创建预警规则。
  • 对关联到警报规则的任何操作组具有读取权限(如果适用)。

在 Azure 门户中访问警报规则向导

可通过多种方式创建或编辑警报规则。

从门户主页创建或编辑警报规则

  1. Azure 门户中,选择“监视” 。
  2. 在左窗格中,选择“ 警报”。
  3. 选择“+ 创建”“警报规则”。

屏幕截图显示了从门户主页创建警报规则的步骤。

从特定资源创建或编辑警报规则

  1. Azure 门户中,转到资源。
  2. 在左窗格中,选择“ 警报”。
  3. 选择“+ 创建”“警报规则”。
  4. 警报规则的范围设置为所选资源。 继续设置警报规则的条件。

屏幕截图显示了从选定资源创建警报规则的步骤。

编辑现有警报规则

  1. Azure 门户中,从主页或特定资源中选择左侧窗格中的 “警报 ”。

  2. 选择 “警报规则”。

  3. 选择要编辑的警报规则,然后选择“ 编辑”。

    屏幕截图显示编辑现有日志搜索预警规则的步骤。

  4. 选择警报规则的任一选项卡以编辑设置。

配置警报规则的范围

  1. 在“选择资源”窗格中,设置警报规则的范围。 可以按订阅、资源类型或资源位置进行筛选。

    屏幕截图显示了在创建新警报规则过程中用于选择资源的窗格。

  2. 选择应用

配置警报规则条件

  1. 在“ 条件 ”选项卡上,选择 “信号名称 ”字段时,选择 “自定义日志搜索”。 或者,如果要为条件选择其他信号,请选择“查看所有信号”

  2. (可选)如果在上一步中选择了“查看所有信号”,请使用“选择信号”窗格搜索信号名称或筛选信号列表。 筛选依据:

    • 信号类型:选择 日志搜索
    • 信号源:发送 自定义日志搜索日志(已保存查询) 信号的服务。 选择信号名称,然后选择 “应用”。
  3. 在“ 日志 ”窗格中,编写一个查询,该查询返回要为其创建警报的日志事件。 若要使用其中一个预定义的警报规则查询,请展开“日志”窗格旁边的“架构和筛选器”窗格。 然后选择“ 查询 ”选项卡,然后选择其中一个查询。

    请注意日志搜索警报规则查询存在以下限制:

    • 日志搜索警报规则查询不支持 bag_unpack()pivot()narrow()
    • 日志搜索警报规则查询仅支持时间跨度文本。>
    • AggregatedValue 是保留字。 它不能在日志搜索警报规则查询中使用。
    • 日志搜索警报规则属性中所有数据的总大小不能超过 64 KB。
    • 在 KQL 查询中为日志搜索警报定义自定义函数时,请务必谨慎使用包含相对时间子句(例如 now())的函数代码。 未在日志搜索警报 KQL 查询中定义的具有相对时间子句的自定义函数可能导致查询结果不一致,从而影响警报评估的准确性和可靠性。 Therefore:
      • 为了确保警报准确且及时,请始终直接在日志搜索警报 KQL 查询中定义相对时间子句。
      • 如果函数内部需要时间范围,则应将其作为参数传递,并在函数中使用。

    屏幕截图显示了创建新日志搜索警报规则过程中的查询窗格。

  4. (可选)如果正在查询 Azure 数据资源管理器或 Azure Resource Graph 群集,Log Analytics 工作区无法自动标识带有事件时间戳的列。 我们建议在查询中添加时间范围筛选器。 例如:

        adx('https://help.kusto.windows.net/Samples').table
        | where MyTS >= ago(5m) and MyTS <= now()
    
        arg("").Resources
        | where type =~ 'Microsoft.Compute/virtualMachines'
        | project _ResourceId=tolower(id), tags
    

    屏幕截图显示了用于创建新日志搜索警报规则的“条件”选项卡。

    Note

    • 在日志搜索警报中使用 Azure 资源图查询时,必须使用托管标识。
    • 每个托管标识最多支持使用 Azure 资源图查询的 50 条日志搜索警报规则。
    • 确保警报配置不超过此限制以保持适当的功能。

    示例日志搜索警报查询可用于 Azure 数据资源管理器和 Resource Graph。

    政府云不支持跨服务查询。 有关限制的详细信息,请参阅跨服务查询限制将 Azure Resource Graph 表与 Log Analytics 工作区合并

  5. 选择 “运行” 以运行警报。

  6. 预览部分显示查询结果。 完成查询编辑后,选择“继续编辑警报”

  7. 条件 ”选项卡随即打开,并填充日志查询。 默认情况下,该规则将计算过去 5 分钟内的结果数。 如果系统检测到汇总的查询结果,将使用该信息自动更新规则。

  8. “度量” 部分中,为以下字段选择值:

    Field Description
    Measure 日志搜索警报可以度量可用于各种监视方案的两种指标:
    表行:可以使用返回的行数来处理 Windows 事件日志、Syslog 和应用程序异常等事件。
    数值列的计算:可以使用基于任何数值列的计算来包含任意数量的资源。 例如 CPU 百分比。
    聚合类型 对多个记录执行的计算,以通过使用聚合粒度将这些记录聚合为一个数值。 示例包括 TotalAverageMinimumMaximum
    聚合粒度 用于将多条记录聚合为一个数值的间隔。

    屏幕截图显示了在创建新日志搜索警报规则过程中的度量选项。

  9. (可选)在“按维度拆分”部分中,可以借助维度为触发的警报提供上下文。

    维度是查询结果中包含其他数据的列。 使用维度时,警报规则按维度值对查询结果进行分组,并单独评估每个组的结果。 如果满足条件,规则将为该组触发警报。 警报有效负载包括触发该警报的组合。

    每个警报规则最多可以应用六个维度。 维度只能是字符串或数值列。 如果要使用不是数字或字符串类型的列作为维度,则必须在查询中将其转换为字符串或数值。 如果你选择多个维度值,则由组合产生的每个时序将触发它自身的警报,并将单独收费。

    例如:

    • 可以使用维度来监视运行网站或应用的多个实例上的 CPU 使用情况。 将单独监视每个实例,并针对 CPU 使用率超过配置值的每个实例发送通知。
    • 需要将某个条件应用于范围内的多个资源时,你也可以决定不按维度拆分。 例如,如果需要在资源组范围内至少有五台计算机的 CPU 使用率高于配置值时触发警报,则不会使用维度。

    通常,如果警报规则范围是工作区,则会在工作区上触发警报。 如果需要为每个受影响的 Azure 资源创建单独的警报,可以:

    • 使用 Azure 资源管理器“Azure 资源 ID”列作为维度。 使用此选项时,则会在使用“Azure 资源 ID”列作为维度的工作区上触发警报
    • Azure 资源 ID 属性中,将警报指定为一个维度。 使用此选项,可让查询返回的资源成为警报目标。 然后会在您的查询返回的资源(例如虚拟机或存储帐户)上触发警报,而不是在工作区上触发。

    使用此选项时,如果工作区从多个订阅的资源中获取数据,则可能在与警报规则订阅不同的订阅资源上触发警报。

    选择以下字段的值:

    Field Description
    维度名称 维度可以是数字列或字符串列。 维度用于监视特定的时序,并提供触发的警报的上下文。
    Operator 对维度名称和值使用的运算符。
    维度值 维度值基于过去 48 小时的数据。 选择“添加自定义值”以添加自定义维度值。
    包括所有未来值 选择此字段可包含添加到所选维度的所有未来值。

    屏幕截图显示了新日志搜索警报规则的“按维度拆分”部分。

  10. “警报逻辑 ”部分中,为以下字段选择值:

    Field Description
    Operator 查询结果将转换为数字。 在此字段中,选择用于将数字与阈值进行比较的运算符。
    阈值 阈值的数值。
    评估频率 运行查询的频率。 可以将其设置为从一分钟到一天(24 小时)之中的任意时间。

    屏幕截图显示了新日志搜索警报规则的“警报逻辑”部分。

    Note

    频率不是警报每天运行的特定时间。 而是警报规则多久运行一次。

    使用警报规则频率为 1 分钟存在一些限制。 将警报规则频率设置为一分钟时,将执行内部操作来优化查询。 如果此操作包含不受支持的操作,则可能会导致查询失败。 不支持查询的最常见原因是:

    • 查询包含 searchuniontake(限制)操作。
    • 查询包含 ingestion_time() 函数。
    • 查询使用 adx 模式。
    • 查询调用了调用其他表的函数。

    示例日志搜索警报查询可用于 Azure 数据资源管理器和 Resource Graph。

  11. (可选)在 “高级选项 ”部分中,可以指定触发警报所需的故障数和警报评估周期。 例如,如果将 聚合粒度 设置为 5 分钟,则可以指定仅在过去一小时内发生三次失败(15 分钟)时触发警报。 应用程序业务策略确定了此设置。

    在“触发警报之前的违规次数”下选择以下字段的值

    Field Description
    违规次数 触发警报的违规次数。 请注意,为了使用此查询,查询应在查询结果中包含“datetime”列。
    评估期 发生违规次数的时间段。
    替代查询时间范围 如果希望警报评估期不同于查询时间范围,请在此处输入时间范围。
    警报时间范围限制为最多两天。 即使查询包含时间范围超过 2 天的 ago 命令,也会应用最大时间范围(2 天)。 例如,即使查询文本包含 ago(7d),查询也最多只能扫描 2 天内的数据。 如果查询需要的数据多于警报评估,则可以手动更改时间范围。 如果查询包含 ago 命令,它将自动更改为 2 天(48 小时)。

    屏幕截图显示了新日志搜索警报规则的“高级选项”部分。

    Note

    如果你或你的管理员分配了“关于 Log Analytics 工作区的 Azure 日志搜索警报应使用客户管理的密钥”Azure 策略,则必须选择“检查工作区链接存储”。 否则,规则创建将失败,因为它不符合策略要求。

  12. 预览图表显示一段时间内查询评估的结果。 可以更改图表时间段,或选择按维度进行的唯一警报拆分产生的时序。

    显示新警报规则预览的屏幕截图。

  13. 选择“完成”。 配置警报规则条件后,可以配置警报规则详细信息以完成创建警报,也可以选择将操作和标记添加到警报规则。

配置警报规则操作

在“ ”选项卡上,可以选择或为警报规则创建 作组

屏幕截图显示了用于创建新警报规则的“操作”选项卡。

可以选择为通知设置自定义电子邮件主题。 有关详细信息,请参阅 自定义日志搜索警报电子邮件主题

配置警报规则详细信息

  1. 在“ 详细信息 ”选项卡上的 “项目详细信息”下,选择 “订阅 ”和 “资源组 ”值。

  2. 在“警报规则详细信息”下

    1. 选择 “严重性 ”值。

    2. 输入“警报规则名称”和“警报规则说明”的值。

      Note

      使用身份标识的规则在“警报规则名称”的值中不能包含分号 (;) 字符。

    3. 选择 “区域” 值。

  3. “标识 ”部分中,选择日志搜索警报规则在发送日志查询时用于身份验证的标识。

    选择身份时,请注意以下几点:

    • 如果要将查询发送到 Azure 数据资源管理器或 Resource Graph,则需要使用托管标识。
    • 如果希望能够查看或编辑与警报规则关联的权限,请使用托管标识。
    • 如果不使用托管标识,则警报规则权限将基于上次编辑规则时最后一个编辑规则的用户的权限。
    • 请使用托管标识以帮助你避免规则无法按预期工作的情况,因为最后编辑规则的用户不一定对添加到规则范围内的所有资源都具有权限。

    与规则关联的标识必须具有以下角色:

    • 如果查询访问 Log Analytics 工作区,则必须为查询访问的所有工作区分配标识读取 角色。 如果要创建以资源为中心的日志搜索警报,警报规则可能会访问多个工作区,标识必须对所有这些工作区都具有读取者角色。
    • 如果要查询 Azure 数据资源管理器或 Resource Graph 群集,则必须为查询访问的所有数据源添加 读取者 角色。 例如,如果查询以资源为中心,则需要对该资源具有读取者角色。
    • 如果查询是访问远程 Azure 数据探查器群集,则必须分配该标识:
      • 查询访问的所有数据源的 读取者 角色。 例如,如果查询使用 adx() 函数调用远程 Azure 数据资源管理器群集,则它需要对该 Azure 数据资源管理器群集具有读取者角色。
      • 查询访问的所有数据库 的数据库查看器 角色。

    有关托管标识的详细信息,请参阅 Azure 资源的托管标识

    为警报规则使用的标识选择下列选项之一:

    标识选项 Description
    None 警报规则权限基于上次编辑规则时最后一个编辑规则的用户的权限。
    启用系统分配的托管标识 Azure 为此警报规则创建新的专用标识。 此标识没有权限,在删除规则时会自动删除。 创建规则后,必须为此标识分配访问查询所需的工作区和数据源的权限。 若要详细了解如何分配权限,请参阅使用 Azure 门户分配 Azure 角色。 不支持使用链接存储的日志搜索警报规则。
    启用用户分配的托管标识 在创建警报规则之前,你将创建一个标识,并为其分配用于查询日志的适当权限。 这是一个常规的 Azure 标识。 你可以在多个警报规则中使用同一个标识。 删除规则时不会删除该标识。 选择此类型的标识时,将打开一个窗格,供你选择规则的关联标识。

    屏幕截图显示了用于创建新日志搜索警报规则的“详细信息”选项卡。

  4. (可选)在 “高级选项 ”部分中,可以设置多个选项:

    Field Description
    创建时启用 选择此选项可使警报规则在创建完成后立即开始运行。
    自动解决警报 选择此项可使警报成为有状态警报。 如果警报是有状态的,当条件在特定时间范围内不再被满足时,警报将被清除。 时间范围因警报频率而异:
    1 分钟:10 分钟内未满足警报条件。
    5 到 15 分钟:在三个频率周期内未满足警报条件。
    15 分钟到 11 个小时:不满足警报条件达两个频率周期。
    11 - 12 小时:一个频率周期内未满足警报条件。

    请注意,有状态日志搜索警报具有以下 限制
    静音作 选择此选项可以设置在再次触发警报操作之前等待的时间段。 在出现的“静音操作时长”字段中,选择在触发警报后和再次触发操作之前的等待时间
    检查工作区链接存储 如果为警报配置了工作区链接存储,请选择此选项。 如果未配置任何链接存储,则不会创建该规则。
  5. (可选)在 “自定义属性 ”部分中,如果此警报规则包含作组,则可以添加自己的属性以包含在警报通知有效负载中。 可以在操作组调用的操作(例如 Webhook、Azure 函数或逻辑应用操作)中使用这些属性。

    使用静态文本、从警报有效负载中提取的动态值或两者的组合,将自定义属性指定为键/值对。

    用于从警报有效负载中提取动态值的格式为:${<path to schema field>}。 例如:${data.essentials.monitorCondition}

    使用通用警报架构的格式指定有效负载中的字段,无论为警报规则配置的操作组是否使用通用架构。

    Note

    自定义属性将添加到警报的有效负载以及使用通用架构的电子邮件通知中,但它们不会显示在 Azure 门户的警报详细信息页中。

    屏幕截图显示了用于创建新警报规则的自定义属性。

    以下示例使用 自定义属性 中的值来利用使用常见警报架构的有效负载中的数据。

    此示例创建一个 附加详细信息 标记,其中包含有关窗口开始时间和窗口结束时间的数据:

    • 名称:Additional Details
    • 值:Evaluation windowStartTime: ${data.alertContext.condition.windowStartTime}. windowEndTime: ${data.alertContext.condition.windowEndTime}
    • 结果:AdditionalDetails:Evaluation windowStartTime: 2023-04-04T14:39:24.492Z. windowEndTime: 2023-04-04T14:44:24.492Z

    此示例添加了有关解析或触发警报的原因的数据:

    • 名称:Alert ${data.essentials.monitorCondition} reason
    • 值:${data.alertContext.condition.allOf[0].metricName} ${data.alertContext.condition.allOf[0].operator} ${data.alertContext.condition.allOf[0].threshold} ${data.essentials.monitorCondition}. The value is ${data.alertContext.condition.allOf[0].metricValue}
    • 潜在结果:
      • Alert Resolved reason: Percentage CPU GreaterThan5 Resolved. The value is 3.585
      • Alert Fired reason": "Percentage CPU GreaterThan5 Fired. The value is 10.585

配置警报规则标签

在“ 标记 ”选项卡上,可以选择在警报规则资源上设置任何必需的标记。

屏幕截图显示了创建新警报规则的“标记”选项卡。

查看并创建警报规则

  1. 在“查看 + 创建”选项卡上,验证规则。 如果出现问题,请返回并进行修复。

  2. 验证通过并查看设置后,选择“ 创建 ”按钮。

    屏幕截图显示了用于查看和创建新警报规则的选项卡。