Nagios (код возврата 255 находится за пределами) - PullRequest
3 голосов
/ 22 сентября 2009

Я получаю сообщение об ошибке (код возврата 255 выходит за границы) на http://localhost/nagios

Но когда я запускаю команду из оболочки, она работает нормально

Ответы [ 9 ]

5 голосов
/ 14 июля 2010

Если вы используете NRPE и получаете сообщение об ошибке 'NRPE: Unable to read output' , это потому, что демон NRPE не возвращает текстовые данные. Ядро Nagios полагается на то, что демоны NRPE будут возвращать строку, которая суммирует результаты проверок. Например, для результата проверки, который возвращает исправный статус, он может выглядеть как первый, тогда как нездоровый статус будет отображаться как последний.

OK - load average: 1.56, 1.37, 1.29 
CRITICAL - load average: 16.59, 19.41, 21.96 

Если NRPE вернет что-то вроде этого:

FOO: bar 

Вы получите ошибку «NRPE: Невозможно прочитать вывод», потому что FOO не является одним из известных состояний результата Nagios. Запустите удаленную команду NRPE, выполнив что-то вроде этого (в зависимости от ваших каталогов и проверок):

libexec/check_nrpe -n -H localhost -c check_load

Это должно вернуть OK, WARNING, CRITICAL или UNKNOWN. Все остальное вызовет эту ошибку.

3 голосов
/ 22 сентября 2009

Чек Nagios должен вернуть 0, 1, 2 или 3 :

  • 0: ОК
  • 1: Предупреждение
  • 2: критический
  • 3: неизвестно

Статус выхода 255 совершенно действителен, когда вы запускаете команду вручную, поэтому bash не будет жаловаться. Вы можете проверить состояние завершения команды в переменной $? после запуска команды с помощью:

echo $? 
2 голосов
/ 18 августа 2014

Для потомков, я добавлю кое-что для всех, кто сталкивается с этим. Две вещи, которые нужно проверить:

Убедитесь, что сервер, выполняющий проверки, имеет разрешение на доступ к клиенту, который проверяет В этом случае localhost - это сервер (и клиент). Тем не менее, NRPE на клиенте должен явно предоставить разрешение серверу, который собирается его проверить. Если ваш NRPE упакован службой xinetd, вам необходимо добавить сервер nagios в директиву only_from в файле конфигурации клиента (/etc/xinetd.d/nrpe)

only_from       = 127.0.0.1 NagiosServerHostName

NagiosServerHostName должен находиться в / etc / hosts. Как вариант, поставь NagiosServerIP

Убедитесь, что брандмауэр не блокирует ваши проверки. NRPE по умолчанию работает на порту 5666; убедитесь, что этот порт разрешен

1 голос
/ 29 июля 2011

У меня была эта ошибка, оказалось, что плагин пишет в место, где у него нет прав на запись, поэтому я просто chmod 777 это место, и это сработало

0 голосов
/ 22 августа 2018

Надеюсь, это поможет, в моем случае проблема была ssh. Чтобы устранить ошибку кода возврата, я удалился на удаленные серверы как пользователь nagios с сервера, где используется nagios (главный узел, если хотите). Разрешить запись в файл known_hosts с главного сервера nagios.

0 голосов
/ 24 марта 2016

У меня была такая же ошибка, и это было связано с включением брандмауэра на удаленном клиенте.

0 голосов
/ 11 января 2016

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

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

command_line $USER1$/check_nrpe -H $ARG1$ -c $ARG2$ 2> /tmp/error.log
0 голосов
/ 02 августа 2011

Полагаю, ваша команда check_nrpe неправильно настроена в файле конфигурации Nagios. Если вы откроете файл Commands.cfg в / usr / local / nagios / etc / objects / и дважды убедитесь, что настройки вашей команды там точно такие же, как и в вашем скрипте bash. У меня есть команда настройки:

define command{
command_name    check_nrpe
command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

И определение моего сервиса:

define service{
use         generic-service
host_name       ********
service_description HTTP Requests
contact_groups  localadmin
check_command       check_nrpe!check_vbs_sample
}

Также мне легче использовать простой скрипт, например, пакетный скрипт, который просто возвращает OK, чтобы сначала проверить его работу.

0 голосов
/ 05 июня 2010

Вы упоминаете, что вызываете команду проверки через nrpe. Если вы используете команду check, которая возвращает многострочный вывод, вы должны использовать последнюю версию nrpe, которая также поддерживает многострочный вывод, иначе сценарий check_nrpe не сможет проанализировать вывод.

...