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

10

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

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

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

Der Hochstapler
источник
Можете ли вы показать пример того, как он "отлично работает" через CLI?
Кит

Ответы:

11

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

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

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

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

Кит
источник
Да, спасибо за предложение. Хотя я прямо заявил, что это не оказало никакого влияния на конкретную проблему, с которой я столкнулся.
Der Hochstapler
Это настоящая решимость для нагиос. без -epn плагин включается и выполняется внутри nagios. с -epn он загружается как внешний исполняемый файл, аналогично двоичным файлам или bash-скриптам. См. Страницу: nagios.sourceforge.net/docs/3_0/embeddedperl.html и рассмотрите жалобу
epn
1
Двоеточие требуется в # nagios: -epnсоответствии с документами и в соответствии с моими тестами.
17
1
Как ни странно, текущая версия Ubuntu LTS (18.04) стандарта nagios-plugins-стандарта (2.2-3ubuntu2) имеет эту проблему. Все работает, если я либо изменяю затронутые плагины, например, check_disk_smbи check_file_age, или если я устанавливаюuse_embedded_perl_implicitly=0
Akom
Исправил это для меня! Спасибо ...
Оскар Браво
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/редактировали свой плагин.

Der Hochstapler
источник
2

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

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

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

TikTak
источник