RRDTOOL 一秒记录,值缺失
RRDTOOL one second logging, values missing
我花了两个多月的时间使用 RRDTOOL 来了解如何在图形上存储和可视化数据。我现在非常接近我的目标,但出于某种原因,我不明白为什么在我的情况下某些数据被认为是 NaN。
我以 GB 大小的日志文件计算行数,并将结果提供给 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
上面给出了上面输入的空图。
如果我延长心跳,它会用相同的数据填补时间空白。我尝试插入零值,但这会计算计数的平均值并以密耳为单位得出结果。
也许我对 RRDTool 的看法有误。
如果有人能解释我做错了什么就太好了。
谢谢。
听起来好像您的数据(在不规则的时间基于事件)不适合 RRD 结构。 RRD 更喜欢以恒定、规则的时间间隔获取其数据,并将强制传入数据以满足其要求。
您的 RRD 定义为具有 60 秒步长和 120 秒心跳。这意味着它期望每 60 秒一个样本,并且间隔不超过 120 秒。
您的 DS 是一个仪表,因此您输入的值(在您的示例中均为“1”)将是存储的值,经过任何时间标准化后。
如果你增加心跳,那么这个时间内收到的一个值将被用来做一个线性近似来填充自上次以来的所有样本。这就是为什么这样做会用相同的数据填补空白。
由于您的步长为 60 秒,因此最小采样时间 sidth 将为 1 分钟。
由于您始终存储“1”,因此您的图形将显示“1”(当样本在心跳 window 中收到时)或未知(当心跳过期时)。
换句话说,您的图表显示的正是您提供的内容。您的数据以 1 分钟的步长被强制转换为一组常规数值,每个数值为 1 或未知。
我花了两个多月的时间使用 RRDTOOL 来了解如何在图形上存储和可视化数据。我现在非常接近我的目标,但出于某种原因,我不明白为什么在我的情况下某些数据被认为是 NaN。
我以 GB 大小的日志文件计算行数,并将结果提供给 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
上面给出了上面输入的空图。 如果我延长心跳,它会用相同的数据填补时间空白。我尝试插入零值,但这会计算计数的平均值并以密耳为单位得出结果。
也许我对 RRDTool 的看法有误。 如果有人能解释我做错了什么就太好了。
谢谢。
听起来好像您的数据(在不规则的时间基于事件)不适合 RRD 结构。 RRD 更喜欢以恒定、规则的时间间隔获取其数据,并将强制传入数据以满足其要求。
您的 RRD 定义为具有 60 秒步长和 120 秒心跳。这意味着它期望每 60 秒一个样本,并且间隔不超过 120 秒。
您的 DS 是一个仪表,因此您输入的值(在您的示例中均为“1”)将是存储的值,经过任何时间标准化后。
如果你增加心跳,那么这个时间内收到的一个值将被用来做一个线性近似来填充自上次以来的所有样本。这就是为什么这样做会用相同的数据填补空白。
由于您的步长为 60 秒,因此最小采样时间 sidth 将为 1 分钟。
由于您始终存储“1”,因此您的图形将显示“1”(当样本在心跳 window 中收到时)或未知(当心跳过期时)。
换句话说,您的图表显示的正是您提供的内容。您的数据以 1 分钟的步长被强制转换为一组常规数值,每个数值为 1 或未知。