用rrdtool或其他语言计算每5个样本的平均值

我想做出5个样本的平均值,并计算出一个值:

当前输出 – 我把5分钟的分辨率,但收到5个样本:

$ rrdtool fetch file.rrd AVERAGE -r 300 --start 1200000000 --end 1200000300 1200000000: 1.3938888889e+00 1200000060: 4.9572222222e+00 1200000120: 7.1675000000e+00 1200000180: 1.0982500000e+01 1200000240: 7.6136111111e+00 1200000300: 7.2169444444e+00 

预期结果:

 $ rrdtool fetch file.rrd AVERAGE -r 300 --start 1200000000 --end 1200000300 1200000000: 1.3938888889e+00 1200000300: x.xxxxxxxxxxe+00 - average 

我想用rrdtool或perlbash等其他语言来计算它。

fetch命令仅从原始RRA中检索数据; 如果您没有要求粒度的RRA,则会使用最近的可用值,但不会执行额外的计算。

使用1cdp == 5pdp规则创buildRRD文件时,将新的RRA添加到RRD文件。 例如

  rrdtool create file.rrd -s 60 DS:ds0:GAUGE:120:0:100 RRA:AVERAGE:0.5:1:400 RRA:AVERAGE:0.5:5:400 

这个例子设置了400行; 你不妨使用更多。

当你有一个5pdp RRA,那么你可以使用rrdtool fetch -r 300 ,否则如果你只有一个1pdp RRA,你只能使用60(一步)的分辨率。

你也可以看一下rrdtool xport ,它和rrdtool graph一样,允许你定义输出计算值,这些值可以是总结。

  rrdtool xport --step 300 --start 1200000000 --end 1200000300 --maxrows 400 DEF:value=file.rrd:ds0:AVERAGE XPORT:value 

这假设你的DS当然是ds0 ,当你已经拥有所需的RRA的时候,它的效率就不如fetch效率。