排查 Azure Monitor 指标警报问题

本文介绍了有关 Azure Monitor 指标警报的常见问题,以及如何排查这些问题。

在监视数据中发现重要情况时,Azure Monitor 警报会主动通知你。 有了警报,你就可以在系统的用户注意到问题之前确定和解决这些问题。 有关警报的详细信息,请参阅 Azure 中的警报概述

指标警报应当已触发但未触发

如果你认为某个指标警报应当已触发但未触发且在 Azure 门户中找不到该警报,则请尝试执行以下步骤:

  1. 配置:检查指标警报规则配置:

    • 检查是否按预期配置了“聚合类型”和“聚合粒度(周期)”。 “聚合类型”确定指标值的聚合方式。 若要了解详细信息,请参阅 Azure Monitor 指标聚合和显示说明。 “聚合粒度(周期)”控制每次运行预警规则时,评估聚合度量值的时间间隔。

    • 检查“阈值”或“敏感度”是否按预期方式配置。

    • 对于使用动态阈值的预警规则,请检查是否配置了高级设置。 “冲突数”可能会筛选警报,而“忽略之前的数据”会影响阈值的计算方式。

      注意

      动态阈值在变为活动状态之前至少需要 3 天和 30 个指标示例。

  2. 已触发但没有通知:查看触发的警报列表,看是否可以找到触发的警报。 如果可以在列表中看到该警报,但其部分操作或通知存在问题,请参阅排查 Azure Monitor 警报的问题

  3. 已处于活动状态:检查你预计会收到警报的指标时序是否已存在触发的警报。 指标警报是有状态的,即,一旦在特定的指标时序中触发某个警报,就不会触发该时序中的更多警报,直到不再出现相应的问题。 此设计选择减少了干扰。 当连续三次评估不满足警报条件时,会自动解决警报。

  4. 使用的维度:如果选择了一些针对某个指标的维度值,则预警规则会监视各个指标时序(通过将维度值组合在一起来定义)中是否存在超出阈值的情况。 如果还要监视聚合指标时序(不选择任何维度),请在该指标上配置其他预警规则而不选择维度。

  5. 聚合和时间粒度:如果要使用指标图表来将指标可视化,请确保:

    • 指标图表中选择的“聚合”与预警规则中的“聚合类型”相同。
    • 所选的“时间粒度”与预警规则中的“聚合粒度(周期)”相同,且未设置为“自动”。

指标警报在不应当触发时触发

如果你认为指标警报不应当触发但却触发,则可通过以下步骤来解决问题。

  1. 查看触发的警报列表,找到触发的警报。 选择该警报以查看其详细信息。 查看“为何会触发此警报?”下提供的信息,以了解触发警报时的指标图表、“指标值”和“阈值”。

    注意

    如果你使用动态阈值条件类型,并且认为使用的阈值不正确,请使用哭脸图标提供反馈。 此反馈会影响机器学习算法研究,并且将有助于改进未来的检测。

  2. 如果为某个指标选择了多个维度值,则当任何指标时序(通过将维度值组合在一起来定义)超出阈值时,都会触发警报。 有关在指标警报中使用维度的详细信息,请参阅此网站

  3. 检查预警规则配置以确保它已正确配置:

    • 检查是否按预期配置了“聚合类型”、“聚合粒度(周期)”和“阈值”或“敏感度”。
    • 对于使用动态阈值的预警规则,请检查是否配置了高级设置,因为“冲突数”可能会筛选警报,而“忽略之前的数据”会影响阈值的计算方式。

    注意

    动态阈值在变为活动状态之前至少需要 3 天和 30 个指标示例。

  4. 如果使用指标图表将指标可视化,请确保:

    • 指标图表中选择的“聚合”与预警规则中的“聚合类型”相同。
    • 所选的“时间粒度”与预警规则中的“聚合粒度(周期)”相同,且未设置为“自动”。
  5. 如果警报被触发,而同时已有监视相同条件的已触发的警报(尚未解决),请检查警报规则是否已配置为不自动解决警报。 这样的配置会导致预警规则变为无状态,意味着预警规则不会自动解决触发的警报,并且不要求已触发的警报在同一时序上再次触发之前先行得到解决。 若要检查是否已将预警规则配置为不自动解决,请执行以下操作:

    • 在 Azure 门户中编辑预警规则。 查看是否已清除“预警规则详细信息”部分下的“自动解决警报”复选框。
    • 查看用于部署预警规则或检索预警规则定义的脚本。 检查 autoMitigate 属性是否设置为 false

