在rrdtool xport中的Maxrows

时间:2016-01-15 12:48:40

标签: xml export rows rrdtool

我想用去年的所有数据导出我的rrd,间隔10分钟。我的rrd文件每1分钟更新一次数据。这是我的xport代码:

rrdtool xport --start now-1y --end now --step 600 --maxrows 219000 \
       DEF:AverageIn="values.rrd":in:AVERAGE \
       DEF:AverageOut="values.rrd":out:AVERAGE \
       XPORT:AverageIn:'RX verdi' \
       XPORT:AverageOut:'TX verdi' > exported.xml";

阅读文档后我需要设置--maxrows来实现这一点,因为默认的maxrow是300(5分钟)。 我对maxrow的计算: 600秒(10分钟)* 365天(我想要的最后1年)= 219000

但这是我得到的xml:

<xport>
  <meta>
    <start>1421331840</start>
    <step>17280</step>
    <end>1452850560</end>
    <rows>1825</rows>
    <columns>2</columns>
    <legend>
      <entry>RX verdi</entry>
      <entry>TX verdi</entry>
    </legend>
  </meta>
  <data>
    <row><t>1421331840</t><v>NaN</v><v>NaN</v></row>
    <row><t>1421349120</t><v>NaN</v><v>NaN</v></row>

我的rrdtool创建代码:

rrdtool create $rrdsignal --step 60 --start now \
            DS:in:GAUGE:600:U:U \
            DS:out:GAUGE:600:U:U \
            RRA:AVERAGE:0.5:1:2880 \
            RRA:AVERAGE:0.5:1:2880 \
            RRA:AVERAGE:0.5:6:700 \
            RRA:AVERAGE:0.5:6:700 \
            RRA:AVERAGE:0.5:24:775 \
            RRA:AVERAGE:0.5:144:1500 \
            RRA:AVERAGE:0.5:288:2000 \
            RRA:MIN:0.5:1:600 \
            RRA:MIN:0.5:6:700 \
            RRA:MIN:0.5:24:775 \
            RRA:MIN:0.5:144:1500 \
            RRA:MIN:0.5:288:2000 \
            RRA:MAX:0.5:6:700 \
            RRA:MAX:0.5:24:775 \
            RRA:MAX:0.5:144:1500 \
            RRA:MAX:0.5:288:2000"

如何在此示例中减少步骤并增加行数?如果不清楚,请评论。

编辑:添加了rrd创建代码

1 个答案:

答案 0 :(得分:1)

你不能这样做,原因是因为你不再拥有这些数据了。这样做的原因是您定义了您的RRA。

我的第一个问题是为什么你定义了两对相同的RRA:

        RRA:AVERAGE:0.5:1:2880 \
        RRA:AVERAGE:0.5:1:2880 \
        RRA:AVERAGE:0.5:6:700 \
        RRA:AVERAGE:0.5:6:700 \

没有必要两次存储相同的东西。

下一部分是因为您似乎不了解RRDTool数据库的工作原理。

在RRDTool中存储值时,将其标准化为RRD的步骤(在这种情况下,步骤为1分钟)。现在,它使用指定的consolodation函数存储到所有定义的RRA中,并将其与指定数量的其他样本组合以生成RRA。

因此,在您的情况下,您有一个存储该值的RRA(样本数为1,因此RRA间隔为1分钟),另一个将其与另外5个相结合(样本数为6且因此,RRA间隔为6分钟,另一个为24分钟,另外为144分钟,依此类推。我强烈怀疑你错误地定义了这些RRA,你或者要么是10分钟的步骤,要么需要合并的样本数量要大10倍!

当您要求提供一年的10分钟间隔数据时,RRDtool会查看可用的RRA,并发现只有一个足以提供一年数据的数据是最后一个 - 288最小RRA间隔,2000行(IE 400天)。因此它使用这一个。您可以强制它输出您想要的步骤,但是它会从这个RRA接近它,因为没有10分钟的RRA可用,并且没有其他RRA足够长的时间来覆盖整年。

即使您使用10分钟步骤,您的前10分钟RRA也只有10分钟x 2880 = 20天的长度。

我建议你做以下事情:

  • 更改您的创建以删除两个重复的RRA
  • 将您的步骤更改为10分钟(600)或者将您的RRA间隔增加10倍(变为10,60,240等)。您选择执行哪些操作取决于数据到达的频率 - 主要时间间隔(当前为60秒)应与数据频率相对应。
  • 将10分钟RRA的长度增加到一整年。这将使其长度至少为52704,而不是当前的2880.您可能还希望扩展一些其他RRA,具体取决于您需要的图形和提取。

HTH