Configurando Nagios 3.x (y I)

icono de herramientas Bien, ¿continuamos donde lo dejamos? Tenemos nuestro nagios recien instalado y ahora toca configurarlo, plasmar la topología de nuestra red y monitorizar algunos servicios básicos.

El primer archivo que tenemos que tocar es /usr/local/nagios/etc/nagios.cfg. En el, entre otras cosas, se dicen los archivos de configuración que nagios tendrá en cuenta. En el apartado correspondiente a los objetos, que es lo único que vamos a tocar, localizamos la entrada correspondiente al fichero activo como ejemplo (linux.cfg). Comentamos la línea correspondiente a este fichero e introducimos una nueva con el archivo cfg que usaremos y que se llamará, por ejemplo, mired.cfg. Editamos el archivo nagios.cfg e introducimos los siguientes cambios (en negritas):

# Definitions for monitoring the local (Linux) host
# cfg_file=/usr/local/nagios/etc/objects/linux.cfg

# Definición de nuestra pequeña red local de ejemplo
cfg_file=/usr/local/nagios/etc/objects/mired.cfg

La red que vamos a definir como ejemplo constará de dos servidores windows, dos linux (uno de ellos el propio que alberga a Nagios), un router que nos da salida a Internet y un switch al que están conectados todos ellos. Vamos a crear el archivo mired.cfg en el directorio especificado y en el incluiremos la definición de estos objetos:

define host{
      use linux-server
      host_name nagios
      alias Nagios Server
      address 127.0.0.1
      }

define host{
      use generic-switch
      host_name switch#1
      alias Switch
      address 192.168.0.2
      parents nagios
      }

define host{
      use generic-switch
      host_name router#1
      alias Router ADSL
      address 192.168.0.1
      parents switch#1
      }

define host{
      use linux-server
      host_name intranet
      alias Servidor Linux
      address 192.168.0.3
      parents switch#1
      }

define host{
      use windows-server
      host_name windows#1
      alias Servidor principal del dominio
      address 192.168.0.4
      parents switch#1
      }

define host{
      use windows-server
      host_name windows#2
      alias Servidor secundario del dominio
      address 192.168.0.5
      parents switch#1
      }

Como podeis ver las definiciones son bien sencillas. Esta simpleza deriva de que Nagios usa una estructura jerárquica en la que cada objeto hereda las características definidas previamente en las plantillas que está usando. La declaración de estas plantillas se hace en el archivo templates.cfg. Allí podemos ver, por ejemplo, el contenido del objeto linux-server que, a su vez, se deriva de otro denominado generic-host. Por el momento os digo esto sólo por culturilla porque no nos va a hacer falta. Nos basta con saber que tenemos disponibles las siguientes plantillas para empezar a trabajar con ellas:

  • linux-server
  • windows-server
  • generic-printer
  • generic-switch

Otra cosa interesante es la clausula parents mediante la que especificamos las conexiones entre los diferentes hosts. Como veis la única máquina a la que no le hemos asignado un padre es a la que tiene Nagios instalado. Pensad que esa máquina será el corazón de nuestra red de monitorización porque es desde ella desde donde se ejecutaran todos los comandos.

Aunque aquí no aparece ninguna, una máquina puede tener más de un host como padre (imaginaos una estructura de switches con conexiones redundantes entre ellos). Para ello basta con especificar los nombres de todos los padres que consideremos necesarios separados por comas.

A continuación y en el mismo fichero añadiremos las definiciones necesarias para crear grupos y organizar nuestros objetos y para monitorizar un primer servicio común a todos ellos: el PING

define hostgroup{
      hostgroup_name linux-servers
      alias Servidores Linux
      members nagios, intranet
      }

define hostgroup{
      hostgroup_name windows-servers
      alias Servidores Windows
      members windows#1, windows#2
      }

define hostgroup{
      hostgroup_name switches
      alias Electrónica de red
      members switch#1, router#1
      }

define service{
      use generic-service
      host_name nagios, intranet, switch#1, router#1, windows#1, windows#2
      service_description PING
      check_command check_ping!200.0,20%!600.0,60%
      normal_check_interval 5
      retry_check_interval 1
      }

La definición de los grupos es autoexplicativa ¿verdad? Luego nos serviran para organizar las vistas adecuadamente. Y desde luego que esta clasificación no es obligatoria. Podeis crear grupos en función del entorno donde estén las máquinas (desarrollo, preproducción, producción), la localización geográfica, el color de la carcasa… a vuestro rollo, vamos.