找不到警报所针对的指标

如果要对特定指标发出警报,但创建预警规则时看不到该指标,请检查以下内容:

找不到警报所针对的指标维度

如果要对指标的特定维度值发出警报,但找不到这些值,请查看以下事项:

  • 维度值可能需要几分钟时间才能显示在“维度值”列表下。
  • 显示的维度值基于前一天收集到的指标数据。
  • 如果维度值尚未发出或未显示,可以使用“添加自定义值”选项添加自定义维度值。
  • 如果要对某个维度所有的可能值(甚至包括将来的值)发出警报,请选中“选择所有当前和将来的值”选项。
  • 默认情况下,Application Insights 资源的自定义指标维度处于关闭状态。 若要启用这些自定义指标的维度集合,请参阅 Application Insights 中基于日志的指标和预先聚合的指标

在已删除资源上仍然会定义指标警报规则

删除 Azure 资源时,不会自动删除关联的指标预警规则。 若要删除与已删除的资源关联的预警规则,请执行以下操作:

  1. 打开在其中定义了删除的资源的资源组。
  2. 在显示资源的列表中,选中“显示隐藏的类型”复选框。
  3. 按类型 == microsoft.insights/metricalerts 筛选列表。
  4. 选择相关的预警规则,并选择“删除”。

不会在每次满足条件时触发指标警报

默认情况下,指标警报是有状态的,因此,如果特定时序已存在触发的警报,则不会触发其他警报。 要使某个特定指标预警规则无状态,并在评估结果1为满足警报条件的情况下收到警报,请使用选项之一:

  • 如果要以编程方式(例如通过 Azure 资源管理器PowerShellRESTAzure CLI)创建预警规则,请将 autoMitigate 属性设置为 False
  • 如果要通过 Azure 门户创建预警规则,请清除“预警规则详细信息”部分下的“自动解决警报”选项。

1 无状态指标警报的通知频率因警报规则的已配置频率而异:

  • 警报频率小于 5 分钟:当继续满足条件时,将在 1 到 6 分钟之间发送通知。
  • 警报频率超过 5 分钟:当继续满足条件时,将在配置的频率到两倍于该频率的时间之间发送通知。 例如,对于频率为 15 分钟的警报规则,将在 15 到 30 分钟之间发送通知。

注意

使指标预警规则无状态会阻止触发的警报得到解决。 因此,即使不再满足条件,触发的警报仍处于触发状态,直到 30 天的保持期。

具有动态阈值的警报规则触发太多警报或过于嘈杂

如果使用动态阈值的警报规则过于嘈杂或触发过多,则可能需要降低动态阈值警报规则的敏感度。 使用以下选项之一:

  • 阈值敏感度:将敏感度设置为“低”,以便降低对偏差的敏感度。
  • 冲突数(位于“高级设置”下):将预警规则配置为仅在某个时间段内出现一定数量的偏差时才触发。 这设置使规则不易受到暂时性偏差的影响。

具有动态阈值的警报规则触发警报数不足

