martes, 31 de marzo de 2009

Monitoreando Servicios publicamente disponibles

Introducción

Este documento describe como monitorear servicios, aplicaciones y protocolos publicamente disponibles. Al decir "público" quiere decir que esos servicios son accesibles a traves de la red - ya sea en la red local o por Internet. Ejemplos de servicios publicos son HTTP, POP3, IMAP, FTP, and SSH. Hay más servicios públicos que tal vez usted utilice en sus tareas diarias. Estos servicios y aplicaciones, así como sus protocolos, pueden ser monitoreados por Nagios sin necesidad de requerimientos de acceso especiales.

Servicios privados, en contraste, no pueden ser monitoreados con Nagios sin la intervención de algún agente. Ejemplos de servicios privados asociados con los equipos son como la carga de CPU, uso de Memoria, uso en disco, cuenta de usuarios activos, información de procesos, etc. Estos servicios privados o atributos de los equipos usualmente no son expuestos a clientes externos. Esta situación requiere que un agente de monitoreo intermediario sea instalado en el equipo que se desea monitorear esa información. Mayor información en monitorear servicios privados en diferentes tipos de equipos pueden ser localizados en la documentación siguiente:



Tip Tip: Ocasionalmente usted encontrará que la información de servicios y aplicaciones privadas pueden ser monitoreadas utilizando SNMP. El agente SNMP le permite monitorear remotamente información privada (e inaccesible) acerca del equipo. Para mayor información acerca de monitorear servicios utilizando SNMP, revise la documentación en monitoreando switches y routers.

Note Nota: Estas instrucciones asumen que usted instaló Nagios de acuerdo a la guía de instalación rápida. La configuración de ejemplo en la parte inferior hace referencia a objetos que estan definidos en los archivos de configuración de ejemplo (commands.cfg, localhost.cfg) que fueron instalados si usted siguio la guía rápida.

Plugins para Monitorear Servicios

Cuando usted se encuentra en la necesidad de monitorear una aplicación, servicio o protocolo en particular, las oportunidades son buenas de que un plugin exista para monitorearlo. La distribución oficial de plugins de Nagios viene con plugins que pueden ser utilizados para monitorear una variedad de servicios y protocolos. Tambien existe un gran numero de plugins contribuidos que pueden ser localizados en el subdirectorio contrib/. El sitio NagiosExchange.org hospeda un numero considerable de plugins adicionales que han sido creados por usuarios del sistema, reviselo cuando tenga una oportunidad.

Si no encuentra un plugin apropiado para sus necesidades de monitoreo, usted puede escribir uno por su cuenta. Los plugins son fáciles de escribir, por lo cual no deje que esto lo asuste. Lea la documentación sobre desarrollo de plugins para más información.

Lo guiaremos para monitorear algunos servicios básicos que usted probablemente utilizara tarde o temprano. Cada uno de estos servicios pueden ser monitoreados utilizando uno de los pluginsque fueron instalados como parte de la distribución de plugins de Nagios. Comencemos...

Creando una definición de equipo (Host)
Antes de que empiece a monitorear un servicio, usted primero tiene que definir un equipo que esta asociado con el servicio. Puede poner definiciones de equipos en cualquier archivo de configuración de objetos especificado por el archivo de la directiva cfg_file o puesto en el directorio especificado por la directiva cfg_dir. Si ya creo una definición de equipo, usted puede saltar este paso.

Para este ejemplo, digamos que desea monitorear una variedad de servicios en el equipo remoto. Llamemos al equipo remotehost. La definición de equipo puede ser puesta en su propio archivo o ser agregada en un archivo de configuración existente. Asi es como la definición del equipo remotehost debe verse:

define host{
use generic-host ; Inherit default values from a template
host_name remotehost ; The name we're giving to this host
alias Some Remote Host ; A longer name associated with the host
address 192.168.1.50 ; IP address of the host
hostgroups allhosts ; Host groups this host is associated with
}

