rrdtool 在两个命令中更新多个数据源



RRD 未正确更新第二个数据源,请参阅:

首先,我使用两个数据源(c1 和 c2)创建 RRD 文件:

rdtool create test.rrd  --start N  --step 60 DS:c1:GAUGE:120:0:100 DS:c2:GAUGE:120:0:100 RRA:AVERAGE:0.5:1:1440

然后,我确实在两个命令中更新了两个数据源:

rrdtool update test.rrd -t c1 N:10 && rrdtool update test.rrd -t c2 N:10

等待 60 秒。再次更新:

rdtool update test.rrd -t c1 N:20 && rrdtool update test.rrd -t c2 N:20

然后让我们看看我们有什么:

rrdtool fetch test.rrd AVERAGE | tail -5
1468409580: -nan -nan
1468409640: -nan -nan
1468409700: -nan -nan
1468409760: 1,5988575517e+01 1,9266620475e-01
1468409820: -nan -nan

第一个 datacurce c1 按预期工作,但第二个 c2 显示的值低于 1,我期望值也接近 15。

是的,我知道我也可以在一个更新命令中更新两个数据源,但就我而言,一个 rrd 文件中有很多数据源,最好读取和遵循大量值。

使用的 rrd 版本 : 1.6.0

这当然是数据规范化。 这也是由于您在两个单独的调用中更新两个数据源引起的。

如果您改为使用: rrdtool update test.rrd -t c1:c2 N:10:10 rrdtool update test.rrd -t c1:c2 N:20:20 然后,您将同时更新两个 DS。 你看,当你在单独的更新中这样做时,你实际上所做的是用"未知"隐式更新另一个 DS,然后依靠自动插值来填充内容。 RRDTool 不是关系数据库,您无法在不影响其他值的情况下单独更新时间窗口中的值。

另一个问题是数据规范化,其中值在时间上进行调整以适应确切的时间边界,在此过程中,值被调整为线性等效......使用网络流量(大数字)时的实际结果几乎相同,总体总数和平均值是一致的,但较小的时间点值最终会像这样成为小数。

所以,有两件事:

  1. 一起更新您的 DS,而不是单独调用
  2. 尝试在时间边界上准确更新。(不使用"N",请使用精确的时间,四舍五入到最接近的分钟)

相关内容

  • 没有找到相关文章

最新更新