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

使用动态阈值创建指标警报

动态阈值会应用高级机器学习,并使用一组算法和方法来执行以下操作:

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

使用动态阈值时,不必知道每个指标的“正确”阈值,因为动态阈值会为你计算最合适的阈值。

建议为警报规则配置以下指标的动态阈值:

  • 虚拟机 CPU 百分比
  • Application Insights HTTP 请求执行时间

动态阈值有助于:

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

可以对以下项使用动态阈值:

  • 大多数 Azure Monitor 平台和自定义指标
  • 常见应用程序和基础结构指标
  • 干扰指标,例如计算机 CPU 或内存
  • 低分散指标,例如可用性和错误率。有关动态阈值不支持的指标列表,请参阅动态阈值不支持的指标

可以使用以下方法配置动态阈值:

警报阈值计算和预览

首次创建警报规则时,动态阈值会使用 10 天的历史数据来计算每小时或每日季节性模式。 你在警报预览中看到的图表反映了该数据。 创建警报规则后,动态阈值会持续使用所有可用的历史数据进行学习,并调整阈值以使其更准确。 三周后,动态阈值也有足够的数据来识别每周模式,并且模型会进行调整以包括每周季节性。 使用动态阈值的警报规则在收集三天和至少 30 个指标数据样本之前不会触发警报。

系统会自动识别长时间中断,并从阈值学习算法中移除它们。 如果长时间中断,则动态阈值会了解数据,并检测与中断发生前相同的敏感度级别的系统问题。

使用动态阈值时的注意事项

  • 为了确保阈值计算准确,使用动态阈值的警报在收集三天和至少 30 个指标数据样本之前不会触发警报。 因此,在有足够的数据可用之前,新资源或缺少指标数据的资源不会触发警报。
  • 动态阈值至少需要三周的历史数据来检测每周季节性。 可能无法检测到某些详细模式,例如每两小时或每半周模式。
  • 如果指标的行为最近发生了变化,则这些变化不会立即反映在动态阈值上限和下限中。 这些边界是基于过去 10 天的指标数据计算得出的。 查看给定指标的动态阈值边界时,请查看过去一周(而不仅仅是过去几个小时或几天)的指标趋势。
  • 动态阈值适合检测重大偏差,而不适合检测逐渐形成的问题。 缓慢的行为更改可能不会触发警报。

动态阈值敏感度的已知问题

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

    • 阈值敏感度:将敏感度设置为“低”,以便降低对偏差的敏感度。
    • 冲突数(位于“高级设置”下):将预警规则配置为仅在某个时间段内出现一定数量的偏差时才触发。 这设置使规则不易受到暂时性偏差的影响。
  • 你可能会遇到使用动态阈值但是未触发或不够敏感的警报规则,即使它配置了高敏感度。 这种情况通常是因为指标分布过于不规律。 请考虑以下解决方案之一来解决此问题:

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

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

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

配置动态阈值

按步骤使用以下设置来创建或编辑警报规则

  1. 在“条件”选项卡中
    1. 在“阈值”字段中,选择“动态”。
    2. 在“聚合类型”中,建议不要选择“最大值”。
    3. 在“运算符”字段中,选择“大于”,除非行为表示应用程序使用情况。
    4. 在“阈值敏感度”中,选择“”或“”以减少警报噪音。
    5. 在“检查间隔”字段中,考虑根据警报的业务影响降低频率。
    6. 在“回看时间段”,将回看时间段设置为至少 15 分钟。 例如,如果“检查间隔”字段设置为 5 分钟,则回看时间段应至少为 3 分钟或更长时间。
  2. 继续执行其余过程来创建警报规则。

注意

通过门户创建的指标警报规则将在目标资源所在的资源组中创建。

了解动态阈值图表

以下图表显示一个指标及其动态阈值限制,以及当值超出允许的阈值时触发的一些警报。

Screenshot that shows a metric, its dynamic thresholds limits, and some alerts that fired.

使用以下信息解释该图表:

  • 蓝线:一段时间内实际测量的指标。
  • 蓝色阴影区域:显示指标的允许范围。 如果指标值停留在此范围内,则不会触发警报。
  • 蓝点:如果通过左键选择图表的一部分,然后将鼠标悬停在蓝线上,则光标下会出现一个蓝点,显示单个聚合指标值。
  • 带有蓝点的弹出窗口:显示测量的指标值(蓝点)和允许范围的上限值和下限值。
  • 带有黑色圆圈的红点:显示超出允许范围的第一个指标值。 此值会触发指标警报并将该警报置于活动状态。
  • 红点:指示超出允许范围的其他度量值。 它们不会触发更多指标警报,但该警报会保持活动状态。
  • 红色区域:显示指标值超出允许范围的时间。 只要随后的测量值超出允许范围,该警报就会保持活动状态,但不会触发新警报。
  • 红色区域结束:当蓝线回到允许值内时,红色区域停止,度量值线变蓝。 在带有黑色轮廓的红点设置为“已解决”时触发的指标警报的状态。

动态阈值不支持的指标

大多数指标都支持动态阈值,但某些指标无法使用动态阈值。

下表列出了动态阈值不支持的指标。