Ahora que la definición ha sido agregada para el equipo que vamos a monitorear, podemos empezar a definir servicios que deben ser monitoreados. Como las definiciones de equipos, las definiciones de servicios pueden ser agregadas en cualquier archivo de configuración de objetos.
Creando Definiciones de Servicios
Para cada servicio que desee monitorear, debe definir un servicio en Nagios que este asociado con la definición de equipo que acaba de crear. Usted puede agregar definiciones de servicios en cualquier archvio de configuración de objetos especificado en la directiva cfg_file o agregado en el directorio especificado en la directiva cfg_dir.

Algunos ejemplos de definición de servicios para monitorear servicios publicos comunes (HTTP, FTP, etc) son mostrados abajo.
Monitoreando HTTP
En algún momento usted querrá monitorear servidores web - el suyo o el de alguien más. El plugin check_http esta diseñado para ello. El entiende el protocolo HTTP y usted puede monitorear el tiempo de respuesta, códigos de error, cadenas que regresa HTML, certificados de servidor y mucho más.

El archivo commands.cfg contiene la definición del comando que vamos a utilizar por el plugin check_http. Debe verse así:

define command{
name check_http
command_name check_http
command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
}

Una definición de servicio simple para monitorear el servicio de HTTP el la máquina remotehost debe verse así:

define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description HTTP
check_command check_http
}


Esta simple definición de servicio va a monitorear el servicio HTTP ejecutadose en remotehost. Producira alertas si el servidor web no responde dentro de 10 segundos o si el HTTP regresa códigos de error (403, 404, etc.). Eso es lo que usted necesita para un monitoreo simple. Un poco simple, huh?

Tip Tip: Para monitoreo avanzado, ejecute el plugin check_http manualmente con --help como argumento en la línea de comandos para ver todas las opciones que el plugin nos puede dar. Esta sintaxis --help funciona con todos los plugins que seran cubiertos en este documento.

Una definición más avanzada sobre el monitoreo del servicio HTTP es mostrado a continuación. Esta definición de servicio revisará si el URI /download/index.php contiene la cadena "latest-version.tar.gz". Producirá un error si la cadena no es encontrada, la URI es invalida, o el servidor web toma más de 5 segundos para responder.

define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description Product Download Link
check_command check_http!-u /download/index.php -t 5 -s "latest-version.tar.gz"
}

Monitoreando FTP
Cuando necesite monitorear servidores FTP, puede utilizar el plugin check_ftp. El archivo commands.cfg contiene una definición de comando para ser utilizado por el plugin check_ftp, el cual se ve como sigue:

define command{
command_name check_ftp
command_line $USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$
}

Una definición de servicio simple para monitorear un servidor FTP en remotehost debe verse así:

define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description FTP
check_command check_ftp
}

Esta definición de servicio va a monitorear el servicio de FTP y generará alertas si el servidor FTP no responde dentro de 10 segundos.

Una definición de servicio más avanzada es mostrada a continuación. Este servicio revisara al servidor FTP ejecutandose en el puerto 1023 en remotehost. Generará una alerta si el servidor no responde dentro de 5 segundos o si la respuesta del servidor no contiene la cadena "Pure-FTPd [TLS]".

define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description Special FTP
check_command check_ftp!-p 1023 -t 5 -e "Pure-FTPd [TLS]"
}

Monitoreando SSH
Cuando necesite monitorear servidores SSH, puede utilizar el plugin check_ssh. El archivo commands.cfg contiene la definición de comandos que son utilizadas por el plugin check_ssh, el cual debe verse así:

define command{
command_name check_ssh
command_line $USER1$/check_ssh $ARG1$ $HOSTADDRESS$
}

Una definición de servicio simple para monitorear el servidor SSH en remotehost debe verse así:

define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description SSH
check_command check_ssh
}

