Cómo añadir un nuevo servicio para monitorizar en Nagios. Nagios es un sistema open source (código abierto) y gratuito para monitorizar servicios y equipos de una red. Permite avisar mediante email cuando el comportamiento de un servicio de un hosts no es el deseado. Nagios funciona en sistemas operativos Linux y Unix.

Nagios permite monitorizar servicios de red (SMTP, POP3, HTTP, NTTP, ICMP, SNMP), recursos de un host (carga del procesador, uso de los discos, logs del sistema). También permite notificar a los contactos cuando ocurren problemas en servicios o hosts, así como cuando son resueltos (vía email, pager (busca), SMS, o cualquier método definido por el usuario).

A continuación explicamos cómo añadir la monitorización de un nuevo servicio de un host a Nagios. Para ello, en primer lugar identificaremos la IP del host y el nombre del servicio a monitorizar.

Desde «Inicio» – «Ejecutar», en el host a monitorizar con Nagios, introduciremos «cmd» y pulsaremos «Aceptar». En la ventana de MS-DOS escribiremos el comando:

ipconfig

Inicio - Ejecutar - Windows - Línea de comandos

Como resultado nos mostrará la IP del host, que necesitaremos posteriormente para añadir el servicio a Nagios. Esta IP aparece en «Dirección IP». Supongamos que es 192.168.194.1:

Ventana MS-DOS - Ejecución comando ipconfig

A continuación identificaremos el servicio que queramos monitorizar, para ello accederemos a «Inicio» – «Ejecutar» y escribiremos «services.msc». En la ventana de «Servicios» buscaremos el servicio en cuestión y haremos doble clic sobre él. En la ventana de Propiedades del servicio, anotaremos el «Nombre de servicio», que será el que necesitemos para añadirlo a Nagios, en nuestro caso «ScanMail_Master»:

Ventana de propiedades de servicio de Windows

Por último, también deberemos saber el puerto TCP que utiliza el servicio a monitorizar, que será la forma que tendrá Nagios de comprobar que el servicio está activo. El puerto dependerá del servicio, lógicamente un servicio HTTP utilizará el puerto 80 (normalmente), un servicio SMTP utilizará el puerto 110. Para nuestro caso, «ScanMail_Master» utiliza el puerto 16372.

Tras identificar el host, el servicio y el puerto, accederemos al equipo que tenga instalado Nagios, será un equipo con Linux como sistema operativo. Si accedemos desde un equipo Windows podremos utilizar algún cliente SSH, como por ejemplo PuTTY. Supondremos para este artículo que el servidor Linux con Nagios tiene como IP 192.168.194.100:

Ventana de conexión de PuTTY

Introduciremos un usuario y contraseña del sistema operativo Linux donde tenemos instalado Nagios con suficientes permisos para añadir y modificar ficheros en la carpeta de instalación de Nagios:

PuTTY - Acceso mediante SSH a servidor Linux Nagios

Antes de modificar el fichero donde se encuentran los servicios a monitorizar de Nagios (en nuestro caso /etc/nagios/services.cfg), abriremos el fichero /etc/nagios/hosts.cfg, para comprobar que nuestro host está dado de alta en este fichero, con una estructura como esta:

Donde:

  • notification_options: en las opciones de notificación, podremos indicar que muestre
    • d (down): activo, devuelve el ping correctamente.
    • u (unreachable): inalcanzable, no devuelve solicitud de ping.
    • r (recovered): recuperado, activo tras una solicitud de ping unreachable (inalcanzable).
  • notification_period: período de notificación, por defecto 24×7 indica las 24 horas del día, los 7 días de la semana.
  • notifications_enabled: habilitar, deshabilitar notificaciones.
  • address: dirección IP del host.
  • max_check_attempts: determina con qué frecuencia se comprobará el servicio después de un error.
  • notification_interval: indica los minutos en los que se repetirá la notificación de un cambio en el estado del servicio. Si el servicio ha cambiado de estado y no vuelve a su estado OK, se repetirá la notificación en los minutos indicados. Si se indica «0», sólo se notificará una vez (cuando el servicio cambie de estado).
  • check_command check-host-alive: indicamos a Nagios que compruebe si el servidor está activo mediante una solicitud de ping.

