Я хочу сделать в среднем 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 с запрошенной степенью детализации, будет использоваться ближайший доступный, но никакие дополнительные вычисления производиться не будут.
Добавьте новый RRA в ваш файл RRD при создании файла RRD с правилом 1cdp == 5pdp. НАПРИМЕР
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 строк; вы можете захотеть использовать больше.
Если у вас есть RRA 5pdp, вы можете использовать rrdtool fetch -r 300
, в противном случае, если у вас есть только RRA 1pdp, вы можете использовать только разрешение 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
конечно, и это не так эффективно, как выполнение fetch
когда у вас уже есть необходимое RRA.