Estoy intentando configurar Nagios para monitorear el servicio nginx en mi balanceador de carga, pero no logré que muestre que el servicio está activo. La definición de comando y servicio se encuentra a continuación. Parece que cualquier proceso que no sea generado por root no se mostrará como en ejecución. El proceso nginx lo ejecuta www-data. Incluso intenté algo tan simple como verificar el proceso "superior" que estaba ejecutando con un usuario diferente. Lo que he presentado a continuación funciona bien siempre que elija un proceso ejecutado por root. Si el proceso lo genera cualquier otro usuario, se muestra como crítico y no funciona. ¿Alguna idea?
define command {
command_name check_nginx
command_line $USER1$/check_procs -c 1: -C nginx
}
define service {
use local-service
host_name my_host
service_description Load Balance Service
check_command check_nginx
}
Respuesta1
Después de probar todas las diferentes opciones incluidas con el complemento check_proc y no llegar a ninguna parte, decidí tomar una ruta diferente. Creé el siguiente script en Python y lo incluí en el directorio de complementos. El nombre del script de Python es check_service.py. Si le asigna otro nombre, tendrá que modificar los servicios y comandos siguientes en consecuencia.
import os
status = os.system('systemctl is-active --quiet nginx')
if status == 768:
print('Critical, Service is not running')
exit(2)
elif status == 0:
print('OK, Service is Running')
exit(0)
Luego agregué el siguiente comando al archivo commands.cfg. El $ARG1$ está ahí para una versión futura del script en el que estoy trabajando. No es requerido.
define command{
command_name check_service
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_service $ARG1$
}
Definido el servicio así.
define service {
use local-service
host_name debian
service_description Load Balance Service
check_command check_service
}
Luego en el cliente agregué este comando al archivo nrpe.cfg
command[check_service]=python3 /usr/lib/nagios/plugins/check_service.py
Espero que esto ayude a alguien en algún momento.