OpenTSDB的汇总和预聚合(Rollup And Pre-Aggregates)(一)

写在前面

这是有关于OpenTSDB支持的有关配置,和预先设置聚合,不过这方面的应用还是太少,有待补充。

原地址:http://opentsdb.net/docs/build/html/user_guide/rollups.html


虽然TSDB旨在存储原始的全分辨率数据,只要有空间,对宽时间范围或许多标签组合的查询都会非常痛苦。此类查询可能需要很长时间才能完成,或者在最坏的情况下,会因内存不足而终止TSD。从OpenTSDB 2.4开始,一组新的API允许存储和查询较低分辨率的数据,以便更快地回答这些查询。此页面将概述汇总和预聚合的内容,它们在TSDB中的工作方式以及如何最好地使用它们。请参阅API的部分以了解具体的实现细节。

注意

OpenTSDB本身不会计算和存储汇总或预聚合数据。有多种方法可以计算结果,但根据比例和精度要求,它们都有其优点和缺点。请参阅生成汇总和预聚合部分,了解如何创建此数据。

示例数据

为了帮助描述较低分辨率的数据,让我们看一些完整的分辨率(也称为原始数据)示例数据。第一个表定义了带有快捷标识符的时间序列

Series IDMetricTag 1Tag 2Tag 3
ts1system.if.bytes.outhost=web01colo=lgainterface=eth0
ts2system.if.bytes.outhost=web02colo=lgainterface=eth0
ts3system.if.bytes.outhost=web03colo=sjcinterface=eth0
ts4system.if.bytes.outhost=web04colo=sjcinterface=eth0

请注意,它们都具有相同metricinterface标记,但不同hostcolo标签。

接下来是以15分钟为间隔写入的一些数据:

Series ID12:0012:1512:3012:4513:0013:1513:3013:45
ts114-382-452
ts2728-94 11
ts393-2-16382
ts4 25285-47

汇总

在OpenTSDB中,“汇总”被定义为随时间聚合的单个时间序列。它也可以称为“基于时间的聚合”。汇总有助于解决查看广泛时间跨度的问题。例如,如果您每60秒写一个数据点并查询一年的数据,则时间序列将返回超过525k个别数据点。绘制许多点可能会非常混乱。相反,您可能希望查看较低分辨率的数据,例如1小时数据,其中您只有大约8k的值要绘制。然后,您可以识别异常并向下钻取更精细的分辨率数据。

如果您已经使用OpenTSDB来查询数据,那么您可能熟悉将每个时间序列聚合为较小或较低分辨率值的下采样器。汇总实质上是存储在系统中的下采样器的结果,并且随意调用。每个汇总(或下采样器)都需要两条信息:

  • 间隔 - “滚动”到新值的时间。例如,1h一小时的数据或1d一天的数据。

  • 聚合函数 - 对基础值执行了哪些算术以获得新值。例如sum,添加所有值或max存储最大值。

警告

存储汇总时,最好避免使用平均值中值偏差等函数。在执行进一步的下采样或分组聚合时,这些值变得毫无意义。相反,总是存储总和计数要好得多,至少可以在查询时计算平均值。有关更多信息,请参阅以下部分。

汇总数据点的时间戳应捕捉到汇总间隔的顶部。例如,如果汇总间隔是,1h则它包含1小时的数据,并且应该捕捉到小时的顶部。(因为所有时间戳都是以Unix Epoch格式编写的,定义为UTC时区,这将是一小时UTC时间的开始)。

汇总示例

鉴于上面的系列,让我们存储sumcount间隔1h

Series ID12:0013:00
ts1 SUM105
ts1 COUNT44
ts2 SUM86
ts2 COUNT43
ts3 SUM919
ts3 COUNT44
ts4 SUM916
ts4 COUNT34

请注意,无论何时出现“bucket”区间中的第一个数据点,所有时间戳都会与小时的顶部对齐。另请注意,如果间隔中不存在数据点,则计数较低。

在一般情况下,你的目标应该是计算和存储MAXMINSUM并且COUNT每个时间序列存储汇总时。

平均汇总示例

启用汇总并使用avgOpenTSDB中的函数请求下采样器时,TSD将扫描存储器SUMCOUNT值。然后在迭代数据时,它将准确计算平均值。

count和sum值的时间戳必须匹配。但是,如果缺少总和的预期计数值,则总和将从结果中踢出。从上面的示例中取出以下示例,我们现在错过了一个计数数据点ts2

Series ID12:0013:00
ts1 SUM105
ts1 COUNT44
ts2 SUM86
ts2 COUNT4 

所得到的avg一个2h采样查询应该是这样的:

Series ID12:00
ts1 AVG1.875
ts2 AVG2

 

OpenTSDB系列

总结目录https://blog.csdn.net/jyj1100/article/details/83450282

OpenTSDB旨在在查询执行期间有效地组合多个不同的时间序列。这样做的原因是,当用户查看他们的数据时,他们通常会从较高的级别开始询问诸如“数据中心的总吞吐量是多少?”之类的问题。或“按地区划分的当前用功耗是多少?”。在查看这些高级别值之后,可能会出现一个或多个值,因此用户可以深入研究更详细的数据集,例如“我的LAX数据中心主机的吞吐量是多少?”。我们希望能够轻松回答这些高级问题,但仍然可以深入了解更多细节。 但是,如何将多个单独的时间序列合并为一个系列的数据呢?聚合函数提供了将不同时间序列数学方式将不同时间序列合并为一个的方法。过滤器用于按标签对结果进行分组,然后将聚合应用于每个组。聚合类似于SQL的GROUP BY子句,其中用户选择定义的聚合函数以将多个记录合并为单个结果。但是在TSD中,每个时间戳和组聚合一组记录。 每个聚合器都有两个组件: 功能 - 应用的数学计算,例如对所有值求和,计算平均值或选择最高值。 插值 - 一种处理缺失值的方法,例如当时间序列A的值为T1但时间序列B没有值时。 本文档重点介绍如何在一个组中按上下文使用聚合器,即将多个时间序列合并为一个时。此外,聚合器可用于下采样时间序列(即返回较低分辨率的结果集)。有关更多信息,请参阅下采样。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值