Я написал свой собственный Perl-скрипт для возврата статуса с моего сервера. Он работает нормально (т.е. данные о производительности: val1 = 1; val2 = 5; val3 = 10).
Используя templates.dist / default.php, я получаю 3 графика (как я и ожидал).
Теперь эта проблема у меня заключается в том, что я хочу создать еще один график, в котором есть все 3 значения.
Я возился с файлом шаблона, но результаты, которые я получаю, кажутся очень случайный и запутанный.
<?php
for($i=1; $i < count($DS); $i++) {
$opt[$i] = '--title "My Graph '.$i.'"';
$def[$i] = 'DEF:var1='.$rrdfile.':'.$DS[$i].':AVERAGE LINE1:var1#000000';
}
$opt[4] = '--title "My Graph 4"';
$def[4] =
'DEF:var1='.$rddfile.':'.$DS[1].':AVERAGE '.
'DEF:var2='.$rddfile.':'.$DS[2].':AVERAGE '.
'DEF:var3='.$rddfile.':'.$DS[3].':AVERAGE '.
'LINE1:var1#FF0000:"Var 1" '.
'LINE1:var2#FF0000:"Var 2" '.
'LINE1:var3#FF0000:"Var 3"';
?>
С закомментированным четвертым графиком обычно рисуются только первые два (а не три) графика (третьего графика там просто нет). Я говорю обычно, потому что, создавая этот пост, я снова проверил его, и на этот раз он заключался в создании 5 графиков, где первые 3 были такими, как ожидалось, а последние два имели значок сломанного изображения.
Когда я добавляю 4-й график, он рисует 3 графика. Если я добавлю $def[5] = "hmmm";
затем отображается 4-й график, но со значком разорванного изображения.
Я изменил заголовки, чтобы убедиться, что это действительно этот файл, а не что-то кешированное, но они меняются так, как я их ожидал.
Кто-нибудь может пролить свет на то, что здесь происходит?
Используя только четвертый комбинированный график в качестве $def[1]
работает.
Попытка отладить, почему он не отображается, поскольку четвертый график привел меня к nagiosxi/html/includes/components/perfdata/graphApi.php
. Похоже, он пытается найти четвертый источник данных из XML-файла perfdata, расположенного рядом с файлом rrd. Это, конечно, только 3 набора данных, поскольку я работаю только с 3 наборами данных. Мне нужны все четыре графика.
Как мне добавить больше графиков для данной услуги, чем количество наборов данных?
Этот материал определенно сбивает с толку, когда вы впервые начинаете заглядывать под капот. Вы действительно выяснили многие ключевые элементы, давайте посмотрим, смогу ли я помочь вам понять, как они сочетаются друг с другом.
Вот что я узнал в ходе собственных экспериментов:
1) PNP4Nagios
Смотрите их основной сайт: http://docs.pnp4nagios.org/pnp-0.4/start
Чтобы убедиться, что вы используете PNP4Nagios, посмотрите:
$ more /usr/local/nagios/etc/pnp/pnp4nagios_release
PKG_REL_DATE="05-02-2009"
PKG_VERSION="0.4.14"
PKG_NAME="pnp"
Конфигурация PNP выполняется в /usr/local/nagios/etc/nagios.cfg
Вот хороший обзор, который я недавно нашел, он включает описание различных настроек, связанных с PNP, в nagios.cfg:
http://bitflip.net/files/pnp4nagios-presentation-20090409.pdf
2) Источники данных и шаблоны графиков RRD
Видеть: http://docs.pnp4nagios.org/pnp-0.4/tpl
Скрипты шаблона php находятся в / usr / local / nagios / share / pnp /.
Шаблон php-графика вызывается в контексте файла данных RRD, связанного с командой хоста или службы, данные которой вы пытаетесь отобразить. Если для команды нет шаблона, используется default.php.
Как вы обнаружили, вы не можете просто добавить четвертый график, потому что нет соответствующего источника данных:
отображается 4-й график, но со значком разорванного изображения.
И, как вы также обнаружили, вы можете настроить график, который отображается для определенного источника данных:
Использование только четвертого комбинированного графа в качестве $ def [1] работает.
3) default.php
Помните, что default.php используется всякий раз, когда команда хоста или службы не имеет связанного шаблона графика. Это означает, что любое внесенное вами изменение повлияет на график по умолчанию для всей вашей системы. Если ты этого хочешь, хорошо. В противном случае просто добавьте проверку для хоста и / или службы, график которых вы пытаетесь настроить:
if ($hostname == 'MyHost') {
// generate a customized graph
}
else {
// generate the default graph
}
4) Наконец, как создать комбинированный график И отобразить исходные три источника данных.
Я бы просто попросил ваш Perl-скрипт сгенерировать четвертый источник данных и заполнить его нулями:
val1=1;; val2=5;; val3=10;; val4=0;;
Затем в default.php вы можете создать собственный график для этого источника данных:
foreach ($DS as $i) {
if ($servicedesc == 'My_Test_Service') {
if ($i == 4) { # the "val4" placeholder datasource
// your combined graph logic goes here
}
else {
// datasource 1 to 3 graph logic goes here
}
}
}
Это только начало охвата этой темы, надеюсь, поможет!