Configurando Nagios 3.x (y III)

icono de herramientasContinuamos donde lo dejamos. Una de las cosas que tenemos pendiente es hacer que nagios nos notifique las alertas que detecta, porque si tenemos que estar pendientes de las pantallas de estado en todo momento la cosa, después de las primeras horas, no tiene tanta gracia ¿verdad? Para ello lo único que tenemos que hacer es editar el fichero /usr/local/nagios/etc/objects/contacts.cfg y modificar la dirección de correo del contacto que trae por defecto por la nuestra:

define contact{
     contact_name nagiosadmin ; Short name of user
     use generic-contact ; Inherit default values from generic-contact template (defined above)
     alias Nagios Admin ; Full name of user
     email alertas.nagios@midominio.es ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******      }

Si lo del aviso por correo electrónico se nos queda corto existen al menos una solución comercial que permite que nagios nos alerte a través de SMS. Referencias aquí.

Ahora vamos a añadir algunos plugins que requieran de alguna configuración adicional para que veais que también es muy sencillo. Empezamos por uno que nos compruebe el estado de un servidor de mysql. El plugin necesario (check_mysql) viene con nagios aunque no está configurado para su uso. Lo primero que tenemos que hacer es abrir un shell, irnos al directorio de plugins y ver que entrada necesita:

nagios:/usr/lib/nagios/plugins# ./check_mysql -h
check_mysql (nagios-plugins 1.4.8) 1.35
Copyright (c) 1999-2006 Nagios Plugin Development Team

This program tests connections to a mysql server

Usage:check_mysql [-d database] [-H host] [-P port] [-u user] [-p password] [-S]

Parece evidente ¿no? Creamos un usuario con privilegios mínimos en nuestro servidor de mysql (el mismo que aloja la intranet en este ejemplo) y probamos:

nagios:/usr/lib/nagios/plugins# ./check_mysql -H 192.168.0.3 -u nagios-test -p nagios-test-pass
Uptime: 17940713 Threads: 1 Questions: 796357 Slow queries: 0 Opens: 33 Flush tables: 1 Open tables: 27 Queries per second avg: 0.044

Funciona. Con esta información hacemos una plantilla para este servicio en el archivo commands.cfg:

define command{
     command_name mycheck_mysql
     # check_mysql [-d database] [-H host] [-P port] [-u user] [-p password] [-S]
     command_line /usr/lib/nagios/plugins/check_mysql -H $HOSTADDRESS$ -u nagios-test -p nagios-test-pass
     }

Y, finalmente, en el archivo mired.cfg definimos el servicio listando los hosts que queremos que se comprueben con el:

define service{
     use generic-service
     host_name intranet
     service_description MYSQL
     check_command mycheck_mysql
     }

Ha sido fácil ¿verdad? Un par más y acabamos. Ahora necesitamos comprobar la carga de CPU y ocupación de memoria de nuestros controladores de dominio de windows. Nagios trae plugins para hacerlo pero requieren instalar un servicio específico en los servidores a monitorizar y a mi, existiendo SNMP, esto no me parece necesario. Así que nos damos una vuelta por el directorio de plugins de Nagios Exchange hasta encontrar algo que nos venga bien. Allí encontramos dos plugins escritos en perl que pueden servirnos: check_winmen y win_check_cpuload. Los descargamos, descomprimimos, emplazamos en el directorio de plugins de nagios y repetimos el mismo procedimiento de antes. Primero comprobar la entrada que necesitan desde la línea de comandos:

nagios:/usr/lib/nagios/plugins# perl check_win_snmp_cpuload.pl

######## check_win_snmp_process.pl ########
# Version : 1.0
# Date : Dec 20 2005
# Author : Benjamin Jakubowski
# Help : http://www.xenux.net
# Licence : GPL - http://www.fsf.org/licenses/gpl.txt
####################################
check_win_snmp_cpuload.pl IP COMMUNITY PORT warning critical

nagios:/usr/lib/nagios/plugins# perl check_winmen.pl

######## check_winmem ########
# Version : 1.0
# Date : Apr 11 2006
# Author : Peter Stimpel
# Thanks to Benjamin Jakubowski for the idea to walk through snmp
# Help : http://www.peters-webcorner.de/nagios/
# Licence : GPL - http://www.fsf.org/licenses/gpl.txt
####################################
check_winmem IP COMMUNITY warnlevel criticallevel

check_winmem -v for version info

Al igual que en otras ocasiones, vemos que este tipo de plugins requiere que le definamos los niveles que vamos a considerar como warning o crítico. Aunque aquí no aparece especificado en la documentación que acompaña a los plugins nos dice que han de expresarse en porcentajes. Por cierto: no voy a pararme a explicaros como definir y configurar el servicio de SNMP en un servidor windows pero es evidente que hay que hacerlo, además de autorizar en el mismo a nuestro servidor nagios para que pueda recoger estos datos.