Esta definición de servicio debe monitorear el servicio SSH y generar alertas si el servidor SSH no responde dentro de 10 segundos.
Una definición de servicio más avanzada es mostrada acontinuación. Este servicio revisará el servidor SSH y generará una alerta si el servidor no responde dentro de 5 segundos o si la cadena de la versión de servidor no empata con "OpenSSH_4.2".

define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description SSH Version Check
check_command check_ssh!-t 5 -r "OpenSSH_4.2"
}

Monitoreando SMTP
El plugin check_smtp es utilizado para monitorear servidores de correo. El archivo commands.cfg contiene una definición de comando para utilizar el plugin check_smtp, el cual debe verse así:

define command{
command_name check_smtp
command_line $USER1$/check_smtp -H $HOSTADDRESS$ $ARG1$
}

Una definición de servicio simple para monitorear el servidor SMTP en remotehost debe verse así:

define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description SMTP
check_command check_smtp
}

Esta definición de servicio debe monitorear el servicio SMTP y generar alertas si el servidor SMTP no responde dentro de 10 segundos.
Una definición de servicio más avanzada se puede ver acontinuación. Este servicio deberá revisar el servidor SMTP y generar una alerta si el servidor no responde en 5 segundos o si la respuesta del servidor no contiene "mygreatmailserver.com".

define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description SMTP Response Check
check_command check_smtp!-t 5 -e "mygreatmailserver.com"
}

Monitoreando POP3
El plugin check_pop es utilizado para monitorear el servicio POP3 en los servidores de correo. El archivo commands.cfg contiene la definición de comando para utilizar el plugin check_pop, el cual debe verse así:

define command{
command_name check_pop
command_line $USER1$/check_pop -H $HOSTADDRESS$ $ARG1$
}

Una simple definición de servicio para monitorear el servicio POP3 en remotehost deberá verse así:

define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description POP3
check_command check_pop
}

Esta definición de servicio deberá monitorear el servicio POP3 y generar alertas si el servidor POP3 no responde dentro de 10 segundos.
Una definición de servicio más avanzada es mostrada acontinuación. Este servicio revisará el servicio POP3 y deberá generar una alerta si el servidor no responde dentro de 5 segundos o si la respuesta del servidor no contiene "mygreatmailserver.com".

define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description POP3 Response Check
check_command check_pop!-t 5 -e "mygreatmailserver.com"
}

Monitoreando IMAP
El plugin check_imap puede ser utilizado para monitorear servicios IMAP4 en los servidores de correo. El archivo commands.cfg contiene una definición de comando para utilizar el plugin check_imap, el cual se ve así:

define command{
command_name check_imap
command_line $USER1$/check_imap -H $HOSTADDRESS$ $ARG1$
}

Una definición de servicio simple para monitorear el servicio IMAP4 en remotehost deberá verse así:

define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description IMAP
check_command check_imap
}

Esta definición de servicio deberá monitorear el servicio IMAP4 y generar alertas si el servidor IMAP4 no responde dentro de 10 segundos.

Una definición de servicio más avanzada es mostrada acontinuación. Este servicio deberá revisar el servicio IAMP4 y generar una alerta si el servidor no responde dentro de 5 segundos o si la respuesta del servidor no contiene "mygreatmailserver.com".

define service{
use generic-service ; Inherit default values from a template
host_name remotehost
service_description IMAP4 Response Check
check_command check_imap!-t 5 -e "mygreatmailserver.com"
}

Reiniciando Nagios
Una vez que usted ha agregado nuevas definiciones de equipos y servicios en sus archivos de configuración de objetos, usted esta listo para monitorearlos. Para esto, usted necesita verificar su configuración y reiniciar Nagios.

Si el proceso de verificación produce mensajes de error, solucione los archivos de configuración antes de continuar. Asegurese de no reiniciar Nagios hasta que el proceso de verificación se complete sin errores!.

No hay comentarios:

Publicar un comentario en la entrada

Nota: solo los miembros de este blog pueden publicar comentarios.