Сага о Nagios: Написание плагинов для Nagios/NRPE/NSClient++

Вданной статье дается описание механизму написания собственных, нестандартных скриптов(сервисов/проверок) для Nagios.

Оригинал: Nagios Plugin API

Другие ресурсы

Если вы собираетесь писать собственные плагины для Nagios, ознакомтесь со следующими ресурсами:

Обзор плагинов

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

  • При выходе вернуть один из возможных кодов возврата (см. ниже)
  • Вернуть как минимум одну строку текста в STDOUT

Внутренне устройство вашего плагина абсолютно безразлично для Nagios. Ваш плагин может проверять статус TCP порта, выполнять запрос к базе данных, проверять место на диске, или делать еще что-то, что вам необходимо проверять. Детали о будут зависеть только от того что вы хотите проверять.

Коды возврата

Nagios различает статус сервиса или хоста по возвращаемым плагином кодом возврата. Таблица ниже показывает список возможных кодов возврата, вместе с расшифровкой их значений.

Код возврата плагина Состояние сервиса Состояние хоста
0 OK UP
1 WARNING UP or DOWN/UNREACHABLE*
2 CRITICAL DOWN/UNREACHABLE
3 UNKNOWN DOWN/UNREACHABLE

Note Замечание: Если опция use_aggressive_host_checking включена, код 1 в возврате плагина проверки хоста будет означать DOWN или UNREACHABLE. Иначе 1 будет означает что хост в состоянии UP. The process by which О том как Nagios определяет находиться в состоянии DOWN или UNREACHABLE можно прочесть здесь here.

Описание вывода плагинов

Плагин должен вывести как минимум одну строку текста на консоль (STDOUT). Начиная с Nagios версии 3, плагины могут, пожеланию, выводить несколько строк текста. Плагин также может выдавать данные о динамике (perfomance) которые будут обработаны сторонними приложениями (к примеру программами ) Стандартные примеры вывода плагиноа привидены ниже:

TEXT OUTPUT | OPTIONAL PERFDATA
LONG TEXT LINE 1
LONG TEXT LINE 2

LONG TEXT LINE N
| PERFDATA LINE 2
PERFDATA LINE 3

PERFDATA LINE N

Performance данные (показаны оранжевым) не обязательны. Если скрипт возвращает perfomance данные в своем выводе, значит они должны отделятся от остального вывода вертикальной чертой (|). Дополнительные линии длинного вывода плагина (более 1й чтроки)(выделены синим) также не обязательны.

Примеры выводов плагинов

Давайте рассмотрим примеры возможных выводов плагинов…

Пример 1: Одна строка вывода(только текст)
Предполжим что у нас есть плагин который выводитодну строку как показано в примере:

DISK OK – free space: / 3326 MB (56%);

Если этот плагин будет использован для выполнения проверки, данная строка бкдет передана в переменную $SERVICEOUTPUT$.

Пример 2: Одна строка вывода(текст и perfdata)
Плагин может возвращать perfomance-данные которые могут использованы сторонними приложениями (к примеру построителем графиков в Centreon или NagiosGrapher). Не забывает отделять perfomance данные вертикальной чертой (|):

DISK OK – free space: / 3326 MB (56%);
|
/=2643MB;5948;5958;0;5968
Если плагин используется для предоставления данных о проверке,
красная
часть (левее вертикальной черты) будет сохранена в макрос $SERVICEOUTPUT$,
оранжевая
часть (правее разделителя) будет сохранена в макрос $SERVICEPERFDATA$.

Пример 3: Несколько строк вывода (текст и perfdata)
Плагин возвращает несколько строк основных и perfdata:

DISK OK – free space: / 3326 MB (56%); | /=2643MB;5948;5958;0;5968
/ 15272 MB (77%);
/boot 68 MB (69%);
/home 69357 MB (27%);
/var/log 819 MB (84%); | /boot=68MB;88;93;0;98
/home=69357MB;253404;253409;0;253414
/var/log=818MB;970;975;0;980

Красным помечен вывод проверки, помещается в макрос $SERVICEOUTPUT$. Оранжевым помеченыстроки (текст) который будет помещен в макрос $SERVICEPERFDATA$. Синим помечены 2 – 5 строки вывода будут соединены (с экранированием переводов строк) и помещены в макрос $LONGSERVICEOUTPUT$.

В итоге значения макросов будут следующими:

Макрос Значение
$SERVICEOUTPUT$ DISK OK – free space: / 3326 MB (56%);
$SERVICEPERFDATA$ /=2643MB;5948;5958;0;5968 /boot=68MB;88;93;0;98 /home=69357MB;253404;253409;0;253414 /var/log=818MB;970;975;0;980
$LONGSERVICEOUTPUT$ / 15272 MB (77%);\n/boot 68 MB (69%);\n/var/log 819 MB (84%);

[...]

Требования к длинне вывода плагинов

Nagios читает первые 4 KB данных возвращаемых плагином. Это сделано для предотвращения ситуаций, когда плагин будет отдавать мегабайты и гигабайты данных обратно Nagios`у. Лимит в 4 KB можно легко изменить если необходимо. Просто измените значение MAX_PLUGIN_OUTPUT_LENGTH в файле include/nagios.h.in исходных кодов и пересоберите Nagios. Ничего больше изменять ненужно!

Примеры

Если вам нужны примеры плагинов вы можете скачать официальные плагины для Nagios, там вы сможете найти примеры на C, Perl и shell. Информацию о получении официальных плагинов вы можете найти здесь.

Perl плагины

Одна и возможностей Nagios это встроенный интерпритатор Perl который позволяет выполнять плагины быстрее. Больше информации о том как писать плагины с использование встроенного Perl можно найти здесь.


Похожие посты:

Комментарии

  1. торрен:

    качество хорошее и перевод хороший…

Оставить комментарий