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.

Copias de seguridad automáticas en servidores web

Copia de respaldoAlgo de lo que muchas veces nos olvidamos al montar nuestras webs y de lo que solemos acordarnos cuando ocurre una desgracia es de las copias de seguridad. Tener un buen protocolo de copias de seguridad y de restauración es fundamental cuando de verdad nos importa nuestro proyecto.

Hoy en día la mayoría de las webs guardan dos tipos de información: el contenido en una base de datos y la configuración de la web, plugins, plantillas, etc en el sistema de ficheros del servidor. Teniendo en cuenta esto, os voy a explicar de forma sencilla como hago yo las copias de estos dos elementos de forma automática.

Para empezar, hace falta cumplir algunos requisitos para poder adaptar el método que aquí explico.

  • El servidor debe trabajar en Linux
  • Se debe tener acceso mediante SSH (Secure SHell)
  • Debemos tener disponible el demonio CRON
  • El servidor de base de datos debe ser MySQL

En primer lugar debemos definir un directorio de trabajo dentro del servidor, que será donde alberguemos los scripts y donde guardaremos las copias de seguridad. La mejor opción es ponerlo fuera del directorio propio de la web, aunque hay servidores que no contemplan esta opción y que todo el directorio del usuario está publicado en la red. En éste caso conviene proteger el directorio para que nadie pueda tener acceso.

Ahora que tenemos el directorio listo, debemos crear los scripts. Como ya he comentado antes, vamos a separar la copia de base de datos de la de los archivos. Comenzaremos por la base de datos. En el siguiente script debéis cambiar los datos en negrita por los de vuestro servidor, si poner comillas ni nada similar.

#!/bin/bash
# Obtiene la fecha para el archivo
FECHA=`date +%m%d`
mysqldump --opt --host=servidor --user=usuario --password=password base_de_datos > bd.sql
zip -q bd/bd$FECHA.zip bd.sql
rm bd.sql

Una vez reemplazada la información necesaria, lo guardaremos con extensión .sh y luego desde la línea de comandos le cambiamos los permisos (chmod 744 script.sh). Lo que hará el script es descargar la base de datos a un fichero sql y luego lo comprimirá en una subcarpeta llamada bd añadiendo la fecha de la copia y luego borrará el fichero sql anterior. Una vez hecho esto, ya podemos editar la configuración del Cron con el comando crontab -e. Incluiremos una entrada en el fichero indicando cuando queremos que se ejecute. En mi caso le indico que debe ejecutarse siguiendo el esquema 0 0 * * *, es decir, a las 0:00 todos los días de todos los meses. Tras indicar cuando lo queremos, se debe añadir donde encontrar el fichero con el script. Estos pasos son los que pueden resultar más complicados si no se tienen unos mínimos conocimientos sobre linux, así que si alguno necesita alguna aclaración, no tiene más que pedirla en los comentarios.

Para copiar los ficheros de la web, tendremos que usar otro script:

#!/bin/bash
# Obtiene la fecha para el archivo
FECHA=`date +%m%d`
zip -qr archivo_destino.zip carpeta_origen

Ahora solo deberemos configurar que carpeta queremos guardar comprimida y en donde y luego añadir otra entrada en el Cron. Yo normalmente realizo una copia semanal, ya que raro es que se cambien los ficheros importantes de la web.

A grandes rasgos éste es el método que yo empleo para realizar mis copias y por ahora siempre me ha dado buen resultado. Un buen consejo es que una vez configurado el método hay que comprobar que se puede recuperar la web desde los ficheros, ya que más de una vez ha pasado que estos no se creaban como era debido y uno se entera demasiado tarde.

Cualquier duda, os podéis poner en contacto conmigo o bien a través de los comentarios o a través del formulario de contacto.

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.

Deshabilitar el reinicio automático de Windows Update

