Estoy tratando de monitorear URLs reales, y no solo hosts, con Nagios, ya que opero un servidor compartido con varios sitios web, y no creo que sea suficiente solo para monitorear el servicio HTTP básico (Estoy incluyendo al final de esta pregunta una pequeña explicación de lo que estoy imaginando).Monitoreo de URLs con Nagios
(Nota al margen: tenga en cuenta que tengo Nagios instalado y ejecutándose dentro de un chroot en un sistema CentOS. Construí nagios desde el código fuente y usé yum para instalar en esta raíz todas las dependencias necesarias, etc.)
me encontró por primera vez check_url, pero después de instalarlo en/usr/lib/nagios/libexec, seguí recibiendo un "código de retorno 255 está fuera de límites" error. Fue entonces cuando decidí comenzar a escribir esta pregunta (¡pero espere! ¡Hay otro complemento que decidí probar primero!)
Después de revisar This Question que tenía prácticamente el mismo problema que estoy teniendo con check_url, decidí abrir un nueva pregunta sobre el tema porque a) No estoy utilizando NRPE con esta verificación b) Intenté las sugerencias hechas en la pregunta anterior a la que me vinculé, pero ninguna de ellas funcionó. Por ejemplo ...
./check_url some-domain.com | echo $0
devuelve "0" (lo que indica que el cheque fue exitosa)
entonces he seguido las instrucciones de depuración en Nagios Suppor t para crear un archivo temporal denominado debug_check_url, y poner el siguiente en él (que se llamará a continuación, por mi definición de comandos):
#!/bin/sh
echo `date` >> /tmp/debug_check_url_plugin
echo $* /tmp/debug_check_url_plugin
/usr/local/nagios/libexec/check_url $*
Suponiendo que no estoy en "modo de depuración", mi definición de comandos para ejecutar check_url es el siguiente (en el interior command.cfg):
'check_url' command definition
define command{
command_name check_url
command_line $USER1$/check_url $url$
}
(Por cierto, también se puede ver lo que estaba utilizando en mi archivo de configuración de servicio en la parte inferior de esta pregunta)
Antes de la publicación de esta cuestión, sin embargo, decidí dar 1 tiro más al descubrir una solución. Encontré el complemento check_url_status, y decidí darle una oportunidad. Para hacer eso, esto es lo que hice:
- mkdir/usr/lib/nagios/libexec/check_url_status/
- descargado tanto check_url_status y utils.pm
- por el comentario de usuario/revisión en el plugin check_url_status página, cambié "lib" al directorio apropiado de/usr/lib/nagios/libexec /.
ejecute el siguiente:
./check_user_status -U some-domain.com. Cuando ejecuto el comando anterior, seguí recibiendo el siguiente error:
bash-4.1# ./check_url_status -U mydomain.com Can't locate utils.pm in @INC (@INC contains: /usr/lib/nagios/libexec/ /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5) at ./check_url_status line 34. BEGIN failed--compilation aborted at ./check_url_status line 34.
Así que en este punto, darse por vencido, y tienen un par de preguntas:
- ¿Cuál de estos dos complementos recomendaría? check_url o check_url_status? (Después de leer la descripción de check_url_status, creo que esta podría ser la mejor opción. Sus pensamientos?)
- Ahora, ¿cómo puedo solucionar mi problema con el complemento que recomiende?
A principios de esta pregunta, he mencionado me gustaría incluir una pequeña explicación de lo que estoy imaginando. Tengo un archivo llamado services.cfg que es donde tengo ubicadas todas mis definiciones de servicio (¡imagínenlo!).
Lo siguiente es un fragmento de mi archivo de definición de servicio, que escribí para usar check_url (porque en ese momento, creía que todo funcionaba). Construiré un servicio para cada URL que deseo monitorear:
###
# Monitoring Individual URLs...
#
###
define service{
host_name {my-shared-web-server}
service_description URL: somedomain.com
check_command check_url!somedomain.com
max_check_attempts 5
check_interval 3
retry_interval 1
check_period 24x7
notification_interval 30
notification_period workhours
}