![Как заставить check_nrpe ждать завершения выполнения удаленного скрипта?](https://rvso.com/image/567618/%D0%9A%D0%B0%D0%BA%20%D0%B7%D0%B0%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C%20check_nrpe%20%D0%B6%D0%B4%D0%B0%D1%82%D1%8C%20%D0%B7%D0%B0%D0%B2%D0%B5%D1%80%D1%88%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%20%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE%20%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0%3F.png)
У меня есть скрипт python, который используется как плагин для NRPE. Этот скрипт проверяет, запущен ли процесс на виртуальной машине, выполняя однострочный SSH с прикрепленным "ps ax | grep process". При ручном запуске скрипта он работает так, как и ожидалось, и возвращает одну строку вывода для NRPE, а также статус, основанный на том, запущен ли процесс.
Когда я пытаюсь запустить команду setup для выполнения этого скрипта (с моего сервера Nagios), янемедленнополучаю вывод "NRPE: Невозможно прочитать вывод", однако когда я запускаю скрипт вручную, проходит около секунды, прежде чем он возвращает вывод. Другие команды выполняются нормально, так что, похоже, NRPE нужно подождать секунду или две для вывода, а не сразу давать сбой, но я не смог найти способа сделать это; есть какие-нибудь советы?
PS: Виртуальные машины доступны только с хост-машины, поэтому для проверки процесса необходим плагин nrpe для подключения по SSH с хоста на виртуальную машину.
решение1
Вы можете изменить время ожидания, следуя инструкциямздесьили поиск тайм-аута вдокументация nrpe, хотя я не думаю, что это ваша проблема, иначе вы бы увидели такую ошибку:
CHECK_NRPE: Socket timeout after 270 seconds.
Вероятно, также существует плагин Nagios, который вернет нужные вам данные, которые уже были записаны.
решение2
Почему бы не использоватьпроверка_процедурыплагин?
На виртуальной машине определите команду для вашей службы в /etc/nagios/nrpe.cfg
:
command[check_<service_name>]=/usr/lib64/nagios/plugins/check_procs -c 1:1 -C <service_name>
и с сервера Nagios:
define service{
use critical-service
host_name xx
service_description <service_name>
check_command check_nrpe!check_<service_name>
event_handler autostart_<service_name>!xx
process_perf_data 0
contact_groups admin
}
пример результата:
# su - nagios -s /bin/bash
-bash-3.2$ /usr/local/nagios/libexec/check_nrpe -H xx -c check_<service_name>
PROCS OK: 1 process with command name '<service_name>'
решение3
Я думаю, что тайм-аут по умолчанию составляет около 10 секунд, так что, вероятно, это не то.
Если вы используете ssh для выполнения проверки, помните, что nrpe, вероятно, запущен как пользователь "nagios" (в зависимости от параметров установки). Имеет ли этот пользователь правильные ключи и параметры ssh?