第一。我创建了一个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?
发布于 2014-12-25 21:57:29
这是由数据标准化造成的。RRDTool将自动调整数据以精确地适应所定义的间隔的时间边界。
尽管您的数据间隔为300 s,与定义的间隔(步骤)相同,但不幸的是它们并不在实际的边界上。
边界是当time modulo step等于零时。在您的情况下,这将是在时间1200000000而不是在1200000100。因此,需要对样本进行调整(其中三分之一分配给先前的间隔,三分之二分配给后者)。这进一步复杂,因为您是在规范模式下操作,而RRDTool工作在假定速率的线性变化率的情况下。
如果您在time 1200000300或1200000000上启动了您的样本,那么您将看到它们按照给定的方式存储,因为正常化步骤将成为一个空操作。由于您在1200000100和1200000400提供了一个量规样本,1200000300的存储值将是连接两个示例:1 + ( 3 - 1 ) x 0.666 = 2.333的三分之二,这就是您要得到的。
由Alex 这里编写的教程将向您解释这一切。
https://stackoverflow.com/questions/27616429
复制相似问题