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

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

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

可以通过合并要监视的资源、来自资源的监视数据以及要触发警报的条件来创建警报规则。 然后,可以定义操作组警报处理规则以确定触发警报时会发生的情况。

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

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

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

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

  1. 门户中,选择“监视”>“警报”。

  2. 打开“+ 创建”菜单,然后选择“警报规则”。

    显示创建新警报规则的步骤的屏幕截图。

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

  1. 门户中,导航到资源。

  2. 从左窗格中选择“警报”,然后选择“+ 创建”>“警报规则”。

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

编辑现有警报规则

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

  2. 选择“警报规则”。

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

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

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

配置警报规则的范围

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

  2. 选择“应用”。

    显示用于新建警报规则的选择资源窗格的屏幕截图。

配置警报规则条件

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

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

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

日志搜索警报规则查询的限制:

  • 日志搜索预警规则查询不支持“bag_unpack()”、“pivot()”和“narrow()”插件。

  • “AggregatedValue”一词是保留字,不能在日志搜索警报规则的查询中使用。

  • 日志警报规则属性中所有数据的总大小不能超过 64KB。

    显示创建新日志搜索警报规则时“查询”窗格的屏幕截图。

  1. (可选)如果你正在查询 ADX 或 ARG 群集,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
    

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

    有关用于查询 ARG 或 ADX 的示例日志搜索警报查询,请参阅日志搜索警报查询示例

    下面是使用交叉查询时的限制:

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

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

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

  5. 在“度量”部分选择以下字段的值:

    显示创建新日志搜索警报规则时的“度量”选项卡的屏幕截图。

    字段 说明
    度量 日志搜索警报可以度量两项不同的指标,这两项指标可用于不同的监视方案:
    表行数:返回的行数可用于处理 Windows 事件日志、Syslog 和应用程序异常等事件。
    数值列的计算:基于任何数值列的计算可用于包含任意数量的资源。 例如 CPU 百分比。
    聚合类型 对多个记录执行的计算,以通过使用聚合粒度将这些记录聚合为一个数值。 例如:总计、平均值、最小值或最大值。
    聚合粒度 用于将多条记录聚合为一个数值的间隔。
  6. (可选)在“按维度拆分”部分中,可以借助维度为触发的警报提供上下文。

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

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

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

    例如:

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

    选择以下字段的值:

    • 资源 ID 列:通常,如果警报规则范围是工作区,则会在工作区上触发警报。 如果需要为每个受影响的 Azure 资源创建单独的警报,可以:
      • 使用 ARM“Azure 资源 ID”列作为维度(请注意,使用此选项时,将在使用“Azure 资源 ID”列作为维度的工作区上触发警报。
      • 在 Azure 资源 ID 属性中将其指定为维度,这会使查询返回的资源成为警报的目标,从而对查询返回的资源(例如虚拟机或存储帐户)触发警报,而不是在工作区中触发警报。 使用此选项时,如果工作区从多个订阅中的资源获取数据,则可以针对非警报规则订阅的资源触发警报。
    字段 说明
    维度名称 维度可以是数字列或字符串列。 维度用于监视特定的时序,并提供触发的警报的上下文。
    运算符 对维度名称和值使用的运算符。
    维度值 维度值基于过去 48 小时的数据。 选择“添加自定义值”以添加自定义维度值。
    包括所有未来值 选择此字段可包含添加到所选维度的所有未来值。
  7. 在“警报逻辑”部分,选择以下字段的值:

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

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

    注意

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

    • 查询包含 search、union* 或 take(限制)操作
    • 查询包含 ingestion_time() 函数
    • 查询使用 adx 模式
    • 查询调用调用其他表的函数

    有关用于查询 ARG 或 ADX 的示例日志搜索警报查询,请参阅日志搜索警报查询示例

  8. (可选)在“高级选项”部分,可以指定触发警报之前所要达到的失败次数和警报评估期。 例如,如果将“聚合粒度”设置为 5 分钟,则可以指定仅当过去一小时发生了 3 次失败(15 分钟)才触发警报。 应用程序业务策略确定此设置。

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

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

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

    注意

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

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

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

  10. 选择“完成” 。 从此刻开始,你可以随时选择“查看 + 创建”按钮。

配置警报规则操作

  1. 在“操作”选项卡中,选择或创建所需的操作组

    显示创建新警报规则时操作选项卡的屏幕截图。

配置警报规则详细信息

  1. 在“详细信息”选项卡中,定义“项目详细信息”。

    • 选择“订阅”。
    • 选择“资源组”。
  2. 定义“警报规则详细信息”。

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

    1. 选择“严重性”。

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

      注意

      请注意,使用“标识”的规则不能在“警报规则名称”中包含字符“;”

    3. 选择“区域”。

    4. 在“标识”部分,选择日志搜索预警规则使用哪个标识来发送日志查询。 当警报规则执行日志查询时,将使用此标识进行身份验证。

      选择标识时,请注意以下事项:

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

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

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

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

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

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

    字段 说明
    创建时启用 选择警报规则,以便在创建警报规则后立即开始运行。
    自动解决警报(预览版) 选择此项可使警报成为有状态警报。 如果警报为有状态的警报,当在特定时间范围内不再满足条件时,将解决警报。 时间范围因警报频率而异:
    1 分钟:10 分钟内未满足警报条件。
    5-15 分钟:三个频率周期内未满足警报条件。
    15 分钟 - 11 小时:两个频率周期内未满足警报条件。
    11 - 12 小时:一个频率周期内未满足警报条件。

    请注意,监控状态日志搜索警报具有以下限制:
    - 它们在每次评估时最多可以触发 300 个警报。
    - 最多可以有 5000 个具有 fired 警报条件的警报。
    静音操作 选择以设置在再次触发警报操作之前等待的时间段。 如果选中此复选框,则字段的静音操作将显示为选择在触发警报后和再次触发操作之前等待的时间。
    检查工作区链接存储 选择是否配置了警报的日志工作区链接存储。 如果未配置任何链接存储,则不会创建该规则。
  4. (可选)在“自定义属性”部分,如果此警报规则包含操作组,则可以添加自己的属性以包含在警报通知有效负载中。 可以在操作组调用的操作(例如 Webhook、Azure 函数或逻辑应用操作)中使用这些属性。

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

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

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

    注意

    • 常用架构会覆盖自定义配置。 不能同时使用自定义属性和通用架构。
    • 自定义属性将添加到警报的有效负载中,但它们不会显示在电子邮件模板或 Azure 门户中的警报详细信息中。
    • 服务运行状况警报不支持自定义属性。

    显示创建新警报规则的“自定义属性”部分的屏幕截图。

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

    示例 1

    此示例会创建一个“更多详细信息”标记,其中包含有关“窗口开始时间”和“窗口结束时间”的数据。

    • 名称:“其他详细信息”
    • 值:“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"

    示例 2 此示例添加有关解决或触发警报的原因的数据。

    • 名称:“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}。 值为 ${data.alertContext.condition.allOf[0].metricValue}”
    • 结果:示例结果可能如下所示:
      • “警报已解决原因:已解决 CPU 百分比超过 5 的问题。 该值为 3.585”
      • “警报触发原因”:“已触发 CPU 百分比大于 5。 该值为 10.585”

配置警报规则标签

  1. 在“标记”选项卡中,在预警规则资源上设置任何必需的标记。

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

查看并创建警报规则

  1. 在“审核 + 创建”选项卡中,将验证该规则并告知所有问题。

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

    显示创建新警报规则时评价和创建选项卡的屏幕截图。

后续步骤