概览

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

简介

注册以预览。

如果您在 1 个工作日内没有收到我们的回复,请尝试重新注册。

对数十亿个时间序列的预测和异常检测的计算量非常大。大多数现有系统会以批处理作业(例如风险流水线、流量预测、需求规划等)运行预测和异常检测。这会严重限制可在线执行的分析类型(例如,我们应该根据一系列事件维度突然激增或减少提醒)。

进行时间序列预测并将其用于 Timeseries Insights API 的异常检测的主要目标是:

  • 可扩展到数十亿个时间序列(其中时间序列定义为事件属性的一系列计数 - 例如,在运营商进行的事务)。
  • 为预测和异常检测提供实时延迟(例如,在几秒钟内检测所有时间序列中的趋势和季节性),并确定任何切片是否意外地增加或减少。

API 功能

  • 将数据集存储在 Google Cloud Storage 中,然后加载并加载数据集。允许以流式传输方式附加其他事件。
  • 对已加载的数据集执行时间序列查询,以预测趋势和检测异常情况。
  • 卸载不再需要的数据集。
  • 请求数据集的处理状态。

输入数据

时间序列数据是观察观察结果的一组集合。例如,特定作业每分钟的平均 CPU 使用率是简单的时间序列数据。输入数据的最小单元是在特定时间作为键值对的数据点。在这里,键是维度的名称。本示例中的维度可以是 cpuramstate 等。

Timeseries

Event

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"}

每个事件都包含:

  • 时间戳
  • 每个维度包含以下维度:
    • 名称(在整个数据集中唯一)
    • 值(字符串、布尔值、int/long 或 double) 事件的类型是与事件相关的属性。 一般来说,一组维度名称对应于一种事件。例如,["user", "job", "data_center", "task_num", "gcu"] 用于作业资源消耗事件,["user", "gcu", "disk", "ram"] 用于用户配额事件。
  • 一个长值组 ID,请为相关的 Event 记录设置相同的值。 通常,每个 Event 记录都有一个唯一 ID。群组 ID 的用例还包括:
    • 来自多个 Event 记录的事件(事件时间戳相同)的事件标识符,尤其当同一事件的不同来源来自不同来源时之后再合并。 例如,监控同一设备的多个传感器可以分别生成事件记录。
    • 一系列相关事件的会话标识符(通常在短时间内使用时间戳)。 例如,浏览来自网络浏览会话的活动。再比如,出租车约车的日志条目。
    • 用户帐号标识符,因此具有相同组 ID 的所有 Event 记录都属于同一个用户。

数据集

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

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

您需要先构建/编制索引一个数据集,然后才能查询或更新。创建数据集时会开始编入索引,通常需要几分钟到几个小时才能完成,具体取决于数据量。 更具体地说,在初始索引期间,数据源会扫描一次。如果在初始索引编制完成后 Cloud Storage URI 的内容发生更改,则不会再次扫描它们。 使用流式传输功能获取其他数据。 流式更新几乎可以实时地编入索引。

注意:Timeseries Insights API 无法返回原始流式更新,因此客户端应拥有这些数据的存储。

时间序列和异常检测

切片

对于 Timeseries Insights API,Slice 是一系列具有维度值的特定组合的事件。 我们关注一段时间内,属于这些切片的事件分布情况。 对于给定的切片,事件将按用户指定时间间隔的数值进行聚合,该时间序列是检测异常的时间序列。上图显示了在具有 "user", "job", "data_center" 维度的数据集的不同切片选择。

时间序列和异常

如果时间间隔内的数值与过去的值存在显著差异,则特定切片的异常。该图显示了基于全球温度(超过 10 年)的时间序列。 假设对 2015 年上个月的异常值存有兴趣,我们对此感兴趣。对系统的查询会将感兴趣的时间间隔 testInterval 指定为“2015 年 12 月 31 日结束”。将 testInterval 之前检索到的时间序列划分为较早的训练时间段,后跟留出时间段。系统使用训练期的数据训练模型,并使用留出期来验证模型是否能够可靠地预测下一个值。在这个例子中,暂定期为 1 年。通常情况下,占保全期限是所使用的全部历史记录的 5-10%。该图显示了模型中具有上限值和下限值的实际数据和预测值。2015/12 的温度标记为异常,因为实际值实际上是在预测边界之外。