如何解释 rrdtool 输出



First.我创建了一个 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?

这是

由数据规范化引起的。 RRDTool 将自动调整数据以完全适合定义的间隔的时间边界。

尽管您的数据以 300 秒的间隔精确间隔,与您定义的间隔(步长(相同,但不幸的是,它们不在实际边界上。

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

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

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

它的根本原因是PDP(主数据点(的计算,你可以参考这个答案,它提供了一个感知解释和示例计算过程。

相关内容

  • 没有找到相关文章

最新更新