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

проверка nagios не работает на хосте nagios, но работает локально

Я написал небольшой сценарий bash для использования с nagios, чтобы проверить, работает ли nrpe.

Проверка работает локально при запуске от имени пользователя root, но не выполняется на узле мониторинга.

С хоста, который я пытаюсь отслеживать, в моем nrpe.conf есть такая строка:

 command[check_nrpe]=/usr/lib64/nagios/plugins/check_nrpe.sh

И убедился, что скрипт проверки принадлежит пользователю nagios:

[root@ops:~] #ls -l /usr/lib64/nagios/plugins/check_nrpe.sh
-rwxr-xr-x. 1 **nagios nagios** 203 Jun  9 20:29     **/usr/lib64/nagios/plugins/check_nrpe.sh**

И если я запускаю скрипт как пользователь root, я получаю правильный результат:

 [root@ops:~] #/usr/lib64/nagios/plugins/check_nrpe.sh OK: NRPE is running with pid: 24538
24538

Но когда я запускаю его с хоста nagios, проверка дает противоположный результат:

[root@monitor1:~] #/usr/local/nagios/libexec/check_nrpe -H ops.mydomain.com -c     check_nrpe
**CRITICAL: NRPE is **NOT** Running**

Если я вернусь к хосту, который пытаюсь отслеживать, и стану пользователем nagios, я получу тот же неверный результат, что и на хосте nagios.

[root@ops:~] #su - nagios
Last login: Tue Jun  9 20:43:42 UTC 2015 on pts/3

-bash-4.2$ /usr/lib64/nagios/plugins/check_nrpe.sh
**CRITICAL: NRPE is **NOT** Running**

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

В / etc / sudoers я даю пользователю nagios доступ к команде и отключил tty, указав:

    nagios ALL=(ALL)    NOPASSWD: /usr/lib64/nagios/plugins/check_nrpe.sh    !requiretty

И теперь, если я стану пользователем nagios на локальном хосте и использую sudo, проверка даст правильный результат.

[root@ops:~] #su - nagios
Last login: Tue Jun  9 23:37:09 UTC 2015 on pts/0

-bash-4.2$ sudo /usr/lib64/nagios/plugins/check_nrpe.sh
**OK: NRPE is running with pid: 24538**
24538

Если я затем отредактирую свой файл конфигурации nrpe на локальном хосте, чтобы использовать sudo перед командой. В nrpe.conf я помещаю:

[root@ops:~] #grep check_nrpe /etc/nagios/nrpe.cfg
command[check_nrpe]=/bin/sudo /usr/lib64/nagios/plugins/check_nrpe.sh

И перезапустили службу nrpe:

[root@ops:~] #systemctl restart nrpe
[root@ops:~] #lsof -i :5666
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nrpe    6137 nrpe    4u  IPv4 493404      0t0  TCP *:5666 (LISTEN)
nrpe    6137 nrpe    5u  IPv6 493405      0t0  TCP *:5666 (LISTEN)

Но когда я возвращаюсь к хосту nagios и снова запускаю проверку, я получаю сообщение об ошибке:

[root@monitor1:~] #/usr/local/nagios/libexec/check_nrpe -H ops.jokefire.com -c     check_nrpe
 **NRPE: Unable to read output**

Это содержимое моего скрипта проверки nrpe:

[root@ops:~] #cat /usr/lib64/nagios/plugins/check_nrpe.sh
#!/bin/bash

pid=$(lsof -i :5666 | awk '{print $2}' | grep -i -v pid)

if [[ $pid ]]
then
  echo "OK: NRPE is running with pid: $pid"
  exit 0
else
  echo "CRITICAL: NRPE is **NOT** Running"
  exit 2
fi

ПОМОГИТЕ!! Как мне заставить эту проверку возвращать правильный результат от хоста nagios?

Спасибо