我已经创建了RRD DB,它应该每小时接收更新,并显示最近24小时收到的订单值:
rrdtool create db.rrd --step 3600 --start 1381230000 DS:measurment:GAUGE:4800:0:U RRA:AVERAGE:0.5:1:24
一切工作正常,除了事实,当我错过一个值更新其中两个从数据库中丢失:
比如说我有:
....
1381240800:1203
1381244400:1302
1381248000:1132
1381251600:988
....
但是如果第二个更新没有收到(1381244400:1302),那么第三个(1381248000:1132)将会丢失,尽管它已经到达了。
谁能告诉我为什么会这样?嗨,我在使用rrdtool-1.4.7时遇到了同样的问题。
我对Tobi Oetiker的问题:1、以下用例是否可以使用rrdtool或错误的概念。2、rrdtool 1.4.8中的行为改变了什么用例:数据集像上面的例子一样,我想渲染一个"条形图"。在每个"步骤"上,我通常提供一个PDP(更新)。我还定义了一个MAX合并函数,其中xff为0或0.1,并使用AREA保持所有步骤以1:1呈现图形。
对于步长为1天的RRD:日期:2014-10-10 value1: 35日期:2014-10-11 value: 27日期:未知日期:2014-10-12 VALUE1: 89
请求的输出是一个有三列的条形图,其中缺少第三列。
与Neven类似,我玩过HB的1x, 1,5x, 2x的STEP,但没有成功-下一个值(在未知之后)受到影响。通常所有的边缘情况(开始,结束)都有某种情感。在上面的例子中,我错过了星期一和星期五的值。对于频繁的数据源来说,这不是问题,但是像"条形图"这样的简单情况每天都很麻烦。
Neven:我的答案是,我们可能使用了错误的用例。由于RRDtool按时间间隔存储"费率",它总是会进行某种"合并"。一个不总是可行的部分解决方案是频繁更新并在RRD上聚合,例如在图定义中增加STEP=NNN规范。问题是,如果错过了以前的更新,那么最后一次更新和当前更新之间的间隔大于您在DS
定义中指定的4800秒。因此rrdtool将把上次和当前更新之间的所有数据处理为UNKNOWN。
在rrdtool 1.4.8中,我介绍了GAUGE
DS
更新的特殊情况,其中以前的更新多于过去的MRHB
。在这种情况下,rrdtool现在将把从now-MRHB
到now
提供的数据视为有效。