【问题标题】:How to explain rrdtool output如何解释 rrdtool 输出
【发布时间】:2014-12-26 05:57:29
【问题描述】:

首先。我创建了一个rrd数据库

$ rrdtool create test.rrd --start 1200000000 --step 300 DS:test_1:GAUGE:600:0:100 RRA:AVERAGE:0.5:1:12

第二。做一些更新

$ rrdtool update test.rrd 1200000100:1
$ rrdtool update test.rrd 1200000400:3
$ rrdtool update test.rrd 1200000700:4
$ rrdtool update test.rrd 1200001000:5

第三。从 test.rrd 中获取数据

$ rrdtool fetch test.rrd -r 300 -s 1200000000 -e 1200001000 AVERAGE

为什么 1200000300 是 2.333?

【问题讨论】:

  • 既然您提到它,您能提供您的输出吗?
  • 它是从输入数据中插值的。

标签: rrdtool


【解决方案1】:

这是由数据标准化引起的。 RRDTool 将自动调整数据以完全符合定义的 Interval 的时间边界。

尽管您的数据以 300 秒的间隔精确间隔,与您定义的间隔(步长)相同,但遗憾的是它们不在实际边界上。

边界是time modulo step 等于零。在您的情况下,那将是在1200000000 而不是1200000100。因此,需要调整样本(其中三分之一分配给较早的间隔,三分之二分配给较晚的间隔)。这更加复杂,因为您在 Gauge 模式下操作,而 RRDTool 会在假设速率的线性变化率的情况下进行插值。

如果您在时间12000003001200000000 开始您的样本,那么您会看到它们完全按照给定的方式存储,因为规范化步骤将变为空操作。由于您在 1200000100 和 1200000400 处提供 Gauge 样本,因此 1200000300 的存储值将是连接两个样本的线的三分之二:1 + ( 3 - 1 ) x 0.666 = 2.333,这就是您得到的。

Alex van den Bogeardt here 的教程将为您解释一切。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 2016-08-18
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多