【问题标题】:rrdtool update multiple datasources in two commandsrrdtool 在两个命令中更新多个数据源
【发布时间】:2016-07-14 14:17:53
【问题描述】:

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

第一个数据源 c1 按预期工作,但第二个 c2 显示的值低于 1,我预计该值也接近 15。

是的,我知道我也可以在一个更新命令中更新两个数据源,但在我的情况下,一个 rrd 文件中有很多数据源,并且更好地读取和跟踪大量值。

使用的 rrd 版本:1.6.0

【问题讨论】:

    标签: rrdtool


    【解决方案1】:

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

    如果您改为使用: 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”,四舍五入到最接近的分钟)

    【讨论】:

      猜你喜欢
      • 2020-01-15
      • 1970-01-01
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 2014-02-04
      相关资源
      最近更新 更多