选择适当类型的警报规则
本文介绍可以创建的 Azure Monitor 警报的类型, 帮助你了解何时使用每种警报。 有关定价的详细信息,请参阅定价页。
警报的类型包括:
Azure Monitor 警报的类型
警报类型 | 何时使用 | 定价信息 |
---|---|---|
指标警报 | 指标数据存储在系统中,已预先计算。 如果希望收到有关需要很少或不需要操作的数据的警报,指标警报很有用。 如果要监视的数据在指标数据中可用,请使用指标警报。 | 每个指标警报规则根据监视的时序数收费。 |
日志搜索警报 | 可以使用日志搜索警报对数据执行高级逻辑操作。 如果要监视的数据已在日志中提供,或者需要高级逻辑,你可以使用 Kusto 查询语言 (KQL) 的强大功能通过日志搜索警报进行数据操作。 | 每个日志搜索警报规则根据计算日志查询的间隔计费。 查询计算越频繁,成本就越高。 对于使用按维度拆分为大规模监视配置的日志搜索警报,成本还取决于因查询而产生的维度所创建的时序数量。 |
活动日志警报 | 活动日志提供对资源上发生的所有操作的审核。 使用活动日志警报,可以在资源发生特定事件(例如,重启、关闭或者创建或删除资源)时收到警报。 服务运行状况警报和资源运行状况警报会在你的其中一个服务或资源出现问题时告知你。 | 有关详细信息,请参阅定价页。 |
指标警报
指标警报规则通过定期评估资源指标的条件来监视资源。 如果满足条件,则会触发警报。 指标时序是在一段时间内捕获的一系列指标值。
可使用以下指标创建规则:
指标警报规则包括以下功能:
- 可以对单个资源的警报规则使用多个条件。
- 可以通过监视多个指标维度来添加粒度。
- 可以使用机器学习驱动的动态阈值。
- 可以配置指标警报是有状态的还是无状态的。 默认情况下,指标警报是有状态的。
指标警报规则的目标可以是:
- 单个资源,例如虚拟机 (VM)。 有关支持的资源类型,请参阅 Azure Monitor 中指标警报支持的资源。
- 同一 Azure 区域中同一类型的多个资源,例如资源组。
将多个条件应用于指标警报规则
为单个资源创建警报规则时,可以应用多个条件。 例如,可以创建一个警报规则来监视 Azure 虚拟机,并在“CPU 百分比高于 90%”且“队列长度超过 300 个项目”时发出警报。 当警报规则具有多个条件时,警报会在警报规则中的所有条件成立时触发,并且当至少一个条件在连续三次检查中不再为成立时解析。
使用维度缩小目标范围
有关如何在指标预警规则中使用维度的说明,请参阅在单个指标预警规则中监视多个时序。
使用按维度拆分以同一条件监视多个资源
若要以同一条件监视多个 Azure 资源,可以使用按维度拆分。 使用按维度拆分时,可为订阅或资源组大规模创建以资源为中心的警报。 通过对组合进行分组,警报被拆分为单独的警报。 针对“Azure 资源 ID”列进行拆分会使指定的资源进入警报目标。
需要将某个条件应用于范围内的多个资源时,你也可能会决定不进行拆分。 例如,你可能希望在资源组范围中至少有五台计算机的 CPU 使用率超过 80% 时触发警报。
使用一个警报规则监视多个资源
可以通过将相同的指标警报规则应用于相同类型的多个资源来大规模监视存在于同一 Azure 区域中的资源。 将为每个受监视的资源发送单独通知。
在以下 Azure 云中,针对这些服务支持的平台指标如下:
服务 | 资源提供程序 | 全球 Azure | Government | 中国 |
---|---|---|---|---|
虚拟机 | "Microsoft.Compute/virtualMachines" | 是 | 是 | 是 |
SQL Server 数据库 | "Microsoft.Sql/servers/databases" | 是 | 是 | 是 |
SQL Server 弹性池 | "Microsoft.Sql/servers/elasticpools" | 是 | 是 | 是 |
NetApp 文件容量池 | "Microsoft.NetApp/netAppAccounts/capacityPools" | 是 | 是 | 是 |
NetApp 文件卷 | "Microsoft.NetApp/netAppAccounts/capacityPools/volumes" | 是 | 是 | 是 |
Azure Key Vault | "Microsoft.KeyVault/vaults" | 是 | 是 | 是 |
用于 Redis 的 Azure 缓存 | "Microsoft.Cache/redis" | 是 | 是 | 是 |
Azure Stack Edge 设备 | (此资源没有特定的资源提供程序。 由于 Stack 边缘设备的工作原理,指标是从多个资源提供程序检索的。 | 是 | 是 | 是 |
恢复服务保管库 | "Microsoft.RecoveryServices/Vaults" | 是 | 否 | 否 |
Azure Database for PostgreSQL 灵活服务器 | "Microsoft.DBforPostgreSQL/flexibleServers" | 是 | 是 | 是 |
裸机计算机(运营商关系) | "Microsoft.NetworkCloud/bareMetalMachines" | 是 | 是 | 是 |
存储设备(运营商关系) | "Microsoft.NetworkCloud/storageAppliances" | 是 | 是 | 是 |
群集(运营商关系) | "Microsoft.NetworkCloud/clusters" | 是 | 是 | 是 |
网络设备(运营商关系) | Microsoft.NetworkCloud/l2Networks、Microsoft.NetworkCloud/l3Networks | 是 | 是 | 是 |
数据收集规则 | "Microsoft.Insights/datacollectionrules" | 是 | 是 | 是 |
注意
以下情况不支持多资源指标警报:
- 针对 VM 来宾指标发出警报。
- 针对 VM 网络指标(总网络流入量、总网络流出量、入站流数、出站流数、入站流最大创建速率,以及出站流最大创建速率)发出警报。
可以通过以下三种方式之一指定单个指标警报规则的监视范围。 例如,对于 VM,可以将范围指定为:
- 一个 Azure 区域中某个订阅内的 VM 列表。
- 一个 Azure 区域中某个订阅内的一个或多个资源组中的所有 VM。
- 一个 Azure 区域中某个订阅内的所有 VM。
应用具有动态阈值的高级机器学习
动态阈值使用高级机器学习来:
- 了解指标的历史行为。
- 识别模式并适应一段时间内的指标更改,例如每小时、每日或每周模式。
- 识别指示可能出现服务问题的异常。
- 计算指标最适当的阈值。
机器学习持续使用新数据来了解详细信息,并提高阈值的准确性。 因为系统会随着时间的推移而适应指标的行为,并根据与其模式的偏差发出警报,所以你无需知道每个指标的“正确”阈值。
动态阈值有助于:
- 使用一个警报规则为数百个指标系列创建可缩放警报。 如果警报规则更少,则创建和管理警报规则所需的时间更少。
- 创建规则而无需知道要配置的阈值。
- 使用高级概念配置指标警报,不需要精通指标。
- 防止出现不能提供预期模式的干扰性(低精度)阈值或宽泛性(低召回率)阈值。
- 处理干扰指标(例如机器 CPU 或内存)和低分散指标(例如可用性和错误率)。
有关如何在指标警报规则中使用动态阈值的详细说明,请参阅动态阈值。
日志搜索警报
日志搜索警报规则通过使用 Log Analytics 查询以设置的频率评估资源日志,以此来监视资源。 如果满足条件,则会触发警报。 你可使用 Log Analytics 查询,因此可以对数据执行高级逻辑操作,并使用强大的 KQL 功能操作日志数据。
日志搜索警报规则的目标可以是:
- 单个资源,例如 VM。
- 单个资源容器,例如资源组或订阅。
- 多个使用跨资源查询的资源。
日志搜索警报可以度量两项不同的指标,这两项指标可用于不同的监视方案:
- 表行数:返回的行数可用于处理 Windows 事件日志、Syslog 和应用程序异常等事件。
- 数值列的计算:基于任何数值列的计算可用于包含任意数量的资源。 例如 CPU 百分比。
可以对日志搜索警报是有状态的还是无状态的进行配置。
请注意,监控状态日志搜索警报具有以下限制:
- 它们在每次评估时最多可以触发 300 个警报。
- 最多可以有 5000 个具有
fired
警报条件的警报。
注意
尝试检测日志中的特定数据时(而非尝试检测日志中缺少数据时),日志搜索警报的效果最好。 由于日志是半结构化数据,因此它们本质上比有关 VM 检测信号等信息的指标数据的延迟程度更高。 为避免在尝试检测日志中缺少数据时出错,请考虑使用指标警报。 可以使用日志的指标警报将数据从日志发送到指标存储。
使用维度监视资源的多个实例
创建日志搜索警报规则时,可以使用维度来监视具有一条规则的资源的多个实例值。 例如,可以在运行网站或应用的多个实例上监视 CPU 使用率。 每个实例都单独受到监视。 为每个实例发送通知。
使用按维度拆分以同一条件监视多个资源
若要以同一条件监视多个 Azure 资源,可以使用按维度拆分。 使用按维度拆分时,可为订阅或资源组大规模创建以资源为中心的警报。 通过使用数字或字符串列对组合进行分组,将警报拆分为单独的警报。 对 Azure 资源 ID 列进行拆分会使指定的资源进入警报目标。
需要将某个条件应用于范围内的多个资源时,你也可能会决定不进行拆分。 例如,你可能希望在资源组范围中至少有五台计算机的 CPU 使用率超过 80% 时触发警报。
将 API 用于日志搜索警报规则
使用 ScheduledQueryRules API 管理工作区中的新规则。
Azure 账单上的日志搜索警报
日志搜索警报在资源提供程序 microsoft.insights/scheduledqueryrules
下列出时具有以下特点:
- 针对 Application Insights 的日志搜索警报,显示时带有确切的资源名称以及资源组和警报属性。
- 如果 Log Analytics 上的日志搜索警报是使用 scheduledQueryRules API 创建的,则它们在显示时带有确切的资源名称以及资源组和警报属性。
- 通过旧式 Log Analytics API 创建的日志搜索警报不是受跟踪的 Azure 资源,没有强制使用的唯一资源名称。 这些警报仍作为隐藏资源在
microsoft.insights/scheduledqueryrules
上创建,这些资源的资源命名结构为<WorkspaceName>|<savedSearchId>|<scheduleId>|<ActionId>
。 针对旧式 API 的日志搜索警报显示时带有上述隐藏的资源名称以及资源组和警报属性。
注意
不支持的资源字符,如 <、>、%、&、空格、? 和 /)会被替换为下划线 (_)。 此字符更改也反映在账单信息中。
活动日志警报
活动日志警报通过检查活动日志中是否有符合定义条件的新活动日志事件来监视资源。
你可能希望将活动日志警报用于以下类型的场景:
- 对特定资源组或订阅中的资源执行特定操作时。 例如,你可能希望在以下情况下收到通知:
- 删除了生产资源组中的 VM。
- 新角色分配到订阅中的用户时。
- 发生服务运行状况事件。 服务运行状况事件包括适用于订阅中资源的事件和维护事件的通知。
可以对以下对象创建活动日志警报:
- 任何活动日志事件类别,警报事件除外。
- JSON 对象的顶级属性中的任何活动日志事件。
活动日志警报规则是 Azure 资源,因此,可使用 Azure 资源管理器模板来创建。 此外,还可以在 Azure 门户中创建、更新或删除它们。
活动日志警报只监视在其中创建该警报的订阅中的事件。
服务运行状况警报
服务运行状况警报是一种活动警报。 服务运行状况可以告知你有关中断、计划内维护活动以及其他运行状况建议的信息,因为已经过身份验证的服务运行状况体验知道你当前使用哪些服务和资源。
使用服务运行状况的最佳方法是,设置服务运行状况警报,以便系统在服务问题、计划内维护或其他更改可能会影响你使用的 Azure 服务和区域时通过你首选的信道通知你。
资源运行状况警报
资源运行状况警报是一种活动警报。 资源运行状况概述可以帮助你诊断影响 Azure 资源的服务问题并获取相关支持。 它会报告有关资源的当前和过去运行状况的信息,
资源运行状况依赖于各种 Azure 服务发出的信号来评估资源是否正常运行。 如果资源运行不正常,资源运行状况会分析更多信息以确定问题根源。 它还会报告 Microsoft 采取的用于解决此问题的操作,并确定你可以采取的用于解决此问题的操作。
智能检测警报
在设置适用于项目的 Application Insights 后,应用会生成特定的数据量,智能检测需要 24 小时来了解应用的正常行为。 应用性能具有典型的行为模式。 某些请求或依赖项调用更容易出现失败,而总体失败率可能会随着负载的增加而上升。
智能检测使用机器学习来查找这些异常。 智能检测监视从应用收到的数据,特别是失败率。 如果 Web 应用的失败请求速率出现异常上升,那么 Application Insights 会近乎实时地自动通知你。
由于数据从 Web 应用提供给 Application Insights,因此智能检测会将当前行为与过去几天看到的模式进行比较。 如果故障率与之前的性能相比异常上升,则会触发分析。
为了帮助你会审和诊断问题,警报详细信息中会提供失败及相关应用程序数据的特征分析。 还提供指向 Application Insights 门户的链接,以供进一步诊断。 该功能不需要设置或配置,因为它使用机器学习算法来预测正常失败率。
指标警报会告诉你可能存在问题,而智能检测则为你启动诊断工作。 它会执行大量的分析,无需你亲自动手。 你会收到井然有序的结果,可以借此快速找到问题的根源。
智能检测适用于在云或你自己的服务器上托管的 Web 应用,以及生成应用程序请求或依赖项数据的 Web 应用。