Я использую некоторые Perl-скрипты для проверки сервисов в Nagios, и я получаю (Service check did not exit properly)
и (null)
в результате в Nagios, но скрипт отлично работает в командной строке.
В Интернете я видел решения, предлагающие отключить внутренний интерпретатор Perl enable_embedded_perl=0
, указав в конфигурации Nagios или явно указав путь к интерпретатору. Это не помогло с проблемой.
Что еще это может быть?
nagios
debian-wheezy
Der Hochstapler
источник
источник
Ответы:
Nagios включает в себя собственный встроенный интерпретатор Perl. Ваш плагин, вероятно, не соответствует EPN.
Возможно, вы захотите отключить его глобально или просто отключить его для вашего сценария. Внизу этой страницы документации показано, как это сделать.
По сути, добавьте
# nagios: -epn
в свою строку где-то первые десять строк своего скрипта. Это должно исправить вашу проблему.Вы также можете сделать его совместимым , но это почти наверняка не стоит проблем.
источник
# nagios: -epn
соответствии с документами и в соответствии с моими тестами.check_disk_smb
иcheck_file_age
, или если я устанавливаюuse_embedded_perl_implicitly=0
Некоторые сценарии Perl из Nagios Exchange попытаются включить
utils.pm
модуль Perl. Где-то в нем вы найдете такую строку:При установке Nagios в Debian местоположение
utils.pm
файла по умолчанию -/usr/lib/nagios/plugins/utils.pm
. Таким образом,use lib
директива должна быть:Выполнение команды из командной строки, скорее всего, сработало, потому что вы
/usr/lib/nagios/plugins/
редактировали свой плагин.источник
Префикс команды с
/usr/bin/perl
.Это решение - скорее обходной путь, вероятно, это не очень хорошая идея, но, по крайней мере, ваш плагин должен работать так же, как и при запуске из терминала.
ПРИМЕЧАНИЕ: по моему опыту
# nagios -epn
работает довольно часто, но иногда этого недостаточно. Я заметил, что когда это происходит, неисправные плагины выдают много предупреждений (когда вызывается скриптperl -w
).источник