Windows UpdateHay pocas cosas que molesten más cuando estás trabajando con Windows que se ponga a instalar actualizaciones y al terminar te inste a reiniciar cada 15 minutos con una cuenta atrás. Tu te levantas tan tranquilo un momento, dejas tus archivos sin guardar y si a don Windows se le da por reiniciarse, cuando llegas se te queda la carita de tonto al ver que has perdido el informe en el que llevas tres horas trabajando.

Hay una forma de cambiar esto para que no sea tan intrusivo, no es algo que esté muy al alcance del usuario medio, pero no es nada difícil de conseguir. Os dejo los pasos a seguir.

  1. En el menú Inicio, buscar “Ejecutar”.
  2. Escribir “gpedit.msc” y aceptar.
  3. Se nos abre el editor de políticas. Tendremos que abrir la ruta que aparece en la captura y hacer doble clic en las dos entradas que aparecen como habilitadas.

    GPEdit

  4. En la opción “no reiniciar automáticamente…” simplemente tendremos que seleccionar el valor habilitado, mientras que en “volver a pedir intervención…” tendremos que definir el valor más alto, 1440 para que no nos vuelva a pedir que reiniciemos.

Con estos pasos nos ahorramos el andar pendientes de darle a reiniciar más tarde antes de que nos lo haga solo Windows y que además no nos insista cada 15 minutos.

Portátiles en la oscuridad, soluciones curiosas de HP

HP ElitebookHace ya algún tiempo que no es raro encontrarse con un portátil que trae de serie teclado retroiluminado, para poder usarlo en condiciones de poca luz. Reconozco que soy incapaz de utilizar un teclado si en la habitación no hay un mínimo de luz, incluso aunque no me haga falta mirar para él. Por eso desde que tengo mi Macbook Pro, con teclado retroiluminado, no he vuelto a tener éste problema. Me parece una de esas cosas que si no tienes no la echas de menos, pero que una vez has probado, no puedes vivir sin ella.

Toda esta reflexión viene a cuento de que el viernes pasado nos llegó a la oficina el último portátil que habíamos pedido a nuestro distribuidor, un HP de la serie Elitebook. El aspecto externo está bastante cuidado, aunque yo en estos casos siempre me acuerdo de los espectaculares Unibody de Apple. El caso es que al abrirlo me he encontrado con un detalle que ha llamado poderosamente mi atención. Un botón y una tapita en el lugar donde normalmente te puedes encontrar la webcam. Al presionar el botón aparece un pequeño led que apunta al teclado, iluminándolo de forma muy ténue. La verdad es que para los tiempos que corren me parece que es una solución un poco cutre, ya que por lo que me ha comentado mi amigo Alex, hace muchos años que los IBM incluían esta lamparilla de cortesía.

Como abrir documentos de Office 2007 con versiones anteriores

Office 2007Desde hace ya casi un año, vengo disfrutando en mi casa del placer de haber dejado a un lado Windows y sus problemas tras haberme pasado a la plataforma Mac. Ahora hasta se me hace raro trabajar en un PC, donde las facilidades que me brinda mi Macbook Pro no existen.

Lamentablemente en casa tengo cuatro equipos con Windows XP a los que me veo obligado a dar soporte. Uno de los problemas que más a menudo me estoy encontrando últimamente es que a mi hermano le están enviando trabajos en docx, el nuevo formato que por defecto usa el Office 2007 y que no es compatible con las versiones anteriores. Y como cada vez más compañeros tienen éste Office, te ves forzado a actualizarte o pedirles de nuevo el fichero en un formato realmente estándar.

Al menos hasta hace un tiempo, ya que Microsoft, consciente de esta molestia, ha decidido sacar un parche para que los Office antiguos puedan abrir los nuevos documentos. Para obtenerlo no tenéis más que buscarlo en la página de Microsoft o descargarlo del siguiente enlace:

Paquete de compatibilidad de Microsoft Office para formatos de archivos de Word, Excel y PowerPoint 2007.

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