ОК, у вас есть пара проблем.
Во-первых, ваш RRD неправильно настроен.Вы определили 5 идентичных RRA - это не имеет смысла.Один RRA будет хранить значения в указанном разрешении для всех определенных DS.Тем не менее, вы можете захотеть иметь больше при более высокой степени детализации (чтобы ускорить графики месяца или года).Возможно, вы также захотите иметь RRA типа MIN или MAX, чтобы ваши значения MIN и MAX были более точными.
Например, этот набор определяет как MAX, так и MIN RRA, а также среднее значение, и также будет иметь4 свертки, которые примерно соответствуют дневным, недельным, месячным и годовым графикам.
RRA:AVERAGE:0.5:1:20000 \
RRA:AVERAGE:0.5:6:2000 \
RRA:AVERAGE:0.5:24:2000 \
RRA:AVERAGE:0.5:288:2000 \
RRA:MAX:0.5:1:20000 \
RRA:MAX:0.5:6:2000 \
RRA:MAX:0.5:24:2000 \
RRA:MAX:0.5:288:2000 \
RRA:MIN:0.5:1:20000 \
RRA:MIN:0.5:6:2000 \
RRA:MIN:0.5:24:2000 \
RRA:MIN:0.5:288:2000
Во-вторых, когда вы хотите напечатать одну цифру в строке GPRINT, вам нужно использовать VDEF для преобразования вашего временного рядаданные (из DEF или CDEF) в одно значение, используя некоторые функции консолидации.
Например, этот набор команд будет использовать DEF типа MAX и MIN, определенные ранее, а затем вычислять итоги по ним, используя VDEF,Конечно, вы можете просто использовать CPUTOTAL вместо определения CPUTOTALMAX и CPUTOTALMIN (сохраняя себе дополнительные RRA), но при переходе к использованию RRA с более низкой гранулярностью точность будет падать.Если у вас нет RRA с более низкой гранулярностью, вы будете точны, но будете использовать много дополнительного ЦП во время графика, и создание графика будет медленнее.Использование RRA с различным разрешением ускоряет создание графика.
DEF:CPUTOTAL=CPU.rrd:CPU_ALL:AVERAGE \
DEF:CPUTOTALMAX=CPU.rrd:CPU_ALL:MAX \
DEF:CPUTOTALMIN=CPU.rrd:CPU_ALL:MIN \
VDEF:overallmax=CPUTOTALMAX,MAXIMUM \
VDEF:overallmin=CPUTOTALMIN,MINIMUM \
VDEF:overallavg=CPUTOTAL,AVG \
VDEF:overalllst=CPUTOTAL,LAST \
AREA:CPUTOTAL#FF0000:"CPU Used" \
LINE2:CPUTOTAL#FF0000 \
GPRINT:overallmax:"MAX\:%6.2lf %s" \
GPRINT:overallmin:"MIN\:%6.2lf %s" \
GPRINT:overallavg:"MOY\:%6.2lf %s" \
GPRINT:overalllst:"LAST\:%6.2lf %s" \
GPRINT:overallmax:"Max was at %c":strftime
В последней строке будет напечатано время максимумов, а не значение .Когда VDEF вычисляет MAX или MIN, он фактически возвращает два компонента - значение и момент времени.Обычно вы используете это значение, но, добавив :strftime
к GPRINT
directrive, вы можете использовать вместо него компонент времени.
Я предлагаю вам потратить немного больше времени на изучение учебников и примеров на Веб-сайт RRDTool , который должен помочь вам лучше понять, как работает RRDTool.