Агрегирование более двух RRD в RRDGraph возвращает пустой граф
Я использую rrd graph
вручную создать график агрегированных данных на основе RRD, которые были собраны с помощью PNP4Nagios. Моя проблема в том, что когда я пытаюсь объединить более двух источников, я получаю пустой график.
Я считаю, что у меня есть правильный формат CDEF для генерации агрегированных источников данных на основе следующего: http://oss.oetiker.ch/rrdtool/tut/cdeftutorial.en.html (см. "Преобразование ваших пожеланий в RPN").
Основываясь на этой статье, я использую:
CDEF:rx=rx1,rx2,+,rx3,+,rx4,+,...,rx10,+,rx11,+
Это работает, только если я агрегирую первые два источника данных в операторе, и каждый раз, когда я делаю 3 или больше, я получаю пустой график.
Я не могу понять, почему это? Единственная разница между рабочим графом и нерабочим - это оператор CDEF.
Работает: CDEF:rx=rx1,rx2,+
Не работает: CDEF:rx=rx1,rx2,+,rx3,+
Вот полный рабочий оператор графа RRD с агрегированными только 2 источниками:
rrdtool graph bw_graph.png -a PNG --start=1389348873 --end=1392096786 --step 30 -w 597 -h 188 -v "Interface Traffic (bps)" \
'DEF:rx1=/path/to/data/cust1/eth0.rrd:1:AVERAGE' \
'DEF:tx1=/path/to/data/cust1/eth0.rrd:2:AVERAGE' \
'DEF:rx2=/path/to/data/cust2/eth0.rrd:1:AVERAGE' \
'DEF:tx2=/path/to/data/cust2/eth0.rrd:2:AVERAGE' \
'DEF:rx3=/path/to/data/cust3/eth0.rrd:1:AVERAGE' \
'DEF:tx3=/path/to/data/cust3/eth0.rrd:2:AVERAGE' \
'DEF:rx4=/path/to/data/cust4/eth0.rrd:1:AVERAGE' \
'DEF:tx4=/path/to/data/cust4/eth0.rrd:2:AVERAGE' \
'CDEF:rx=rx1,rx2,+' \
'CDEF:tx=tx1,tx2,+' \
'AREA:rx#0F5BFF:RX' \
'AREA:tx#FF9933:TX' \
GPRINT:rx:MAX:"RX Max %6.2lf %s" \
GPRINT:rx:MIN:"RX Min %6.2lf %s" \
GPRINT:rx:AVERAGE:"RX Avg %6.2lf %s" \
GPRINT:rx:LAST:"RX Curr %6.2lf %s\n" \
-t bw_graph
2 ответа
Я обнаружил, что проблема в этом случае не в том, что я добавлял более двух источников данных - это было прекрасно. Проблема заключалась в том, что один из источников данных, которые я добавлял, просто имел неопределенные данные, и это, в свою очередь, приводило к обнулению всего графика.
Я нашел это экспериментально - я попытался добавить rx3,rx4,+
и обнаружил, что график все еще сломан, только с этими двумя парами. Казалось, rx3 был причиной моих проблем.
Идя дальше, чтобы подтвердить мою проблему, я решил собрать 4,5,6: rx4,rx5,+,rx6,+
работал нормально, и сгенерировал график.
После некоторых поисков я нашел статью, в которой упоминалась эта проблема: http://rrd-mailinglists.937164.n2.nabble.com/adding-DS-values-from-multiple-rrd-files-tp5368188p5512061.html
Затем, с некоторой дополнительной помощью из этого документа, о том, как использовать UN
заменить неизвестные данные на 0: http://oss.oetiker.ch/rrdtool/tut/cdeftutorial.en.html
В основном, в моих заявлениях CDEF, rx1
станет rx1,UN,0,rx1,IF
, А также rx2
становится rx2,UN,0,rx2,IF
так далее...
Окончательный CDEF может выглядеть примерно так:
CDEF:rx=rx1,UN,0,rx1,IF,rx2,UN,0,rx2,IF,+,rx3,UN,0,rx3,IF,+
Попробуйте следующее:CDEF:rx=rx1,rx2,rx3,+,+
Это сработало для меня.