Seguimos. Al igual que hicimos antes probamos primero sobre línea de comandos:

nagios:/usr/lib/nagios/plugins# perl check_winmen.pl 192.168.0.4 mi_comunidad_snmp 75 95
OK MEM: usage 20.59 perc - 209064 KBytes of 1015248 KBytes -w 75 -c 95

nagios:/usr/lib/nagios/plugins# perl check_win_snmp_cpuload.pl 192.168.0.4 mi_comunidad_snmp 161 75 90
OK : CPU load HOST-RESOURCES-MIB::hrProcessorLoad.2 = INTEGER: 0 %

Luego con estos datos creamos las plantillas en commands.cfg (observad que, al igual que en línea de comandos, necesitamos ejecutarlos a través del intérprete de perl):

define command{
     command_name check_winmen
     # perl check_winmen.pl IP COMMUNITY warnlevel criticallevel
     command_line /usr/bin/perl /usr/lib/nagios/plugins/check_winmen.pl $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$
     
}

define command{
     command_name check_cpuload
     # perl check_snmp_cpuload.pl IP COMMUNITY PORT warnlevel criticallevel
     command_line /usr/bin/perl /usr/lib/nagios/plugins/check_win_snmp_cpuload.pl $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $ARG4$
     }

Y, finalmente, la definición de los servicios en mired.cfg:

define service{
     use generic-service
     host_name windows#1, windows#2
     service_description Ocupacion de memoria
     check_command check_winmen!ietcc!75!95
     normal_check_interval 5
     retry_check_interval 1
     
}

define service{
     use generic-service
     host_name windows#1, windows#2
     service_description CPU Load
     check_command check_cpuload!ietcc!161!75!90
     normal_check_interval 5
     retry_check_interval 1
     }

Monitorizando la salida a internet con nagiosPara acabar un último truco que suelo usar en las instalaciones. Para comprobar que la salida a internet es correcta suelo elegir un par de servidores públicos y añadirlos en mi configuración colgando de nuestro router de salida a internet. De esta forma ya no sólo comprobamos que nuestro router está encendido y responde a los pings sino que está operativo y nuestro proveedor de servicios no está fallando. Nos quedaría por comprobar que nuestros DNS resuelven correctamente (aquí la comprobación la estamos haciendo por IP) pero eso os lo dejo a vosotros como ejercicio ¿vale? El plugin que necesitais para ello se llama check_dns y acompaña a la distribución estándar de nagios. No tiene pérdida. Ah, lo de usar los servidores de microsoft y terra no es porque me fie especialmente de ellos sino porque siempre prefiero hacerle un ping a intervalos regulares a alguien que no me caiga bien 😉

Y bueno... Con esto concluyo el tema que me tengo que ir de vacaciones. Mi intención era demostrar que configurar un sistema con Nagios y dejarlo operativo y funcional es bien sencillo. Pero la cosa no acaba aquí. Nagios permite mucho más de lo que hemos visto. La librería de plugins disponibles es enorme y si aun así ninguno cumple lo que necesitamos para una necesidad muy específica podemos seguir esta guía de desarrollo para hacernos uno a medida en C, perl, python, shell script o practicamente lo que nos de la gana. Para entornos muy críticos, aparte de la notificaciòn por SMS que hemos apuntado antes existen dispositivos hardware que nos permiten controlar la temperatura, humedad relativa, iluminación, estabilidad de la tensión, presencia de líquidos, intrusiones, vibraciones, etc.

Y si estás haciendo una propuesta técnica en tu departamente y tienes dudas de que tus superiores te autoricen a usar una solución open source échale un vistazo al directorio de empresas y organismos que usan nagios y elige las que crees que van a impresionarle más. Seguro que las encuentras...

