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

你可能不确定要用作警报规则阈值的正确数字。 动态阈值会应用高级机器学习,并使用一组算法和方法来执行以下操作:

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

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

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

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

动态阈值有助于:

  • 使用一个警报规则为数百个指标系列创建可缩放警报。 如果警报规则更少,则创建和管理警报规则所需的时间更少。 可缩放的警报对于多个维度或多个资源(例如订阅中的所有资源)尤其有用。
  • 创建规则而无需知道要配置的阈值。
  • 使用高级概念配置指标警报,而无需精通指标。
  • 防止出现不能提供预期模式的干扰性(低精度)阈值或宽泛性(低召回率)阈值。

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

  • 大多数 Azure Monitor 平台和自定义指标。
  • 常见应用程序和基础结构指标。
  • 干扰指标,例如计算机 CPU 或内存。
  • 分散率较低的指标,例如可用性和错误率。

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

警报阈值计算和预览

创建警报规则时,动态阈值会使用 10 天的历史数据来计算每小时或每日季节性模式。 你在警报预览中看到的图表反映了该数据。

动态阈值会持续使用所有可用的历史数据来进行学习,并做出调整提升准确性。 三周后,动态阈值会有足够的数据来识别每周模式,并且模型会进行调整以包括每周季节性。

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

使用动态阈值的注意事项

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

配置动态阈值

若要配置动态阈值,请遵循创建警报规则的过程。 在“条件”选项卡上使用这些设置:

  • 对于“阈值”,请选择“动态”。
  • 对于“聚合类型”,建议不要选择“最大值”。
  • 对于“运算符”,选择“大于”,除非行为代表应用程序使用情况
  • 对于“阈值敏感度”,选择“”或“”以减少警报干扰。
  • 对于“检查间隔”,选择预警规则检查条件是否满足的频率。 若要最大程度地减少警报的业务影响,请考虑使用较低的频率。 确保此值小于或等于“回溯时间段”值。
  • 对于“回溯时间段”,设置每次检查数据时要回溯的时间段。 确保此值大于或等于“检查间隔”值。
  • 对于“高级选项”,选择在特定时间段内触发警报的冲突数。 可以选择设置开始学习指标历史数据的日期并计算动态阈值。

注意

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

动态阈值图表

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

屏幕截图显示一个图表展示指标、其动态阈值限制和触发的一些警报。

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

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

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

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

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

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

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

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

动态阈值不支持的指标

动态阈值支持大多数指标,但以下指标无法使用动态阈值:

资源类型 指标名称
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

如果你有关于动态阈值的反馈,请向我们发送电子邮件