资源类型 指标名称
Microsoft.ClassicStorage/storageAccounts UsedCapacity
Microsoft.ClassicStorage/storageAccounts/blobServices BlobCapacity
Microsoft.ClassicStorage/storageAccounts/blobServices BlobCount
Microsoft.ClassicStorage/storageAccounts/blobServices IndexCapacity
Microsoft.ClassicStorage/storageAccounts/fileServices FileCapacity
Microsoft.ClassicStorage/storageAccounts/fileServices FileCount
Microsoft.ClassicStorage/storageAccounts/fileServices FileShareCount
Microsoft.ClassicStorage/storageAccounts/fileServices FileShareSnapshotCount
Microsoft.ClassicStorage/storageAccounts/fileServices FileShareSnapshotSize
Microsoft.ClassicStorage/storageAccounts/fileServices FileShareQuota
Microsoft.Compute/disks 复合磁盘读取字节数/秒
Microsoft.Compute/disks 复合磁盘读取操作数/秒
Microsoft.Compute/disks 复合磁盘写入字节数/秒
Microsoft.Compute/disks 复合磁盘写入操作数/秒
Microsoft.ContainerService/managedClusters NodesCount
Microsoft.ContainerService/managedClusters PodCount
Microsoft.ContainerService/managedClusters CompletedJobsCount
Microsoft.ContainerService/managedClusters RestartingContainerCount
Microsoft.ContainerService/managedClusters OomKilledContainerCount
Microsoft.Devices/IotHubs TotalDeviceCount
Microsoft.Devices/IotHubs ConnectedDeviceCount
Microsoft.Devices/IotHubs TotalDeviceCount
Microsoft.Devices/IotHubs ConnectedDeviceCount
Microsoft.DocumentDB/databaseAccounts CassandraConnectionClosures
Microsoft.EventHub/clusters 大小
Microsoft.EventHub/namespaces 大小
Microsoft.IoTCentral/IoTApps connectedDeviceCount
Microsoft.IoTCentral/IoTApps provisionedDeviceCount
Microsoft.Kubernetes/connectedClusters NodesCount
Microsoft.Kubernetes/connectedClusters PodCount
Microsoft.Kubernetes/connectedClusters CompletedJobsCount
Microsoft.Kubernetes/connectedClusters RestartingContainerCount
Microsoft.Kubernetes/connectedClusters OomKilledContainerCount
Microsoft.MachineLearningServices/workspaces/onlineEndpoints RequestsPerMinute
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/deployments DeploymentCapacity
Microsoft.Maps/accounts CreatorUsage
Microsoft.Media/mediaservices/streamingEndpoints EgressBandwidth
Microsoft.Network/applicationGateways 吞吐量
Microsoft.Network/azureFirewalls 吞吐量
Microsoft.Network/expressRouteGateways ExpressRouteGatewayPacketsPerSecond
Microsoft.Network/expressRouteGateways ExpressRouteGatewayNumberOfVmInVnet
Microsoft.Network/expressRouteGateways ExpressRouteGatewayFrequencyOfRoutesChanged
Microsoft.Network/virtualNetworkGateways ExpressRouteGatewayBitsPerSecond
Microsoft.Network/virtualNetworkGateways ExpressRouteGatewayPacketsPerSecond
Microsoft.Network/virtualNetworkGateways ExpressRouteGatewayNumberOfVmInVnet
Microsoft.Network/virtualNetworkGateways ExpressRouteGatewayFrequencyOfRoutesChanged
Microsoft.ServiceBus/namespaces 大小
Microsoft.ServiceBus/namespaces 消息
Microsoft.ServiceBus/namespaces ActiveMessages
Microsoft.ServiceBus/namespaces DeadletteredMessages
Microsoft.ServiceBus/namespaces ScheduledMessages
Microsoft.ServiceFabricMesh/applications AllocatedCpu
Microsoft.ServiceFabricMesh/applications AllocatedMemory
Microsoft.ServiceFabricMesh/applications ActualCpu
Microsoft.ServiceFabricMesh/applications ActualMemory
Microsoft.ServiceFabricMesh/applications ApplicationStatus
Microsoft.ServiceFabricMesh/applications ServiceStatus
Microsoft.ServiceFabricMesh/applications ServiceReplicaStatus
Microsoft.ServiceFabricMesh/applications ContainerStatus
Microsoft.ServiceFabricMesh/applications RestartCount
Microsoft.Storage/storageAccounts UsedCapacity
Microsoft.Storage/storageAccounts/blobServices BlobCapacity
Microsoft.Storage/storageAccounts/blobServices BlobCount
Microsoft.Storage/storageAccounts/blobServices BlobProvisionedSize
Microsoft.Storage/storageAccounts/blobServices IndexCapacity
Microsoft.Storage/storageAccounts/fileServices FileCapacity
Microsoft.Storage/storageAccounts/fileServices FileCount
Microsoft.Storage/storageAccounts/fileServices FileShareCount
Microsoft.Storage/storageAccounts/fileServices FileShareSnapshotCount
Microsoft.Storage/storageAccounts/fileServices FileShareSnapshotSize
Microsoft.Storage/storageAccounts/fileServices FileShareCapacityQuota
Microsoft.Storage/storageAccounts/fileServices FileShareProvisionedIOPS

后续步骤