Графики производительности Nagios

Я написал свой собственный 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"; затем отображается четвертый график, но со значком разбитой картинки.

Я изменил заголовки, чтобы убедиться, что это действительно этот файл, а не что-то кэшированное, но они меняются так, как я ожидал их.

Кто-нибудь может пролить свет на то, что здесь происходит?

Используя только четвертый объединенный граф в качестве $def[1] работает.

Попытка отладить, почему он не отображается, поскольку четвертый график привел меня к nagiosxi/html/includes/components/perfdata/graphApi.php, Похоже, он пытается найти четвертый источник данных в файле perfdata xml, расположенном рядом с rrd-файлом. Это, конечно, имеет только 3 набора данных, так как я работаю только с 3 наборами данных. Мне нужны все четыре графика.

Как добавить больше графиков для данного сервиса, чем количество наборов данных?

1 ответ

Этот материал определенно сбивает с толку, когда вы впервые начинаете искать под капотом. Вы на самом деле выяснили много ключевых моментов, давайте посмотрим, смогу ли я помочь вам понять, как они сочетаются друг с другом.

Вот что я узнал из моих собственных экспериментов:

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.

Как вы обнаружили, вы не можете просто добавить четвертый график, потому что нет соответствующего источника данных:

отображается четвертый график, но со значком разбитой картинки.

И, как вы также обнаружили, вы можете настроить график, который отображается для конкретного источника данных:

Использование только четвертого объединенного графа как $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
    }
  }
}

Это только начинает освещать эту тему, я надеюсь, что это поможет!

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