¿Cómo puedo hacer que check_nrpe espere a que mi script remoto termine de ejecutarse?

¿Cómo puedo hacer que check_nrpe espere a que mi script remoto termine de ejecutarse?

Tengo un script en Python que se utiliza como complemento para NRPE. Este script verifica si un proceso se está ejecutando en una máquina virtual haciendo una línea SSH con un "proceso ps ax | grep" adjunto. Al ejecutar el script manualmente, funciona como se esperaba y devuelve una sola línea de salida para NRPE, así como un estado basado en si el proceso se está ejecutando o no.

Cuando intento ejecutar la configuración del comando para ejecutar este script (desde mi servidor Nagios),instantáneamenteobtengo el resultado "NRPE: No se puede leer el resultado", sin embargo, cuando ejecuto el script manualmente, tarda aproximadamente un segundo antes de que devuelva el resultado. Otros comandos funcionan bien, por lo que parecería que NRPE necesita esperar uno o dos segundos para obtener resultados en lugar de fallar instantáneamente, pero no he podido encontrar ninguna forma de lograrlo; ¿algun consejo?

PD: No se puede acceder a las máquinas virtuales desde ningún otro lugar que no sea la máquina host, de ahí la necesidad de que el complemento nrpe realice ssh desde el host a la VM para verificar el proceso.

Respuesta1

Puede cambiar el tiempo de espera siguiendo las instruccionesaquío tiempo de espera de búsqueda en eldocumentacion nrpe, aunque no creo que este sea tu problema, o verías un error como este:

CHECK_NRPE: Socket timeout after 270 seconds.

Probablemente también exista un complemento de nagios que devolverá los datos que desea y que ya se han escrito.

Respuesta2

¿Por qué no usar?check_proc¿enchufar?

En la máquina virtual, defina un comando para su servicio en /etc/nagios/nrpe.cfg:

command[check_<service_name>]=/usr/lib64/nagios/plugins/check_procs -c 1:1 -C <service_name>

y desde el servidor de 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
}

un resultado de muestra:

# 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>'

Respuesta3

Creo que el tiempo de espera predeterminado es de unos 10 segundos, así que probablemente no sea eso.

Si está utilizando ssh para ejecutar una verificación, recuerde que nrpe probablemente se esté ejecutando como usuario "nagios" (dependiendo de las opciones de instalación). ¿Ese usuario tiene las claves y opciones ssh correctas?

información relacionada