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

Azure Monitor 警报的类型

本文介绍可以创建的 Azure Monitor 警报类型,并帮助你了解何时使用每种警报。

有四种类型的警报:

选择正确的警报类型

此表可帮助你决定何时使用哪种类型的警报。 有关定价的详细信息,请参阅定价页

警报类型 何时使用 定价信息
指标警报 指标数据存储在系统中,已预先计算。 如果希望收到有关需要很少或不需要操作的数据的警报,指标警报很有用。 如果要监视的数据在指标数据中可用,建议使用指标警报。 每个指标警报规则根据监视的时序数收费。
日志警报 日志警报允许对数据执行高级逻辑操作。 如果要监控的数据在日志中可用,或者需要高级逻辑,则可以使用 KQL 的强大功能通过日志警报进行数据操作。 每个日志警报规则按照日志查询的评估间隔计费(查询评估越频繁,费用也就越高)。 另外,对于为大规模监视配置的日志警报,成本还取决于因查询而产生的维度所创建的时序数量。
活动日志警报 活动日志提供对资源上发生的所有操作的审核。 使用活动日志警报,在资源发生特定事件(例如,重新启动、关闭或创建或删除资源)时收到警报。 服务运行状况警报和资源运行状况警报可以在你的其中一项服务或资源出现问题时告知你。 有关详细信息,请参阅定价页
Prometheus 警报(预览版) Prometheus 警报主要用于就 Kubernetes 群集(包括 AKS)的性能和运行状况发出警报。 警报规则基于 PromQL,这是一种开放源代码查询语言。 在预览期间,Prometheus 警报不收取任何费用。

指标警报

指标警报规则通过定期评估资源指标的条件来监视资源。 如果满足条件,则会触发警报。 指标时序是在一段时间内捕获的一系列指标值。

可以使用以下指标创建规则:

指标警报规则包括以下功能:

指标警报规则的目标可以是:

  • 单个资源,例如 VM。 有关受支持的资源类型,请参阅此文
  • 同一 Azure 区域中同一类型的多个资源,例如资源组。

多个条件

为单个资源创建警报规则时,可以应用多个条件。 例如,可以创建一个警报规则来监视 Azure 虚拟机,并在“CPU 百分比高于 90%”且“队列长度超过 300 个项目”时发出警报。 当警报规则具有多个条件时,警报会在警报规则中的所有条件成立时触发,并且当至少一个条件在连续三次检查中不再为成立时解析。

使用维度缩小目标范围

维度是名称/值对,其中包含有关指标值的其他数据。 使用维度可以筛选指标并监视特定的时序,而不是监视所有维度值的聚合。 例如,存储帐户的“事务”指标有一个名为 API 名称维度,它包含每个事务调用的 API 的名称(例如,GetBlob、DeleteBlob、PutPage)。 可以选择在任何 API 名称(即聚合数据)中存在大量事务时触发警报,也可以使用维度进一步分解,以仅在特定的事务数量很高时发出警报 API 名称。 如果使用多个维度,则指标警报规则可以监视来自一个指标的不同维度的多个维度值。 警报规则单独监视所有维度值组合。 有关在指标警报规则中使用维度的详细说明,请参阅本文

使用按维度拆分创建以资源为中心的警报

若要以同一条件监视多个 Azure 资源,可以使用按维度拆分。 通过按维度进行拆分,你可以为订阅或资源组大规模创建以资源为中心的警报。 通过对组合进行分组,警报被拆分为单独的警报。 对 Azure 资源 ID 列进行拆分会使指定的资源进入警报目标。

需要将某个条件应用于范围内的多个资源时,你也可能会决定不进行拆分。 例如,需要在资源组范围中至少有五台计算机的 CPU 使用率超过 80% 时触发警报的情况。

监视多个资源

可以通过将相同的指标警报规则应用于相同类型的多个资源来大规模监视存在于同一 Azure 区域中的资源。 将为每个受监视的资源发送单独通知。

在以下 Azure 云中,针对这些服务支持的平台指标如下:

服务 全球 Azure Government 中国
虚拟机*
SQL 服务器数据库
SQL 服务器弹性池
NetApp 文件容量池
NetApp 文件卷
Key Vault
用于 Redis 的 Azure 缓存
Azure Stack Edge 设备
恢复服务保管库
Azure Database for PostgreSQL - 灵活服务器

