Как я могу разрешить результаты "(проверка службы не завершена должным образом)" и "(ноль)" с моими службами?

Я использую некоторые Perl-скрипты для проверки сервисов в Nagios и получаю (Service check did not exit properly) а также (null) как результат в Nagios, но скрипт отлично работает в командной строке.

Я видел решения онлайн, предлагающие отключить внутренний интерпретатор Perl, установив enable_embedded_perl=0 в конфигурации Nagios или путем явного указания пути к интерпретатору. Это не помогло с проблемой.

Что еще это может быть?

3 ответа

Решение

Некоторые сценарии Perl из Nagios Exchange будут пытаться включить utils.pm Perl модуль. Где-то в нем вы найдете такую ​​строку:

use lib "/usr/local/nagios/libexec";

При установке Nagios в Debian, расположение по умолчанию utils.pm файл /usr/lib/nagios/plugins/utils.pm, Итак use lib Директива должна быть:

use lib "/usr/lib/nagios/plugins";

Выполнение команды из командной строки, скорее всего, сработало, потому что вы были в /usr/lib/nagios/plugins/, редактирование вашего плагина.

Nagios включает в себя собственный встроенный интерпретатор Perl. Ваш плагин, вероятно, не соответствует EPN.

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

В основном, добавить # nagios: -epn на отдельной строке где-то в первых десяти строках вашего сценария. Это должно исправить вашу проблему.

Вы также можете сделать его совместимым, но это почти наверняка не стоит проблем.

Префикс команды /usr/bin/perl,

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

ПРИМЕЧАНИЕ: по моему опыту # nagios -epn работает довольно часто, но иногда кажется, что этого недостаточно. Я заметил, что когда это происходит, неисправные плагины выдают много предупреждений (когда скрипт вызывается с perl -w).

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