У меня настроена следующая служба для 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. Это означает:
check_disk
) присутствует в удаленной системе: command[check_disk]=/usr/local/nagios/libexec/check_disk $ARG1$
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