Para los servicios quizás sea necesario contar algunas cosas más. Como podemos ver el servicio que hemos definido también deriva de un objeto denomimado generic-service y que también se encuentra en el archivo templates.cfg. Podemos echarle allí un vistazo a esa definición pero por el momento no conviene que os despisteis y lo más interesante es la linea etiquetada como check_command que es donde realmente invocamos al comando que se va a encargar de monitorizar el servicio con una curiosa estructura de argumentos separados mediante signos de exclamación. Para comprender lo que estamos haciendo realmente tenemos que echar mano del fichero commands.cfg. Alli buscamos la definición del comando check_ping:

# ‘check_ping’ command definition
define command{
      command_name check_ping
      command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
      }

$USER1$ es una variable que apunta al directorio donde se encuentran los plugins (/usr/lib/nagios/plugins/) y $HOSTADDRESS$ es la IP del host que estamos monitorizando. Los argumentos que invocamos separados por signos de exclamación se sustituyen aquí por los $ARG1$ y $ARG2$. Es decir, cuando Nagios lanza esta comprobación para, por ejemplo, la máquina que aloja nuestra intranet está ejecutando lo siguiente:

/usr/lib/nagios/plugins/check_ping -H 192.168.0.3 -w 200.0,20% -c 600.0,60% -p 5

No creo que por el momento merezca la pena meterse en muchas interioridades pero básicamente lo que hacemos (y esto es común para casi todos los scripts que monitorizan servicios en Nagios) es pasar un umbral que consideraremos como warning y otro como critical (-w y -c respectivamente). Si te interesa saber más sobre lo que realmente estás haciendo basta con que ejecutes el comando con un -h.

Conocer como funcionan realmente los comandos de nagios es muy importante porque cuando empecemos a desarrollar nuestros propios scripts o queramos modificar los que vienen por defecto lo mejor es ejecutarlos directamente desde línea de comando y comprobar la salida que dan hasta que estemos satisfechos.

Y, si os parece, lo dejamos aquí por el momento. En la próxima entrega añadiremos algunos servicios más y adornaremos con iconos apropiados el mapa de nuestro sistema.

