Назад | Перейти на главную страницу

Nagios / nrpe сообщает «Код возврата 255 выходит за пределы допустимого диапазона»

У меня настроена следующая служба для nagios:

define service {
  hostgroup_name             LNX
  service_description        /tmp Disk Usage
  check_command              check_nrpe!check_disk!-a '-w 20% -c 10% -p /tmp'
  check_interval             1
  max_check_attempts         3
  retry_interval             1
  check_period               24x7
  notification_interval      2
  notification_period        24x7
  notification_options       c,r,w
  notifications_enabled      0
  contact_groups             devops
}

Что связано со следующей командой:

define command {
 command_name     check_nrpe
 command_line     $USER1$/check_nrpe -H $HOSTADDRESS$ -u -t 60 -c $ARG1$ $ARG2$
}

Итак, в конце концов, что выполняется (и его вывод при запуске в командной строке):

$: /usr/local/nagios/libexec/check_nrpe -H <my host> -u -t 60 -c check_disk -a '-w 20% -c 10% -p /tmp'
DISK OK - free space: /tmp 4785 MB (97% inode=99%);| /tmp=124MB;3928;4419;0;4910

После этого с echo $? дает 0, что означает ОК / успех.

Однако nagios сообщает об этом как «код ошибки 255 за пределами допустимого диапазона», и я не уверен, почему.

Выполнение команды check_disk на сервере работает нормально:

$: ./check_disk -w 20% -c 10% -p /tmp
DISK OK - free space: /tmp 4785 MB (97% inode=99%);| /tmp=124MB;3928;4419;0;4910
$: echo $?
0

И, как показано выше, это работает, когда выполняется через check_nrpe исполняемый файл на сервере nagios. Это означает:

  1. Команда (check_disk) присутствует в удаленной системе: command[check_disk]=/usr/local/nagios/libexec/check_disk $ARG1$
  2. Сервер nagios может разговаривать с удаленным nrpe (например, он может получить к нему доступ в сети, а его IP-адрес присутствует в only_from директива в /etc/xinetd.d/nrpe)

Кроме того, эта проверка отлично работает на других машинах, но не на всех машинах.

Почему Nagios думает, что получает 255, когда все, что я вижу, означает, что он должен получить 0 и, таким образом, пометить службу как ОК?

РЕДАКТИРОВАТЬ: версия Nagios - это ядро ​​Nagios 4, работающее на CentOS 7, проверяемые хосты - это centos 5-7, проблема появляется на нескольких машинах разных версий

Когда у вас есть check_command, как показано ниже:

check_command check_nrpe!check_disk

Связанное имя команды на самом деле check_disk вместо того check_nrpe на стороне клиента.

Причина проблемы

Настройка службы на сервере Nagios запрашивает у отслеживаемого клиента выполнение команды check_disk с ОДНИМ аргументом.

-w 20% -c 10% -p /tmp

Ваши текущие настройки для check_disk команда с клиентом Nagios на nrpe.cfg как показано:

command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$

Таким образом, команда, которую вы передали отслеживаемому клиенту через NRPE, на самом деле:

/usr/lib64/nagios/plugins/check_disk -w -w 20% -c 10% -p /tmp -c $ARG2$ -p $ARG3$

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

Решение

Если вы хотите передать клиенту Nagios 3 разных аргумента, попробуйте изменить свой check_command следующим образом:

check_command check_nrpe!check_disk -a '-w 20% -c 10% -p /tmp'

Убедитесь, что в клиенте Nagios настроена соответствующая команда:

command[check_disk]=/usr/lib64/nagios/plugins/check_disk $ARG1$

Другой вариант будет изменять конфигурацию сервера следующим образом:

check_command check_nrpe!check_disk

С соответствующей конфигурацией клиента:

command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /tmp

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

cat /etc/xinetd.d/nrpe
service nrpe
{
    flags           = REUSE
    socket_type     = stream
    port            = 5666
    wait            = no
    user            = nagios
    group           = nagios
    server          = /usr/local/nagios/bin/nrpe
    server_args     = -c /usr/local/nagios/etc/nrpe.cfg --inetd
    log_on_failure  += USERID
    disable         = no
    only_from       = xxx.xxx.xxx.xxx
}

Убедитесь, что в строке only_from указан ваш IP-адрес nagios

Во-вторых, вы хотите убедиться, что у скрипта check_nrpe есть необходимые разрешения. Он должен принадлежать nagios: nagios

-rwxrwxr-x. 1 nagios nagios 81542 Jul 11 13:08 /usr/local/nagios/libexec/check_nrpe