注意

以下方案不支持多资源指标警报:

  • 针对虚拟机的来宾指标发出警报
  • 针对虚拟机网络指标发出警报(总网络流入量、总网络流出量、入站流数、出站流数、入站流最大创建速率、出站流最大创建速率)。

可以通过以下三种方式之一指定单个指标警报规则的监视范围。 例如,对于虚拟机,可以将范围指定为:

  • 单个订阅内的虚拟机列表(在单个 Azure 区域中)
  • 指定为单个订阅中一个或多个资源组中的所有虚拟机(在单个 Azure 区域中)
  • 单个订阅中的所有虚拟机(在单个 Azure 区域中)

动态阈值

动态阈值使用高级机器学习 (ML) 来:

  • 了解指标的历史行为
  • 确定模式并适应一段时间内的指标更改,例如每小时、每日或每周模式。
  • 识别指示可能出现服务问题的异常
  • 计算指标最适当的阈值

机器学习持续使用新数据来了解详细信息,并提高阈值的准确性。 因为系统会随着时间的推移而适应指标的行为,并根据与其模式的偏差发出警报,所以你无需知道每个指标的“正确”阈值。

动态阈值有助于:

  • 使用一个警报规则为数百个指标系列创建可缩放警报。 如果警报规则更少,则创建和管理警报规则所需的时间更少。
  • 创建规则而无需知道要配置的阈值
  • 使用高级概念配置指标警报,不需要精通指标
  • 防止出现不能提供预期模式的干扰性(低精度)阈值或宽泛性(低召回率)阈值
  • 处理干扰指标(例如机器 CPU 或内存)和低分散指标(例如可用性和错误率)。

有关在指标警报规则中使用动态阈值的详细说明,请参阅本文

日志警报

日志警报规则通过使用 Log Analytics 查询以设置的频率评估资源日志,以此来监视资源。 如果满足条件,则会触发警报。 你可使用 Log Analytics 查询,因此可以对数据执行高级逻辑操作,并使用强大的 KQL 功能操作日志数据。

日志警报规则的目标可以是:

  • 单个资源,例如 VM。
  • 单个资源容器,例如资源组或订阅。
  • 使用跨资源查询的多个资源。

日志警报可以衡量两种不同的指标,这两个指标可用于不同的监控场景:

  • 表行数:返回的行数可用于处理 Windows 事件日志、syslog、应用程序异常等事件。
  • 数值列的计算:基于任何数值列的计算可用于包含任意数量的资源。 例如,CPU 使用率百分比。

可以配置日志警报是有状态的还是无状态的(目前为预览版)。

注意

尝试检测日志中的特定数据时(而非尝试检测日志中缺少数据时),日志警报的效果最好。 由于日志是半结构化数据,因此它们本质上比有关 VM 检测信息等信息的度量数据更具潜在性。 为避免在尝试检测日志中缺少数据时出错,请考虑使用指标警报。 你可以使用日志的指标警报将数据从日志发送到指标存储。

日志警报规则中的维度

创建日志警报规则时,可以使用维度来监视具有一条规则的资源的多个实例值。 例如,可以在运行网站或应用的多个实例上监视 CPU 使用率。 每个实例都被单独监控,为每个实例发送通知。

日志告警规则中按维度拆分

若要以同一条件监视多个 Azure 资源,可以使用按维度拆分。 通过按维度进行拆分,你可以为订阅或资源组大规模创建以资源为中心的警报。 通过使用数字或字符串列对组合进行分组,将警报拆分为单独的警报。 对 Azure 资源 ID 列进行拆分会使指定的资源进入警报目标。 需要将某个条件应用于范围内的多个资源时,你也可能会决定不进行拆分。 例如,需要在资源组范围中至少有五台计算机的 CPU 使用率超过 80% 时触发警报的情况。

使用 API

使用 ScheduledQueryRules API 管理工作区中的新规则。

注意

过去使用旧版 Log Analytics 警报 API 管理 Log Analytics 的日志警报。 了解有关切换到当前 ScheduledQueryRules API 的详细信息

Azure 账单的日志警报