70 comentarios

  1. Felicidades por este genial tutorial.

    Ocurre que me he encontrado este problema ( igual que el comentario franconero baeza el 10 de diciembre de 2008 a las 3:57 pm ) (Return code of 127 is out of bounds – plugin may be missing)

    Se que el plugin esta perdido o no lo encuentra pero como instalo ese plugin de donde lo saco??
    Porque ya lo he buscado por la red y no encuentro como instalar este check_snmp.

    Muchísimas gracias y quedo a tu respuesta.

    ¡¡¡¡ PD: FELIZ 2012 Y FELICES REYES ¡¡¡¡¡

  2. Fantástico el tutorial. El que mejor me ha servido de todo lo visto en la red.
    Te animo a seguir ampliando para los que nos cuesta más trabajo entender todo esto. Ha sido muy grato.

    Enhorabuena, gran trabajo.
    Jose Mas

  3. Saludos José María.

    tengo una pregunta. ¿cómo le puedo hacer para que un servicio en especial, de todos los que tengo las alertas las mande a otro email?

    gracias saludos.

  4. Hola, tengo nagios instalado en una máquina virtual. Quiero monitorizar la temperatura, pero el hddtemp, espera un disco físico.

    [root@vz]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/simfs 6.0G 2.5G 3.6G 42% /
    none 929M 4.0K 929M 1% /dev
    [root@]# hddtemp /dev
    ERROR: /dev: can’t determine bus type (or this bus type is unknown)
    [root@]# hddtemp /dev/simfs
    /dev/simfs: open: No such file or directory

    ¿Hay alguna forma de indicarselo? ¿Lo instalo en la máquina madre y lo cojo por nrpe?
    Mil gracias

  5. mi consulta es la siguiente.
    estoy chequeando los servicios de mi servidor de correo (pop3, smtp, imap) y los mismos funcionan perfecto,

    pero yo en mi server de correo tengo deshabilitada la respuesta de «ping» desde el exterior.

    La pregunta seria como puedo seguir comprobando dichos servicios pero sin que tmb me compruebe el «ping» que lo hace por defecto.

    Espero que se entienda ya que me aparece el servicio de host en rojo pero los 3 servicio que tienen asociados con el (ok) en verde. la idea es chequear el servicio pero no el host.

    Gracias desde Ya.

  6. Estimado Jose Maria,
    Me estoy iniciando en la configuracion del Nagios, quisiera saber si cuando defino una cuenata gmail, por ejemplo las notificaciones me llegaran solo cuando haya una perdida de comunicacion? y lo mas importante como podria configurar el postfix de la máquina donde está nagios para que haga un relay hacía el servidor de correo de la empresa donde está instalado y sea este el que lo envíe a destino para que no sea detectado como span como mencionas lineas arriba?, gracias

  7. Estimados, sabe alguno porque razon Centreon no me muestra los servidores que si veo en Nagios?, no veo nada aunque los haya agregado en los host y en los servicios pero en monitoreo ni report sale nada.

  8. He isntalado en una maquina virtual de linux nagios correctamente, mirando la guia de monitorizar equipos windows he instalado el nsclient++ en la mismo equipo que tiene windows xp como sistema operativo principal y no se monitorizar mas host, ¿alguien me puede ayudar porfavor?

    Gracias.

  9. Hola como estas? estoy realizando un proyecto en nagios y quisiera saber, (soy muy novato y estoy empezando de cero en nagios. quisiera saber si para montar un mapa en nagvis primero hay que tener la red montada en nagios) Necesito ayuda por favor.

  10. Buenas Jose Maria,
    veo que ers un apasionado de Nagios y me veo con la necesidad de consultarte.

    Estoy intentado monitorizar Nagios con Asterisk, a pesar de que he revisado bastantes foros y tutoriales cada vez que agrego un servicio o m da error de configuración y no puedo reiniciar Nagios o por lo contrario si me deja reiniciar satisfactoriamente, incluso veo el servicio pero en continuo estado CRITICAL y sin Informacion sobre ese Estado.

    Ojala puedas ayudarme, un saludo.

  11. hola,

    me estaba funcionando bien el nagios, nos enviaba las alertas a mi cuenta de correo en exchange 2007, pero nos instalaron un nuevo firewall sisco asa 5510, saben si hay que crear alguna regla en especial. apreciare mucho su ayuda.

  12. Si bueno todo mundo dice que el Centreon esta chido y yo ya lo instale:
    http://lindasantini.wordpress.com/2009/07/16/centreon/
    También instalé el Nagios y ya agregué host y servicios en el Nagios ahora ¿alguien sabe como demonios agregar host y servicios en el Centreon o que tome los del nagios que yo instale aparte?
    Bueno si saben : lindaosnet@gmail.com
    Porque la neta ya me fastidie y no le hayo por donde pinche porkeria del Centreon, si se ve bonito pero es un rollo instalarlo y agregar host y servicios y eso que se ve amigable

  13. saludo tengo un problema: cuando agrego un host windows utilizando los comandos que tu pones en el scrip, reinicio el servicio de nagios, me arroja el error de que existe un problema en el archivo de configuracion y no levanta. quito el host windows y levanta bien. que puede ser?

  14. Josemaría:

    Tu ayuda en este tema. Tengo muchos equipos cisco los cuales los quiero monitorear por SNMP. Tengo el SNMP listo en mi ubuntu, pero ¿tengo que compilar algun plugin? como declaro el servicio para chequear las interfaces y cosas por el estilo??

    Saludos

    gracias

  15. Joe: enviarse esos correos se pueden enviar, lo que pasa es que casi con toda seguridad seran rechazados como si fuese spam. Yo suelo configurar el postfix de la máquina donde está nagios para que haga un relay hacía el servidor de correo de la empresa donde está instalado y sea este el que lo envíe a destino para que no ocurra esto.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información

ACEPTAR
Aviso de cookies