你可能会遇到使用动态阈值但是未触发或不够敏感的警报规则,即使它配置了高敏感度。 这种情况通常是因为指标分布过于不规律。 请考虑以下解决方案之一来解决此问题:

  • 前往监视适用于你的方案的互补指标(如果适用)。 例如,检查成功率的变化情况,而非失败率。
  • 尝试选择不同的“聚合粒度(周期)”值。
  • 检查过去 10 天内指标行为是否发生过重大更改(例如中断)。 突然的更改会影响系统计算指标时的上限和下限,并扩大阈值范围。 等待几天,直到中断不再纳入阈值计算。 还可以编辑警报规则,以使用“高级设置”中的“忽略此前的数据”选项。
  • 如果数据具有每周周期性,但没有足够的历史记录可用于指标,则计算出的阈值可能会具有较宽的上限和下限。 例如,系统在计算时会以相同的方式处理工作日和周末,并生成不会始终适合数据的宽阈值边界。 此问题应在有足够的指标历史记录后自行解决。 然后会检测正确的季节性,并相应地更新计算的阈值。

具有动态阈值的指标警报规则显示了不在预期值范围内的值

当指标值表现出较大波动时,动态阈值可能会围绕指标值构建一个宽模型,这可能会导致边界低于或高于预期。 在以下条件下可能出现此情况:

  • 敏感度设置为低。

  • 指标出现无规律的行为,且变化较大(数据中出现峰值或最小值)。

    考虑通过选择更高的敏感度或选择更大的回看时间段来降低模型的敏感度。 也可使用“忽略之前的数据”选项,从用于生成模型的历史数据中排除最近的异常数据。

指标警报规则配额太小

每个订阅允许的指标警报规则数目受制于配额限制

如果已达到配额限制,以下步骤可能会有助于解决此问题:

  1. 尝试删除或禁用不再使用的指标预警规则。
  2. 切换到使用监视多个资源的指标预警规则。 借助此功能,通过只将一个预警规则计入配额,一个预警规则可以监视多个资源。 要详细了解此功能和支持的资源类型,请参阅此网站
  3. 如果需要提高配额限制,请创建支持请求,并提供以下信息:
    • 需要提高配额限制的订阅 ID。
    • 增大配额的资源类型。 选择“指标警报”或“指标警报(经典)”。
    • 请求的配额限制。

Metric not found 错误:

使用维度创建指标警报规则时出现网络错误

如果要创建使用维度的指标警报规则,可能会遇到网络错误。 如果创建指定大量维度值的指标警报规则,则可能会发生这种情况。 例如,如果创建指标警报规则来监视 200 台计算机的检测信号指标,并将每台计算机指定为唯一维度值。 这会创建包含大量文本的有效负载,导致负载太大而无法通过网络发送,你可能会收到以下网络错误:The network connectivity issue encountered for 'microsoft.insights'; cannot fulfill the request

要解决此问题,我们建议:• 定义多个规则(每个规则包含一部分维度值)。 • 如果维度值具有公用名,则使用 StartsWith 运算符。 • 如果相关,请将规则配置为监视所有维度值(如果无需单独监视特定维度值)。

无权创建指标警报规则

若要创建指标预警规则,你必须具有以下权限:

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

创建包含多个条件的警报规则时的注意事项

  • 在每个条件中,只能为每个维度选择一个值。
  • 不能使用星号 (*) 作为维度值。
  • 当以不同条件配置的指标支持相同的维度时,必须以相同方式为所有这些指标显式设置已配置的维度值。 有关资源管理器模板示例,请参阅使用资源管理器模板创建指标警报

检查指标预警规则的总数

若要检查指标预警规则的当前使用情况,请执行以下步骤。

通过 Azure 门户

  1. 打开“警报”屏幕,然后选择“管理警报规则”。
  2. 使用“订阅”下拉框筛选到相关订阅。
  3. 请勿筛选到特定的资源组、资源类型或资源。
  4. 在“信号类型”下拉框中,选择“指标”。
  5. 验证“状态”下拉框是否设置为“已启用”。
  6. 指标预警规则总数将显示在预警规则列表上方。

使用 API

