OpentTsdb官方文档中文版——降采样

  

? ?降采样(或在信号处理中,抽取)是降低数据采样率或分辨率的处理过程,例如,假设温度传感器每秒钟都向OpenTSDB系统发送数据。如果用户在一小时内查询数据,他们将获得3600个数据点,这些数据点可以相当容易地绘制出来。但是现在,如果用户要求整整一周的数据,他们将获得604800个数据点,并且突然间图形可能变得非常混乱。使用降采样器,单个时间序列在一个时间范围内的多个数据点在一个对齐的时间戳中与数学函数一起聚合成单个值。这样我们可以将数量从604800减少到168。

  

? ?降采样器至少需要两个组件:

  
      <李>时间间隔(间隔)——一个时间范围(或存储桶),用于聚合这些值。例如:我们可以将1分钟或1小时甚至整整一天的多个值聚合。间隔以& lt; Size> & lt; Units>格式指定,例如1 h为1小时或30 m为30分钟,从2.3开始,现在可以用“所有”将时间范围内的所有结果缩减为一个值,例如,0总量将从查询开始到结束总结所有值。请注意,数值仍然是必需的,但它可以是零或任意其他值。   <李>聚合函数——确定如何合并区间中的值的数学函数。与前述的聚合器一致。   
  

? ?举例说明:如下时间序列A和b数据点覆盖70秒的时间范围,每10秒一个值。假设我们希望缩减到30秒,因为用户正在查看更宽时间跨度范围的图。此外,我们使用和聚合器将这两个序列分组为一个。我们可以指定一个降采样器30 s-sum,它将创建30秒的桶并累计每个桶中的所有数据点。这将为我们提供每个序列的三个数据点:

           时间序列   T0   T0 + 10年代   T0 + 20年代   T0 + 30年代   T0 + 40年代   T0 + 50年代   T0 + 60年代               一个   5   5   10   15   20.   5   1         一笔降采样   5 + 5 + 10=20   ?   ?   15 + 20 + 5=40   ?   ?   1         B   10   5   20.   15   10   0   5         B和降采样   10 + 5 + 20=35   ?   ?   15 + 10 + 0=25   ?   ?   5         和聚合结果   55   ?   ?   65   ?   ?   6            

? ?正如你所看到的,对于每一个时间序列,我们会生成标准化的间隔边界(每30秒),这样我们就必须在时间戳t0, t0 + 30年代和60年代t0 +合并序列的值。每个间隔或存储桶将包含包含存储桶时间戳(start)的数据点,并且不包括以下存储桶的时间戳(结束),即(开始、结束)半开半闭区间。在这种情况下,第一个桶将从t0延伸到t0 + 29.9999年代,使用提供的聚合器,将所有值合并为一个新值,例如,对于序列,我们对t0, t0 + 10并t0 + 20年代的值求和得到新的值20在t0。最后,查询使用总和进行分组,以便我们累加两个合成的时间序列。此时,OpenTSDB总是在降采样执行后再执行分组聚合。

  

<强>注意:
? ?对于早期版本的OpenTSDB,新数据点的实际时间戳将是时间间隔范围中每个数据点的时间戳的平均值从2.1和更高版本开始,每个点的时间戳与基于当前时间的模和降采样间隔的时间桶的开始对齐。

  

? ?降采样时间戳基于原始数据点时间戳的剩余部分(差值)除以下采样间隔(以毫秒为单位,即模数)进行归一化。在Java中代码是:时间戳(时间戳% interval_ms),例如,给定时间戳1388550980000或1/1/2014 04:36:20 UTC, 1小时间隔(相当于3600000毫秒),结果时间戳将舍入为1388548800000。在4至5 UTC之间的所有数据点将在4点桶中收尾。如果以1小时的间隔查询一天的数据降采样,则将会收到24个数据点(假设所有24小时都有数据)。
? ?使用“0——”间隔时,查询的开始时间将成为结果的时间戳。
? ?归一化(标准化)对于常见查询非常有效,例如将一天的数据降采样到1分钟或1小时。但是,如果尝试以奇数间隔(如36分钟)降采样,则由于模数计算的性质,时间戳可能看起来有点奇怪。给定36分钟的时间间隔以及我们上面的示例,时间间隔为2160000毫秒,结果为时间戳1388549520或04:12:00 UTC。所有在04:12与04:48之间的数据点将收尾在一个桶中。

  

日历边界

  

? ?从OpenTSDB 2.3开始,用户可以指定基于日历的降采样而不是快速取模的方法。这对于报告目的更为有用,例如查看与人类可读时间相关的值,例如数月,数周或数天。此外,降采样可以考虑时区,并纳入夏时制时间偏移和时区偏移。
? ?要使用日历边界,请查看正在查询的接口文档,例如,V2版本的URI接口具有指定要使用的特定时区的参数,例如,时区=亚洲/喀布尔,基于日历的降采样可通过将附加c到间隔时间单位中来启用如,m=总和:1 dc-sum: my.metric。对于JSON查询,在顶层使用单独的字段时区以及useCalendar布尔标识。如果未提供时区,则日历将使用UTC时间。

OpentTsdb官方文档中文版——降采样