我创建了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)将丢失它到达的事实。
有人可以告诉我为什么会这样吗?
谢谢
答案 0 :(得分:1)
您好我面对与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 VALUE1:27 日期:未知 日期:2014-10-12 VALUE1:89
请求的输出是带有三列的条形图,其中第三列缺失。
与Neven一样,我玩过1x,1.5x,2x的STEP但没有成功的HB - 下一个值(在未知之后)受到影响。通常所有边缘情况(开始,结束)都有一种感情。在上面的例子中,我想念周一和周五的价值观。这对于频繁的数据源来说不是问题,但是像“barchart”这样的简单案例每天都很痛苦。
Neven:我的回答是,我们可能使用了错误的用例。由于RRDtool每个时间间隔存储“费率”,它总是会进行“整合”。一个不可能的部分解决方案是频繁更新并在RRD上聚合,例如增加STEP = NNN规范。在图表定义中。
答案 1 :(得分:0)
问题是如果错过了先前的更新,则最后一次更新和当前更新之间的间隔大于您在DS
定义中指定的4800秒。因此,rrdtool会将最后一次更新和当前更新之间的所有数据视为 UNKNOWN 。
在rrdtool 1.4.8中,我介绍了GAUGE
DS
次更新的特殊情况,其中之前的更新过去超过MRHB
。在这种情况下,rrdtool现在会将提供的数据从now-MRHB
视为有效now
。