使用资源管理器模板、REST API、PowerShell 或 Azure CLI 管理预警规则

当你使用资源管理器模板、REST API、PowerShell 或 Azure CLI 创建、更新、检索或删除指标警报时,可能会遇到问题。 以下步骤可能有助于解决此问题。

Resource Manager 模板

REST API

查看 REST API 指南来验证是否正确传递了所有参数。

PowerShell

确保对指标警报使用正确的 PowerShell cmdlet 命令:

Azure CLI

确保对指标警报使用正确的 CLI 命令:

  • 适用于指标警报的 CLI 命令以 az monitor metrics alert 开头。 查看 Azure CLI 参考来了解语法。
  • 可以查看显示如何使用指标警报 CLI 的示例
  • 若要针对自定义指标发出警报,请确保使用相关指标命名空间为指标名称加上前缀:NAMESPACE.METRIC

通过 Azure 门户导出指标预警规则的资源管理器模板

可以导出指标预警规则的资源管理器模板,以帮助了解其 JSON 语法和属性。 然后,可以使用模板自动执行将来的部署。

  1. 在 Azure 门户中,打开警报规则可查看其详细信息。
  2. 选择“属性”。
  3. 在“自动化”下,选择“导出模板”。

订阅注册到 Microsoft.Insights 资源提供程序

指标警报只能访问注册到 Microsoft.Insights 资源提供程序的订阅中的资源。 若要创建指标预警规则,涉及的所有订阅都必须注册到此资源提供程序:

  • 包含预警规则的目标资源的订阅(范围)。
  • 包含与预警规则关联的操作组的订阅(如果已定义)。
  • 保存预警规则的订阅。

详细了解有关注册资源提供程序的信息。

指标警报规则的命名限制

请考虑对指标警报规则名称的以下限制:

  • 指标预警规则名称在创建后无法更改(重命名)。
  • 指标预警规则名称在资源组中必须是唯一的。
  • 指标警报规则名称不能包含以下字符:* # & + : <> ? @ % { } \ /
  • 指标预警规则名称不能以空格或句点结尾。
  • 合并的资源组名称和预警规则名称不能超过 252 个字符。

注意

如果预警规则名称包含不是字母或数字的字符(例如空格、标点符号或符号),则在某些客户端检索这些字符时,可能会对这些字符进行 URL 编码。

在具有多个条件的指标预警规则中使用维度时存在限制

指标警报支持根据多维指标发出警报,并支持定义多个条件(每个预警规则最多可定义 5 个条件)。

在包含多个条件的预警规则中使用维度时,请考虑以下约束:

  • 在每个条件中,只能为每个维度选择一个值。
  • 不能使用选项“选择所有当前值和未来值”。 选择星号 (*)。
  • 如果在不同条件中配置的指标支持同一维度,则必须以相同方式在相关条件下为所有这些指标显式设置配置的维度值。 例如:
    • 请考虑在存储帐户上定义的一个指标警报规则,该警报规则监视两个条件:
      • 事务总数 > 5
      • 平均 SuccessE2ELatency > 250 毫秒
    • 你想更新第一个条件,并且仅监视 ApiName 维度等于 "GetBlob" 的事务。
    • 由于“事务数”和 SuccessE2ELatency 指标都支持 ApiName 维度,你需要更新这两个条件,并将它们的 ApiName 维度都指定为 "GetBlob" 值。

设置预警规则的周期和频率

选择大于“评估频率”的“聚合粒度(周期)”,以降低在以下情况下错过对已添加的时序进行首次评估的可能性:

  • 监视多个维度的指标预警规则:添加新维度值组合时。
  • 监视多个资源的指标预警规则:新资源添加到范围时。
  • 监视未连续发出的指标(稀疏指标)的指标预警规则:指标在超过 24 小时的时间段内未发出时。

后续步骤

有关警报和通知的常规故障排除信息,请参阅排查 Azure Monitor 警报中的问题