如何解释rrdtool输出

时间:2014-12-23 08:11:26

标签: rrdtool

首先。我创建了一个rrd数据库

$ rrdtool create test.rrd --start 1200000000 --step 300 DS:test_1:GAUGE:600:0:100 RRA:AVERAGE:0.5:1:12

二。做一些更新

$ rrdtool update test.rrd 1200000100:1
$ rrdtool update test.rrd 1200000400:3
$ rrdtool update test.rrd 1200000700:4
$ rrdtool update test.rrd 1200001000:5

第三。从test.rrd获取数据

$ rrdtool fetch test.rrd -r 300 -s 1200000000 -e 1200001000 AVERAGE

为什么1200000300是2.333?

1 个答案:

答案 0 :(得分:2)

这是由数据规范化引起的。 RRDTool将自动调整数据,使其完全适合定义的Interval的时间边界。

尽管您的数据间隔时间间隔为300秒,但与您定义的间隔(步骤)相同,不幸的是它们不在实际边界上。

边界是time modulo step等于零的边界。在您的情况下,那将是1200000000而不是1200000100。因此,需要调整样本(其中三分之一分配给较早的区间,三分之二分配给较晚的区间)。这是更复杂的,因为您在Gauge模式下操作而RRDTool工作插值假定速率的线性变化率。

如果您在时间12000003001200000000开始采样,那么您会看到它们完全按照给定的方式存储,因为标准化步骤将变为空操作。由于您提供了1200000100和1200000400的Gauge样本,1200000300的存储值将是连接两个样本的线的三分之二:1 + ( 3 - 1 ) x 0.666 = 2.333这就是您所获得的。

Alex van den Bogeardt here的教程将向您解释一切。