日志警报列在资源提供程序 microsoft.insights/scheduledqueryrules 下,其中:

  • Application Insights 上的日志警报,显示时带有确切的资源名称以及资源组和警报属性。
  • 如果是使用 scheduledQueryRules API 创建的,则 Log Analytics 上的日志警报显示时带有确切的资源名称以及资源组和警报属性。
  • 通过旧式 Log Analytics API 创建的日志警报不是被跟踪的 Azure资源,没有强制使用的唯一资源名称。 这些警报仍作为隐藏资源在 microsoft.insights/scheduledqueryrules 上创建,这些资源的资源命名结构为 <WorkspaceName>|<savedSearchId>|<scheduleId>|<ActionId>。 针对旧式 API 的日志警报显示时带有上述隐藏的资源名称以及资源组和警报属性。

注意

在隐藏的资源名称中,不受支持的资源字符(例如 <、>、%、&、?、/)将被替换为 _,这也会在计费信息中反映出来。

活动日志警报

活动日志警报通过检查活动日志中是否有符合定义条件的新活动日志事件来监视资源。

你可能希望将活动日志警报用于以下类型的场景:

  • 对特定资源组或订阅中的资源执行特定操作时。 例如,你可能希望在以下情况下收到通知:
    • 删除生产资源组中的任何虚拟机。
    • 任何新角色分配到订阅中的用户时。
  • 发生服务运行状况事件。 服务运行状况事件包括应用于订阅中资源的事件和维护事件的通知。

可以对以下对象创建活动日志警报:

  • 任何活动日志事件类别,警报事件除外。
  • JSON 对象的顶级属性中的任何活动日志事件。

活动日志警报规则是 Azure 资源,因此,可使用 Azure 资源管理器模板来创建。 此外,还可以在 Azure 门户中创建、更新或删除它们。

活动日志警报只监视在其中创建该警报的订阅中的事件。

服务运行状况警报

服务运行状况警报是一种活动警报。 服务运行状况可以告知你有关中断、计划内维护活动以及其他运行状况建议的信息,因为已经过身份验证的服务运行状况体验知道你当前使用哪些服务和资源。

使用服务运行状况的最佳方法是设置服务运行状况警报,以便在服务问题、计划内维护或其他更改可能会影响你使用的 Azure 服务和区域时使用你首选的通信通道通知你。

资源运行状况警报

资源运行状况警报是一种活动警报。 资源运行状况概述可以帮助你诊断影响 Azure 资源的服务问题并获取支持。 它会报告有关资源的当前和过去运行状况的信息, 资源运行状况依赖于各种 Azure 服务发出的信号来评估资源是否正常运行。 如果资源运行不正常,资源运行状况将分析其他信息以确定问题根源。 它还会报告 Microsoft 采取的用于解决此问题的操作或可以采取的用于解决问题的措施。

智能检测警报

在设置适用于项目的 Application Insights 后,如果应用生成特定最低数据量,智能检测将花费 24 小时来了解应用的正常行为。 应用性能具有典型的行为模式。 某些请求或依赖项调用更容易出现失败,而且总体失败率可能会随着负载的增加而上升。 智能检测使用机器学习来查找这些异常。 智能检测可监视从应用收到的数据,特别是失败率。 如果 Web 应用的失败请求速率出现异常上升,那么 Application Insights 会近乎实时地自动通知你。

由于数据从 Web 应用提供给 Application Insights,因此智能检测会将当前行为与过去几天看到的模式进行比较。 如果故障率与之前的性能相比异常上升,则会触发分析。 为了帮助会审和诊断问题,通知详情中会提供失败及相关应用程序数据的特征分析。 还提供指向 Application Insights 门户的链接,以供进一步诊断。 该功能不需要任何设置或配置,因为它使用机器学习算法来预测正常的失败率。

虽然指标警报会告诉您可能存在问题,但智能检测会为您启动诊断工作,执行原本必须由你自己进行的大部分分析。 结果将整齐地打包,以帮助你快速找到问题的根源。

智能检测适用于在云或你自己的服务器上托管的 Web 应用,以及生成应用程序请求或依赖项数据的 Web 应用。

Prometheus 警报(预览版)

Prometheus 警报基于适用于 Prometheus 的 Azure Monitor 托管服务中存储的指标值。 当 PromQL 查询的结果解析为 true 时,这些警报将会触发。 Prometheus 警报触发时,它们的显示方式与管理方式与其他警报类型一样,但它们是使用 Prometheus 规则组配置的。 有关详细信息,请参阅适用于 Prometheus 的 Azure Monitor 托管服务中的规则组

后续步骤