Ficheros de ejemplo de Nagios

NagiosHace ya algún tiempo publiqué un par de entradas sobre Nagios, un sistema de monitorización de redes bastante configurable y útil para cualquier administrador. Como algunos de vosotros habéis tenido problemas con los ficheros de configuración, en éste enlace os dejo los ficheros que trae el propio Nagios como ejemplo de uso.

Sobre estos ficheros podéis comenzar a crear vuestra infraestructura, aunque yo os recomiendo partir de esta base pero ir creando los ficheros que vayáis necesitando. Como orientación si no sabéis como localizar el directorio donde deben estar los ficheros, yo lo tengo configurado como /home/nagios/config_nagios. Es probable que si habéis seguido las guias de la web de Nagios lo tengáis de una forma muy similar.

Nagios Checker: Comprobando Nagios desde la barra del Firefox

Nagios CheckerNagios Checker es un plugin para Firefox que nos permite comprobar en nuestra barra del navegador si todo va correctamente en nuestro monitor de Nagios. Nos ayuda a ver de forma simple y precisa todas las incidencias de nuestra red y además ofrece la posibilidad de emitir sonidos para según que incidencias, cosa que está bien para no tener que estar prestanto atención a la web de Nagios o a si el correo que nos acaba de llegar es de una incidencia.

La puesta en marcha es muy simple, ya que solo tenemos que añadir un servidor (podemos añadir todos los que queramos) e indicarle la dirección y el usuario de acceso. Una vez hecho esto, podremos configurar multitud de opciones sobre los sonidos de alerta, filtros para los avisos, horas de servicio e información a mostrar.

Enviar notificaciones vía email con Nagios

Nagios

Una de las funciones más interesantes de Nagios es la notificación de los eventos de la red. Una avería en una línea no es difícil de detectar, suelen ser los usuarios los primeros en quejarse. Pero una caída de un servicio que en ese momento no se está usando es más complida de ver. Para no tener que estar todo el día mirando el monitor del Nagios, existe la opción de crear contactos y que se les notifiquen los eventos de la manera que se elija (email, SMS, …). Obviamente la herramienta más común para estas notificaciones será el correo, ya que no todas las empresas disponen de una pasarela de envío de SMS o similar. Para poder enviarlas nos hará falta un servidor de correo, bien en nuestra propia red como en internet. Paso a relataros como he solucionado yo el tema sin usar un servidor de correo en el equipo del Nagios.

Para empezar, en el fichero de configuración de contactos se deben crear los perfiles de los usuarios a los que se debe avisar, así como los grupos a los que pertenecen.

#definimos un contacto predefinido, para no tener que declarar todas las opciones de cada usuario
define contact{
name contacto-basico
service_notification_period laboral
host_notification_period laboral
service_notification_options w,u,c,r,f,s
host_notification_options d,u,r,f,s
service_notification_commands notify-service-by-email
host_notification_commands notificar-host
register 0
}

#definimos el grupo admins, al que pertenece el contacto dani
define contactgroup{
contactgroup_name admins
alias Administradores
members dani
}

#definimos el contacto dani, con un alias y una direccion de email
define contact{
contact_name dani
use contacto-basico
alias Dani
email dani@ejemplo.es
}

Una vez editados los contactos, nos hace falta añadir el comando al fichero oportuno para que Nagios sepa donde buscarlo. Además configuramos la sintaxis con la que se invocará desde Nagios. En éste caso pasamos varias variables predefinidas en el sistema.

#definimos el comando notificar-host
define command{
command_name notificar-host
command_line /tmp/correo.pl $CONTACTEMAIL$ $NOTIFICATIONTYPE$ $HOSTNAME$ $HOSTSTATE$ $HOSTADDRESS$
}

Por último, debemos crear “correo.pl”, que en éste caso es un script en Perl que nos permitirá el envío de correos. Cambiaremos los parámetros para adaptarlo a nuestras necesidades y lo guardaremos en “/tmp”, como hemos definido en el fichero anterior.

