概览

简介

数十亿个时序的预测和异常检测需要进行大量计算。大多数现有系统将预测和异常检测作为批量作业运行(例如,风险流水线、流量预测、需求规划等)。这会严重限制您可以在线执行的分析类型,例如决定根据一组事件维度的突然增加还是减少发出提醒。

Timeseries Insights API 的主要目标包括:

  • 根据查询参数,扩展到数十亿个时序,这些时序由原始事件及其属性动态构建。
  • 提供实时预测和异常值检测结果。也就是说,在几秒钟内检测所有时序的趋势和季节性变化,并确定是否有任何切片意外上升或下降。

API 功能

  • 管理数据集
    • 将由 Cloud Storage 上存储的多个数据源组成的数据集编入索引并加载该数据集。允许以流式方式附加新事件。
    • 卸载不再需要的数据集。
    • 询问数据集的处理状态。
  • 查询数据集
    • 检索与给定属性值匹配的时序。时序可预测到指定的时间范围。还会评估时间序列是否存在异常。
    • 自动检测属性值组合是否存在异常。
  • 更新数据集
    • 可以近乎实时地提取最近发生的新事件并将其整合到索引中(延迟几秒到分钟)。

灾难恢复

Timeseries Insights API 不用作 Cloud Storage 的备份,也不返回原始流式更新。客户端负责单独存储和备份数据。

在发生地区性服务中断后,服务会尽力恢复。在服务中断开始 24 小时内更新的元数据(有关数据集和操作状态的信息)和流式用户数据可能无法恢复。

在恢复期间,可能无法使用数据集的查询和流式更新。

输入数据

数字数据和分类数据随时间的推移是很常见的。例如,下图显示了一段时间内数据中心内单个正在运行的作业在每分钟的 CPU 使用率、内存用量和状态。CPU 用量和内存用量是数值,而状态是分类值。

Timeseries

事件

Timeseries Insights API 使用事件作为基本数据条目。每个事件都有一个时间戳和一系列维度(即键值对,其中键为维度名称)。这个简单的表示法让我们能够处理数万亿的数据例如,其中会包含数据中心、用户、任务名称和任务编号以完全表示单个事件。上图显示了为单个作业记录的一系列事件,该作业展示了一部分维度。

{"name":"user","stringVal":"user_64194"},
{"name":"job","stringVal":"job_45835"},
{"name":"data_center","stringVal":"data_center_30389"},
{"name":"task_num","longVal":19},
{"name":"cpu","doubleVal":3840787.5207877564},
{"name":"ram","doubleVal":1067.01},
{"name":"state","stringVal":"idle"}

DataSet

DataSet是事件的集合。查询在同一数据集中执行。每个项目可以有多个数据集。

数据集基于批量数据和流式数据构建。批量数据构建会从多个 Cloud Storage URI 作为数据源读取数据。批量构建完成后,可以使用流式数据更新数据集。对历史数据使用批量构建,系统可以避免冷启动问题。

您需要先构建数据集或将其编入索引,然后才能查询或更新数据集。索引会在创建数据集时开始,并且通常需要几分钟到数小时才能完成,具体取决于数据量。更具体地说,在初始索引编制期间,系统会扫描数据源一次。如果 Cloud Storage URI 的内容在初始索引编制完成后发生更改,则不会再次扫描这些 URI。如需更多数据,请使用流式更新。流式更新会近乎实时地持续编入索引。

时间序列和异常值检测

切片

对于 Timeseries Insights API,切片 是具有特定维度值组合的事件集合。我们希望能够衡量一段时间内归入这些切片的事件。

对于给定的 Slice,事件会按用户指定的时间间隔(即用于检测异常的时序)聚合为数值。上图展示了因“用户”“作业”和“data_center”维度的不同组合而产生的不同切片选择。

时间序列和异常

如果相关时间范围内的数值与过去的值明显不同,则特定切片会出现异常。上图展示了基于 10 年全球测量温度的时序。假设我们想知道 2015 年的最后一个月是否为异常值。对系统的查询将感兴趣的时间 detectionTime 指定为“2015/12/01”,并将 granularity 指定为“1 个月”。在 detectionTime 之前检索到的时序分为之前的训练期和留出期。系统会使用训练期的数据来训练模型,并使用留出期来验证模型是否可以可靠地预测后续值。在此示例中,留出期为 1 年。此图显示了模型的实际数据和预测值,以及上限和下限。由于实际值超出了预测的边界,因此 2015/12 年的温度被标记为异常。

后续步骤