我花了两个多月的时间与RRDTOOL一起找出如何在图表上存储和可视化数据。我现在非常接近我的目标,但出于某种原因,我不明白为什么会发生一些数据在我的情况下被认为是NaN。
我计算以千兆字节为单位的日志文件的行,并将结果提供给rrd数据库以可视化事件发生。数据库的步进为60秒,数据在可用时以秒为单位插入,因此无法保证下一个时间戳将伴随心跳或步进。有时几分钟没有数据。
如果有这么大的距离,我的数据大多被认为是NaN。
b1_5D.rrd 1420068436:1 1420069461:1 1420073558:1 1420074583:1 1420076632:1 1420077656:1 1420079707:1 1420080732:1 1420082782:1 1420083807:1 1420086881:1 1420087907:1 1420089959:1 1420090983:1 1420094055:1 1420095080:1 1420097132:1 1420098158:1 1420103284:1 1420104308:1 1420107380:1 1420108403:1 1420117622:1 1420118646:1 1420121717:1 1420122743:1 1420124792:1 1420125815:1 1420131960:1 1420134007:1 1420147326:1 1420148352:1
rrdtool create b1_4A.rrd --start 1420066799 --step 60 DS:Value:GAUGE:120:0:U RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:10:1008 RRA:AVERAGE:0.5 :30:1440 RRA:AVERAGE:0.5:360:1460
上面给出了上面输入的空图。 如果我延长心跳,那么它将填补相同数据的时间间隔。我试图插入零值,但这将平均计数并以mils结果。
也许我对RRDTool采取了一些错误。 如果有人可以解释我做错了什么,那就太好了。
谢谢。
答案 0 :(得分:1)
听起来好像你的数据 - 在不规则的时间基于事件 - 不适合RRD结构。 RRD倾向于以固定的,定期的间隔获取数据,并强制输入数据以满足其要求。
您的RRD被定义为具有60秒步长和120秒心跳。这意味着它需要每60秒一个样本,并且不会超过120秒。
您的DS是衡量标准,因此您输入的值(在您的示例中所有值均为1)将是在任何时间标准化后存储的值。
如果增加心跳,则在此时间内收到的值将用于进行线性近似以填充自上一个样本以来的所有样本。这就是为什么这样做会填补相同数据的空白。
由于您的步数为60秒,因此最小采样时间宽度为1分钟。
由于您始终存储'1',因此您的图形将显示为'1'(在心跳窗口中接收样本时)或未知(当心跳过期时)。
换句话说,您的图表正好显示了您给出的内容。您的数据在1分钟步骤中被强制转换为一组常规数值,每个数值为1或未知。