Posts tagged ‘nrpe’

Centreon+Nagios: мониторинг Linux сервера с помощью NRPE

nagios_nrpe

Что такое NRPE

В система монитоинга Nagios, NRPE это аналог Zabbix-agent в Zabbix, с той лишь разницей что он тупой и яркий, команда check_nrpe дергает с определенными параметрами NRPE и тот, на основе своего конфига, запускает команды и возвращает результат (процедура изображена на картинке выше). В общем то это все, что делает NRPE, нет в нем ни интеграции с NSCA (аналог “active checks” в Zabbix), ни discovery rules, ни получения конфига от Nagios сервера, хотя это ему не очень то часто и нужно. Использовать NRPE можно только в случае если есть прямой доступ от poller`а к хосту с NRPE, если у вас хост за firewall или внутри приватной сети нужно использовать NSCA или настроить NRPE в качестве proxy, об этом я расскажу в одной из следующих статей.

Continue reading ‘Centreon+Nagios: мониторинг Linux сервера с помощью NRPE’ »

Nagios plugins: поиск больших логов на серверах

У серверов работающих 24х7 есть один неприятный момент, программное обеспечение работающее так долго, умудряется наделать лог-файлов на несколько “гигтаробайт” и не ротировать их. Как оказалось не всем приложениям это нравится, к примеру Oracle может “убиться” без объяснения причин при размере лога более 2 Гб, похожими проблемами страдает и Apache и бог знает что еще. Поэтому в какой-то момент возникла идея создания модуля для поиска слишком “жирных” логов, и прикручивания его к Nagios.

Ниже описан принцип работы, конфигурирование самого модуля, NRPE и Nagios и исходники скриптов.

P.S.
Взято из рабочей FAQ, поэтому при возникновении вопросов просьба задавать их в коментариях.

1. Принцип работы

На рисунке ниже показан показан принцип работы проверки, check_log_size.


Рисунок 1 Диаграмма работы модуля find_log

Каждый день по cron`у в 02.00 на сервере запускается скрипт find_logs_misc.pl, этот скрипт основываясь на файле конфигурации /usr/local/nagios/etc/find_log_misc.conf (см. ниже) ищет большие логи.

Результаты своей работы он записывает в /tmp/nrpe_check_log.tmp.

Первой строкой в файле прописывается день в который происходил поиск, 2й и далее прописываются пути к найденным файлам, если они есть. Т.е. файлnrpe_check_log.tmp с содержимым:

20-04-09
/usr/local/apache/logs/ssl_engine_log

означает что проверка была проведена 20 апреля 2009 года, найден файл ssl_engine_log.
Continue reading ‘Nagios plugins: поиск больших логов на серверах’ »

NRPE: Could not complete SSL handshake.

Сегодня столкнулся с такой ошибкой при настройке NRPE:

CHECK_NRPE: Error - Could not complete SSL handshake.

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

allowed_hosts=127.0.0.1, 192.168.0.2

P.S.

Статья старенькая, но как я вижу по Google Analytics все еще вызывает интерес, поэтому решил немного поднять ее в выдаче.

Сага о 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 можно найти здесь.