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

Как мне заставить check_nrpe ждать завершения выполнения моего удаленного скрипта?

У меня есть скрипт на Python, который используется как плагин для NRPE. Этот сценарий проверяет, запущен ли процесс на виртуальной машине, выполняя однострочную SSH с присоединенным «ps ax | grep process». При выполнении сценария вручную он работает, как ожидалось, и возвращает одну строку вывода для NRPE, а также статус в зависимости от того, запущен ли процесс.

Когда я пытаюсь запустить команду setup для выполнения этого сценария (с моего сервера Nagios), я мгновенно получить вывод «NRPE: невозможно прочитать вывод», однако, когда я запускаю сценарий вручную, требуется около секунды, прежде чем он вернет вывод. Другие команды выполняются нормально, поэтому может показаться, что NRPE нужно подождать секунду или две для вывода, а не сразу дать сбой, но я не смог найти никакого способа добиться этого; какие-нибудь советы?

PS: Виртуальные машины недоступны откуда-либо, кроме хост-машины, поэтому для проверки процесса требуется плагин nrpe для ssh с хоста в виртуальную машину.

Вы можете изменить время ожидания, следуя инструкциям Вот или время ожидания поиска в документация nrpe, хотя я не думаю, что это ваша проблема, иначе вы бы увидели такую ​​ошибку:

CHECK_NRPE: Socket timeout after 270 seconds.

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

Почему бы не использовать check_proc плагин?

На виртуальной машине определите команду для своей службы в /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>'

Я думаю, что тайм-аут по умолчанию составляет около 10 секунд, так что, вероятно, это не так.

Если вы используете ssh для выполнения проверки, помните, что nrpe, вероятно, работает как пользователь «nagios» (в зависимости от параметров установки). Есть ли у этого пользователя правильные ключи и параметры ssh?