Usando Nagios para Monitorizar Redes

2006-08-26 por Angel Abad, etiquetado como debian, monitorizacion, servidor

Artículo traducido de: http://www.debian-administration.org/articles/299

Nagios es un potente y modular sistema de monitorización de red que puede ser usado para monitorizar algunos servicios de red como smtp, http y dns en hosts remotos. También tiene soporte para snmp que permite chequear cosas como la carga del procesador en routers y servidores. No puedo cubrir todas las cosa que nagios puede hacer en este artículo, así que sólo hablaré de lo básico para instalarlo y ponerlo a funcionar.

# apt-get install nagios-text

Primero necesitamos definir la gente que será notificada, y definir como serán notificados. En el ejemplo de abajo, defino dos usuarios, joe y paul. Joe es el guru de la red y se encarga de los routers y los switches. Paul es el chico de sistemas, y se encarga de los servidores. Los dos serán notificados via email y via pager. Nótese que si va a monitorizar su servidor de correo, quizás quiera usar un metodo de notificación alternativo al email. Si su servidor de correo cae, no podrá mandar emails a nadie para notificarles! :) En ese caso quizás quiera utilizar un servidor pager para enviar mensajes de texto a un teléfono o un pager, o instalar un segundo monitor nagios que use otro servidor de correo diferente para enviar emails.

Edite /etc/nagios/contacts.cfg y añada los siguientes usuarios:

define contact{
contact_name                    joe
alias                           Joe Blow
service_notification_period     24x7
host_notification_period        24x7
service_notification_options    w,u,c,r
host_notification_options       d,u,r
service_notification_commands   notify-by-email,notify-by-pager
host_notification_commands      host-notify-by-email,host-notify-by-epager
email                           joe@yourdomain.com
pager                           5555555@pager.yourdomain.com
}

define contact{
contact_name                    paul
alias                           Paul Shiznit
service_notification_period     24x7
host_notification_period        24x7
service_notification_options    w,u,c,r
host_notification_options       d,u,r
service_notification_commands   notify-by-email,notify-by-epager
host_notification_commands      host-notify-by-email,host-notify-by-epager
email                           paul@yourdomain.com
pager                           5556666@pager.yourdomain.com
}
Ahora añada los usuarios a los grupos. En /etc/nagios/contactgroups.cfg añada lo siguiente:
define contactgroup{
contactgroup_name   router_admin
alias               Network Administrators
members             joe
}

define contactgroup{
contactgroup_name   server_admin
alias               Systems Administrators
members             paul
}

Puede añadir múltiples miembros a un grupo de contacto separándolos mediante comas.

Ahora defina algunos hosts para monitorizar. Para mi ejemplo, he definido dos máquinas, un servidor de correo y un router.

Edite /etc/nagios/hosts.cfg y añada:

define host{
use                     generic-host
host_name               gw1.yourdomain.com
alias                   Gateway Router
address                 10.0.0.1
check_command           check-host-alive
max_check_attempts      20
notification_interval   240
notification_period     24x7
notification_options    d,u,r
}

define host{
use                     generic-host
host_name               mail.yourdomain.com
alias                   Mail Server
address                 10.0.0.100
check_command           check-host-alive
max_check_attempts      20
notification_interval   240
notification_period     24x7
notification_options    d,u,r
}

Ahora añadimos los hosts a grupos. He definido grupos llamados 'routers' y 'servers' y añadido el router y el servidor de correo respectivamente.

Edite /etc/nagios/hostgroups.cfg

define hostgroup{
hostgroup_name  routers
alias           Routers
contact_groups  router_admin
members         gw1.yourdomain.com
}

define hostgroup{
hostgroup_name  servers
alias           Servers
contact_groups  server_admin
members         mail.yourdomain.com
}

Otra vez, para múltiples miembros, simplemente sepárelos con comas.

Lo siguiente es definir que servicios hay que monitorizar en cada host. Nagios viene con múltiples plugins para monitorización. En un sistema debian sarge, se encuentran en /usr/lib/nagios/plugins. En este caso queremos monitorizar el servicio smtp en el servidor de correo, y el chequear el ping en el router.

Edite /etc/nagios/services.cfg

define service{
use                     generic-service
host_name               mail.yourdomain.com
service_description     SMTP
is_volatile             0
check_period            24x7
max_check_attempts      3
normal_check_interval   5
retry_check_interval    1
contact_groups          server_admin
notification_interval   240
notification_period     24x7
notification_options    w,u,c,r
check_command           check_smtp
}

define service{
use                     generic-service
host_name               gw1.yourdomain.com
service_description     PING
is_volatile             0
check_period            24x7
max_check_attempts      3
normal_check_interval   5
retry_check_interval    1
contact_groups          router_admin
notification_interval   240
notification_period     24x7
notification_options    w,u,c,r
check_command           check_ping!100.0,20%!500.0,60%
}

Y eso es todo. Para probar su configuración puede ejecutar

# nagios -v /etc/nagios/nagios.cfg

Si todo va bien podemos reiniciar nagios y moverlo al sitio de apache para obtener la vista visual del monitor.

# /etc/init.d/nagios restart

Asumiendo que tiene un apache instalado y funcionando, puede añadir el fichero apache.conf que viene incluido en el paquete nagios para hacer funcionar la interfaz de administración cgi de nagios. La interfaz web no es obligatoria para correr nagios, pero es altamente recomendable. La forma más fácil de tenerla funcionando es copiar el fichero proporcionado sobre su instalación de apache. En mi sistema, tengo corriendo apache2. Los sistemas con apache 1.3.xx tendrán pequeñas diferencias.

# cp /etc/nagios/apache.conf /etc/apache2/sites-enabled/nagios

Por supuesto querrá configurarlo como un servidor virtual, pero dejo esto como ejercicio para el lector. Ahora queremos configurar un usuario con permisos para ver la interfaz cgi. Por defecto, nagios proporciona acceso administrativo completo al usuario nagiosadmin. Nagios usa el estilo de autenticación apache htpasswd. Así que añadimos un usuario y contraseña al fichero htpasswd por defecto de nagios. Aquí añado el usuario nagiosadmin con contraseña mypassword al fichero htpasswd de nagios.

# htpasswd2 -nb nagiosadmin mypassword >> /etc/nagios/htpasswd.users

Ahora puede reiniciar apache y logearse en

http://tu.servidor.nagios/nagios

Nagios es una herramienta muy potente para monitorizar redes. Sólo he tocado lo básico aquí, pero lo suficiente para tenerlo instalado y funcionando. Posiblemente, una vez que lo tenga, empezará a experimentar con las increíbles características y plugins que hay disponibles. La documentación incluida con la interfaz cgi es muy buena y detallada.