Агрегирование более двух 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,+,+

Это сработало для меня.

Другие вопросы по тегам