Si no existe este host en el fichero hosts.cfg lo creamos, con la misma estructura indicada anteriormente. Para ello podremos utilizar algún editor de texto en Linux, como vi.

Tras crear el hosts en el fichero hosts.cfg, a continuación añadiremos el servicio en cuestión al fichero services.cfg, para ello lo editaremos con vi, introduciendo el siguiente comando Linux:

sudo vi /etc/nagios/services.cfg

Para editar el fichero con vi pulsaremos la tecla «a», nos iremos al final del fichero y añadiremos las siguientes líneas de texto:

Para guardar los cambios con vi, pulsaremos la tecla Escape y, a continuación las teclas «:wq».

Tras añadir el nuevo servicio al fichero services.cfg podremos comprobar si los datos introducidos son correctos, para ello ejecutaremos el comando:

sudo nagios -v /etc/nagios/nagios.cfg

Como resultado de la ejecución devolverá algo así:

Nagios 1.3
Copyright (c) 1999-2004 Ethan Galstad (nagios@nagios.org)
Last Modified: 10-24-2004
License: GPL
Reading configuration data…
Running pre-flight check on configuration data…
Checking services…
Checked 190 services.
Checking hosts…
Checked 177 hosts.
Checking host groups…
Checked 5 host groups.
Checking contacts…
Checked 11 contacts.
Checking contact groups…
Checked 5 contact groups.
Checking service escalations…
Checked 0 service escalations.
Checking host group escalations…
Checked 0 host group escalations.
Checking service dependencies…
Checked 0 service dependencies.
Checking host escalations…
Checked 0 host escalations.
Checking host dependencies…
Checked 0 host dependencies.
Checking commands…
Checked 63 commands.
Checking time periods…
Checked 5 time periods.
Checking for circular paths between hosts…
Checking for circular service execution dependencies…
Checking global event handlers…
Checking obsessive compulsive service processor command…
Checking misc settings…
Total Warnings: 0
Total Errors: 0
Things look okay – No serious problems were detected during the pre-flight check

Si encuentra alguna inconsistencia en los datos introducidos en los ficheros de configuración nos avisaría indicando el número de errores y por qué se han producido.

Por último, deberemos detener e iniciar nuevamente Nagios, para que vuelva a leer los ficheros de configuración y aplique los cambios oportunos, para ello podremos utilizar el comando:

sudo /etc/init.d/nagios reload

Con el resultado:

root@nagios:/ect/nagios$ sudo /etc/init.d/nagios reload
Password:
Reloading nagios configuration files.

Accediendo ahora a la consola de monitorización de Nagios, vía web, podremos ver el estado del nuevo servicio añadido:

Consola vía web de monitorización de Nagios - Visualización nuevo servicio añadido

El estado del nuevo servicio añadido será «PENDING» (pendiente), a la espera de que Nagios realice la primera comprobación del servicio añadido.

Trascurridos unos minutos, Nagios comprobará este servicio y si todo es correcto mostrará el «Status» OK:

Status OK del servicio añadido a Nagios

ANEXO

  • Por supuesto, las rutas y nombres de ficheros aquí indicadas podrán variar en función de la versión de Nagios y de la instalación que se haya realizado. Los ficheros services.cfg y hosts.cfg podrán variar de nombre y ubicación.
  • Para realizar una comprobación del estado actual del servicio en la ventana de Terminal del servidor Linux de Nagios, podremos utilizar el siguiente comando:

./check_tcp -H 172.28.0.22 -p 19372

  • Los plugins de Nagios se encuentran en la ruta:

/usr/lib/nagios/plugins

Como hemos dicho anteriormente esta ruta también puede variar dependiendo de la versión e instalación de Nagios realizada.

  • La versión de Nagios utilizada para este artículo ha sido la 1.3.
  • El inconveniente principal de Nagios es que si el servicio no abre puertos TCP no es posible monitorizarlo directamente, abría que utilizar otros métodos indirectos, algo más engorrosos.