#!/usr/bin/perl
use Net::SMTP;
$destinatario=$ARGV[0];
$tipo=$ARGV[1];
$host=$ARGV[2];
$estado=$ARGV[3];
$ip=$ARGV[4];
$smtp= Net::SMTP-> new ("smtp.ejemplo.es");
$smtp->mail("nagios\@ejemplo.es");
$smtp->to("$destinatario");
$smtp->data();
$smtp->datasend("To: $destinatario\n");
$smtp->datasend("Subject: NAGIOS - $tipo: $host con estado $estado\n");
$smtp->datasend("Notificacion de tipo: $tipo\n");
$smtp->datasend("Equipo: $host ($ip)\n");
$smtp->datasend("Estado actual: $estado\n");
$smtp->datasend();
$smtp->quit;

Una vez configurado todo esto, ya dispondremos de notificaciones vía email. He partido de la suposición de que Nagios está funcionando y configurado y que esto es un añadido, de forma que no haya que configurar nada más. La mejor opción para aprender a configurar Nagios es partir de los ficheros de ejemplo y modificarlos de acuerdo a vuestras necesidades.

EDITO

Para los que necesiten una versión que funcione en con un servidor que requiera autentificación:

#!/usr/bin/perl
use Net::SMTP;
$destinatario=$ARGV[0];
$tipo=$ARGV[1];
$host=$ARGV[2];
$estado=$ARGV[3];
$ip=$ARGV[4];
$smtp= Net::SMTP->new('smtp.ejemplo.com');
$smtp->auth('usuario', 'contraseña');
$smtp->mail('nagios@ejemplo.com');
$smtp->to(”$destinatario”);
$smtp->data();
$smtp->datasend(”To: $destinatario\n”);
$smtp->datasend(”Subject: NAGIOS – $tipo: $host con estado $estado\n”);
$smtp->datasend(”\n”);
$smtp->datasend(”Notificacion de tipo: $tipo\n”);
$smtp->datasend(”Equipo: $host ($ip)\n”);
$smtp->datasend(”Estado actual: $estado\n”);
$smtp->datasend();
$smtp->quit;

Ahora mismo estoy probándolo y no me ha dado problemas. En caso de que queráis hacer un debug, podeis cambiar la línea del servidor por la siguiente:

$smtp= Net::SMTP->new(’smtp.ejemplo.com’, Debug => 1);

Y luego probar el script usando:

./nombre_script.pl dirección_de_correo_de_prueba error equipo estado ip

Nagios y la monitorización de sistemas

NagiosEn el día a día administrando una red corporativa hay que estar pendiente de los equipos críticos que la componen, para minimizar los tiempos de respuesta ante incidencias y adelantarse a las llamadas de los usuarios quejándose de que las cosas no funcionan correctamente.

Para tener todo bajo control sin volverse loco lo mejor es buscarse algo que lo haga por nosotros. En mi caso, desde hace más de medio año, utilizo Nagios. Éste software permite monitorizar una red de forma automática y recibir notificaciones cuando se produzca cualquier problema. Su configuración puede complicarse tanto como nosotros necesitemos gracias a que dispone de diversos plugins para ampliar funcionalidades, con lo que seguramente se adapte a la perfección a nuestra red.

Nagios es un software Open Source con una gran acogida entre los profesionales de IT debido a su sencillez y su potencia. Para trabajar con Nagios nos hará falta disponer de un equipo con acceso a nuestra red, que corra con Linux y que disponga de un servidor web. El proceso de instalación es relativamente sencillo si se siguen los manuales que hay disponibles en la propia página web. Una vez instalado tendremos dos partes bien diferenciadas. Por un lado el interface web, que será una de las formas de ver lo que está pasando en nuestra red. Por otro lado tenemos el proceso con toda su configuración, que es lo más importante ya que es realmente lo que tendremos que adaptar a nuestras necesidades.

El proceso de Nagios se configura usando archivos de texto plano con unas configuraciones establecidas. Por defecto creará unos con datos ficticios para que podamos tomarlos como ejemplo. La configuración puede hacerse un poco árida al comienzo, pero una vez que se ha entendido como funciona, no es difícil ir creando los nuevos objetos a monitorizar. Se puede encontrar una amplia documentación sobre como configurar estos ficheros aquí.

Si veo que os interesa el tema, tal vez me anime a crear un tutorial paso a paso de como configurarlo y os incluya algunos ejemplos que uso en mi trabajo.