42 comentarios

  1. Buenas tardes alguien sabe como acceder a nagios via web desde otra pc de la red, puedo accesar desde el mismo linux pero ya en otra pc no hay paso, hice ping a la ip y me responde bien pero no me deja entrar al nagios, tengo configurada mi laptop con la ip 192.168.150.3 y el nagios esta en linux con la ip 192.168.150.2 estamos en mismo rango pero no puedo entrar, si alguien sabe me gustaria me ayudaran con el caso, saludos.

  2. Hola. Exelente Tutorial y como dices, muestra lo fácil que puede resultar ser Nagios.
    Pero quisiera preguntarte si de casualidad ya tendrás la tercera parte.
    Gracias por tu excelente aporte.

  3. Muchas gracias, venia buscando desde hace un tiempito el uso del Nagios, y que mejor que este post; quisiera que me guiaras en algo, se ha instalado uan red inalambrica en la ciudad de ica y se quiere monitorear esta red, pasare a describir los puntos claves:

    La red cuenta con 3 nodos, el punto de partida para los otros 2 se encuentra en una universidad.
    Cada nodo cuenta con 1 antena y placa alix, software libre llamado Voyage, la ip de cada es 10.x.x.x

    Se quiere monitorear la red desde una de las pc del lab de la universidad, la antena de la universidad se encuentra conectada al router de un lab, y la pc donde se quiere monitorear se encuentra conectada al mismo router.
    Se esta usando un programa para redireccionar la ip dinamica del router a una ip fija, el programa es el DynDNS, como haria para monitorear las redes instalas que es lo que me interesa,
    Se que el primero ip es el 192.168.x.x, los otros ya son 10.x.x.x, quisiera saber si se puede monitorear redes inalambricas y si se puede agradeceria algun aporte……
    de antemano muchas gracias

  4. yo ya tengo configurado nagios pero me sale el mismo error
    The requested URL /nagios/cgi-bin/statusmap.cgi was not found on this server.

    Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny2 with Suhosin-Patch Server at

    y ya instale todas las liberias y las trato de instalar otra ves y me dice que estan en la version mas recienteque podra ser???

    por que e tratadode buscar el problema y no lo encuentro….

  5. Jose Maria, se agradece la orientación, muy bueno tu manual ….

    Tengouna consulta:
    Al tratar de ver a travez de la consola web el status map, me arroja el siguiente error:

    Not Found

    The requested URL /nagios/cgi-bin/statusmap.cgi was not found on this server.

    Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny2 with Suhosin-Patch Server at

    Porque se puede estar generando, he revisado paso a paso la instralación, pero no encuentro el problema..
    Gracias por tu ayuda.-

  6. HOLA MARIO,

    HE INSTALADO RECIEN NAGIOS 3.0.6 Y TENGO PROBLEMAS CON EL STATUSMAP.CGI ? ME LASE EL SIGUIENTE ERROR EN NAGIOS :

    ??HTTP 404 – Archivo no encontrado
    Internet Explorer?

    BUSQUE EL ARCHIVO EN EL SERVIDOR Y ESTE NO SE ENCUENTRA, QUE PUEDO HACER? SABES SI ESTA NUEVA VERSION NO LO TRAE??? HE VISTO QUE A MUCHOS LES PASA LO MISMO? QUE PUEDE SER? ME GUSTARIA QUE ME AYUDARAS PORFA?

    obs:lo busque ne la siguiente ruta :::

    /usr/local/nagios/sbin/

    solo aparece esto:

    -rwxrwxr-x 1 nagios nagios 217672 dic 9 16:03 avail.cgi
    -rwxrwxr-x 1 nagios nagios 217012 dic 9 16:03 cmd.cgi
    -rwxrwxr-x 1 nagios nagios 184840 dic 9 16:03 config.cgi
    -rwxrwxr-x 1 nagios nagios 234024 dic 9 16:03 extinfo.cgi
    -rwxrwxr-x 1 nagios nagios 172584 dic 9 16:03 history.cgi
    -rwxrwxr-x 1 nagios nagios 168488 dic 9 16:03 notifications.cgi
    -rwxrwxr-x 1 nagios nagios 160264 dic 9 16:03 outages.cgi
    -rwxrwxr-x 1 nagios nagios 164808 dic 9 16:03 showlog.cgi
    -rwxrwxr-x 1 nagios nagios 225832 dic 9 16:03 status.cgi
    -rwxrwxr-x 1 nagios nagios 180776 dic 9 16:03 statuswml.cgi
    -rwxrwxr-x 1 nagios nagios 168488 dic 9 16:03 statuswrl.cgi
    -rwxrwxr-x 1 nagios nagios 184904 dic 9 16:03 summary.cgi
    -rwxrwxr-x 1 nagios nagios 180840 dic 9 16:03 tac.cgi

    Quedo atento a sus noticias

    SLDS.,

  7. Hola, instale el monitoreo pero realice algunos cambios, estos cambios son el nombre de estos equipos ademas de crear nuevos grupos, a raiz de estos cambios no me muestra todos los iconos de los equipos que estoy monitoreando, creo que lo que esta haciendo es buscar aun los equipos que estaban antes de modificarlos y cuasa algun conflicto esto, si me pueden orientar para saber que necesito cambiar, GRACIAS.

  8. HOLA, TENGO UN PROBLE CON LA INSTALACION DE NAGIOS Y QUISIERA QUE ME AYUDARAN, AL ENTRAR A CONFIGURAR TODO LO DE LARED ME VOTA UN ERROR QUE NO ENCUENTRA LOS CGI.POR FAVOR AYUNDENME!!!!!!!!!

  9. Switch con IP? Yo aqui lo que veo es un router ADSL conectado a un switch y 4 equipos. Nagios:192.168.0.2(esta es la ip que le has puesto el switch). Linux server2:192.168.0.3. Windows1:192.168.0.4, Windows2:192.168.0.5 y el router adsl que seria el .1 No veo ningun switch con IP. la IP que marca el switch es la ip de el servidor linux con Nagios ¿no?

    Gracias por el manual y saludos.

  10. Hola Juan Carlos. Si el switch no tiene IP no se puede monitorizar desde nagios. En estos casos y si quieres que figure en tu mapa por coherencia lo que yo suelo hacer es crear un objeto con el icono de un switch y la dirección IP 127.0.0.1 de forma que siempre que la máquina con nagios esté funcionando te lo va a detectar también como activo. Realmente no estás midiendo nada pero te sirve como representación simbólica de tu red.

  11. Hola que tal, he seguido tu manual y estoy probando Nagios.. pero tengo una confusion.. quisiera probar con una red muy pequeña para ir avanazando poco a poco.. Asi que quisiera agregar a mi red solo lo siguiente:

    Host 1: localhost —> Donde esta corriendo mi nagios..

    Host 2: Switch 1 —> padre –> nagios

    Host 3: Maquina con Debian– > padre –> Switch 1

    mi duda es la siguiente.. el switch q tengo no es configurable es decir no puedo ver su ip.. o no se como se la asigna.. como puedo agregar este host?? q coloco en el campo address ?? es un simple switch de 8 puertos..

    muchas gracias..! espero que me puedas ayudar!

  12. «…La definición de los grupos es auto explicativa ¿verdad? Luego nos servirán para organizar las vistas adecuadamente…»

    He configurado mi nagios con varios grupos bien definidos pero aun no logro que en el cgi se organice la información.

    No se si podrías mas adelante guiarnos en cómo organizar las vistas.

    Desde ya muchas gracias.

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