我想使用rrdtool作为一个ringbuffer,只要新值到达且RRA已满,就会忘记最旧的值。 这甚至可能吗?
示例:
rrdtool create database.rrd --step 1 DS:data1:GAUGE:5:U:U RRA:<CF>:0.5:1:1200
20分钟后,最旧的值被替换。
谢谢你和问候,
彼得
答案 0 :(得分:1)
您可以使用AVG类型的1步RRA渲染consolodation函数null,如您的示例所示。
然而,你不能这样做只会使时间序列和数据规范化无效。
您的数据需要准确到达步骤边界,否则它们将被调整为适合一个,从而改变它们的值。您的示例使用1s步骤,这使得更简单;但它会带来下一个问题...
RRDTool将始终在每个组合步骤中在RRA中存储一个值。如果没有可用数据,那么您将获得未知数,或者将根据以前的数据推断出一个值。在您的设置中,您有一个XFF = 0.5,这意味着当没有数据存储时您将获得未知。
所以,有可能,但RRA总是有1200个值。如果样本在特定秒钟内未到达,则将存储未知样本。无论在该时间窗口内收集了多少新样品,样品将在20分钟后立即掉落;当您查询RRA时,您会得到“未知”的信息。如果在那一秒内没有收集任何东西。
此行为是否符合您的用例要求取决于您。