我想做出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或perl,bash等其他语言来计算它。
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效率。