异常值检测简介

您正在查看 Apigee X 文档。
查看 Apigee Edge 文档。

Apigee 允许您创建基于模式的规则,以根据一组预定义的条件触发提醒。例如,出现以下任意一种情况时,您可以发出提醒:

  • [目标 mytarget1] 的 [5xx 的错误率] [大于] [10%] 且持续 [10 分钟]
  • [地区 us-east-1] 的 [ 2xx 错误的计数 ] [小于] [50] 且持续 [5 分钟]
  • [代理 myproxy1] 的 [p90 延迟时间] [大于] [750ms] 且持续 [10 分钟]

当满足提醒的条件时,API Monitoring 会发出提醒以通知您存在问题。但是,您必须先定义具体的提醒条件,然后 API Monitoring 才会触发提醒。

虽然此类预定义提醒很有用,但可能很难确定条件的正确阈值,因为流量模式会随着时间的推移而变化。例如,如果您将阈值设置得过低,就会收到大量提醒。如果设置的阈值过高,您可能会错过一些重要问题或中断。

在医学中会出现类似的问题,当医生根据血压或胆固醇等因素的临床试验尝试预测患者是否会患上某种疾病(例如心脏病),如果试验的阈值过低,会返回假正例;如果阈值过高,试验会返回假负例。

您可以使用统计模型,让 Apigee 来确定用于预测异常事件或 API 流量模式(称为“异常值”)的阈值,而无需像预定义提醒那样自行设置阈值。这称为异常值检测

异常检测

通过异常值检测,您可以让 Apigee 检测流量和性能问题,而不是自行确定提醒的条件。Apigee 会在组织、环境和区域级别自动查找异常值情况。检测到异常值时,异常值会记录在 Apigee 界面异常值事件信息中心中。

检测到的异常值示例包括新 API 版本导致流量意外激增以及 API 相应延迟时间增加的情况。或者,后端上配置有误的版本会导致 API 报告的后端错误增加。

检测到的异常值包括以下信息:

  • 导致异常值的指标,例如代理延迟时间或 HTTP 错误代码。
  • 异常值的严重程度。根据模型中的置信度,严重程度可以是轻微、中等或严重。较低的置信度表示严重程度轻微,而较高的置信度则表示严重。

例如,Apigee 可以自动检测异常值,例如:

  • [环境 prod、地区 region1] [轻微] [增加 503 错误数]
  • [环境 prod、地区 region2] [中度] [增加 4xx 错误数]
  • [环境 prod、地区 region3] [严重] [增加延迟时间]

异常值类型

Apigee 会自动检测以下类型的异常值:

  • 组织、环境和区域级别的 HTTP 503 错误增加
  • 组织、环境和区域级别的 HTTP 504 错误增加
  • 组织、环境和区域层级的所有 HTTP 4xx 或 5xx 错误增加
  • 组织、环境和区域级的第 90 百分位 (p90) 的总响应延迟时间增加

异常值检测的工作原理

异常值检测包括以下阶段:

训练模型

异常值检测的工作原理是训练 API 代理根据历史时间序列数据的行为而构建的模型。您无需执行任何操作即可训练模型。Apigee 会根据过去六个小时的流量数据自动为您创建并训练模型。因此,在对模型进行异常值记录之前,Apigee 要求 API 代理至少需要六个小时来训练模型。

训练的目标是提高模型的准确性,然后使用历史数据对模型进行测试。测试模型准确率的最简单方法是计算其错误率,即假正例和假负例的总和除以预测事件总数。但也可以采用更复杂的准确率统计度量,涉及 ROC 曲线

记录异常值事件

在运行时,Apigee 异常值检测功能会将 API 代理的当前行为与模型预测的行为进行比较。然后,在特定的置信度下,异常值检测可以确定操作指标超出预测值的情况。例如,当 5xx 错误率超过模型预测的概率。

如果 Apigee 检测到异常值情况,它会自动将该情况记录到 Apigee 界面中的异常值事件信息中心。对于检测到的每个异常值,Apigee 会将其严重级别记录为轻微、中等或严重。

异常值事件信息中心中显示的事件列表包含 Apigee 检测到的所有异常值和所有触发的提醒。