Cómo instalar Nagios 3.0.5 en GNU Linux Ubuntu Server 8.04.1 (válido para otras versiones y distribuciones de GNU Linux). También os indicamos paso a paso cómo configurarlo para que monitorice varios equipos de nuestra red (servidor web, servidor de almacenamiento). Nagios es un sistema open source que permite monitorizar servicios de red y avisar si cambia su estado.

Definición de Nagios

Nagios es un sistema open source que permite monitorizar servicios de red (SMTP, POP3, HTTP, NTTP, ICMP, SNMP, etc.) y recursos de un host (carga del procesador, uso de los discos, logs del sistema, estado de los servicios, etc.). También permite notificar el cambio de estado de estos servicios a los contactos indicados, cuando se produzca el cambio indicado, vía email, pager (busca), SMS, o cualquier método definido por el usuario.

Instalación de Nagios en GNU Linux Ubuntu Server 8.04.1

Os explicamos en este artículo cómo instalar Nagios en GNU Linux Ubuntu Server 8.04.1, para ells seguiremos los siguientes pasos:

Instalar los paquetes necesarios (Required Packages)

En primer lugar hemos de comprobar en GNU Linux que disponemos de los siguientes paquetes, necesarios para el correcto funcionamiento y administración de Nagios:

  • Apache 2.
  • GCC compiler and development libraries.
  • GD development libraries.

Para instalarlos abriremos una ventana de terminal (si tenemos el modo gráfico de Linux Ubuntu Server instalado) y escribiremos el siguiente comando (para instalar Apache 2):

sudo apt-get install apache2

Si ya está instalado mostrará un mensaje como este:

Leyendo lista de paquetes…
Creando árbol de dependencias…
Leyendo la información de estado…
apache2 ya está en su versión más reciente.
0 actualizados, 0 se instalarán, 0 para eliminar y 22 no actualizados.

Instalación y configuración de Nagios para monitorizar la red - Instalar los paquetes necesarios (Required Packages)

Este otro:

sudo apt-get install libapache2-mod-php5

Instalación y configuración de Nagios para monitorizar la red - Instalar los paquetes necesarios (Required Packages)

Y este otro para instalar GCC y GD:

sudo apt-get install build-essential

Si aparece este error:

… 404 Not Found.
No se pudieron obtener algunos archivos, ¿quizás deba ejecutar apt-get update o deba intentarlo de nuevo con –fix-missing?

Ejecutaremos el comando:

sudo apt-get update

Y volveremos a ejecutar el comando anterior.

Nota 1: para la versión de Ubuntu 6.10 deberemos ejecutar:

sudo apt-get install libgd2-dev

Nota 2: para la versión de Ubuntu 7.10, el nombre de la la librería gd2 es libgd2-xpm-dev, con lo cual el comando a ejecutar sería:


sudo apt-get install libgd2-xpm-dev

Crear usuario y grupo de seguridad para nagios (Account information)

A continuación crearemos un usuario del sistema Linux para el uso de Nagios (con nombre «nagios» y con contraseña «nagios»), para ello ejecutaremos el siguiente comando:

sudo /usr/sbin/useradd -m nagios

Para establecer la contraseña del usuario «nagios» creado escribiremos el comando Linux:

sudo passwd nagios

Crearemos también un grupo de seguridad llamado «nagios»:

sudo /usr/sbin/groupadd nagios

Y añadiremos el usuario «nagios» a este grupo con el comando:

sudo /usr/sbin/usermod -G nagios nagios

Crearemos otro grupo de seguridad para permitirle la ejecución de comandos externos a través de la interfaz web, con nombre «nagcmd»:

sudo /usr/sbin/groupadd nagcmd

Añadiremos al grupo creado anteriormente el usuario «nagios»:

sudo /usr/sbin/usermod -G nagcmd nagios

También agregaremos a este grupo el usuario de Apache «www-data»:

sudo /usr/sbin/usermod -G nagcmd www-data

Instalación y configuración de Nagios para monitorizar la red - Crear usuario y grupo de seguridad para nagios (Account information)

Descargar fichero instalación Nagios y los plugin necesarios

Tras preparar el sistema Linux instalando los paquetes necesarios y creando los grupos y usuarios, procederemos a descargar el fichero de instalación de Nagios y los Plugin. Para ello, desde la línea de comandos, en primer lugar nos crearemos una carpeta para guardar las descargas, con el comando:

sudo mkdir decargas_nagios

Accedemos al directorio creado con:

cd descargas_nagios

Instalación y configuración de Nagios para monitorizar la red - Descargar fichero instalación Nagios y los plugin necesarios

Y ejecutaremos el siguiente comando para descargar desde Internet el fichero comprimido de instalación de Nagios 3.0.5 (necesitaremos disponer de conexión a Internet en el equipo Linux Ubuntu):

sudo wget http://osdn.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.5.tar.gz

Instalación y configuración de Nagios para monitorizar la red - Descargar fichero instalación Nagios y los plugin necesarios

Descargaremos también los Plugins de nagios, con el comando:

sudo wget http://osdn.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz

Instalación y configuración de Nagios para monitorizar la red - Descargar fichero instalación Nagios y los plugin necesarios

Antes de continuar, para evitar problemas de permisos en la carpeta donde hemos descargado los ficheros de Nagios, ejecutaremos el comando:

sudo chmod /descargas_nagios 777

Compilar e instalar Nagios

Para finalizar el proceso de instalación de Nagios 3.0.5 descomprimiremos los ficheros descargados y los compilaremos. Para descomprimirlos ejecutaremos el siguiente comando:

tar xzf nagios-3.0.5.tar.gz

Accederemos a la carpeta que ha creado el comando anterior:

cd nagios-3.0.5

Ejecutaremos el script de configuración de Nagios, pasándole como parámetro el nombre del grupo creado anteriormente:

./configure –with-command-group=nagcmd

Instalación y configuración de Nagios para monitorizar la red - Compilar e instalar Nagios

Compilamos el código fuente de Nagios con el comando:

make all

Instalamos los ficheros binarios y HTML:

make install

Instalamos los script de inicio:

make install-init

Los ficheros de configuración de ejemplo:

make install-config

Este comando creará los archivos cgi.cfg, nagios.cfg, resource.cfg de configuración en la carpeta /usr/local/nagios/etc

Instalación y configuración de Nagios para monitorizar la red - Compilar e instalar Nagios

Es necesario que el usuario «nagios» creado anteriormente tenga permisos de lectura/escritura sobre estos archivos .cfg, el siguiente script realizará esa tarea:

make install-commandmode

Configurar la interfaz web (Web Interface)

Para instalar la interfaz web de administración de Nagios, configurando el fichero conf.d de Apache, ejecutaremos el siguiente comando:

sudo make install-webconf

Instalación y configuración de Nagios para monitorizar la red - Configurar la interfaz web (Web Interface)

Con el siguiente comando crearemos una cuenta de usuario para acceder a la configuración de Nagios desde la interfaz web. Al ejecutar este comando nos pedirá que introduzcamos una contraseña, que será la que utilicemos para acceder a la interfaz web de Nagios:

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

AjpdSoft Instalación y configuración de Nagios para monitorizar la red - Configurar la interfaz web (Web Interface)n

Para que los cambios tengan efecto reiniciaremos el servicio de Apache, con el comando:

/etc/init.d/apache2 reload

Instalación y configuración de Nagios para monitorizar la red - Configurar la interfaz web (Web Interface)

Si todo es correcto nos devolverá algo así:

* Reloading web server config apache2 [ OK ]

Compilar e instalar los Plugins de Nagios

Accederemos a la carpeta donde hemos descargado el fichero que contiene los plugins de Nagios, con el comando:

cd /descargas_nagios

Descomprimiremos el fichero descargado nagios-plugins-1.4.13.tar.gz con el comando:

tar xzf nagios-plugins-1.4.13.tar.gz

Instalación y configuración de Nagios para monitorizar la red - Compilar e instalar los Plugins de Nagios

Accederemos a la carpeta creada con la descompresión:

cd nagios-plugins-1.4.13

A continuación compilaremos e instalaremos los plugins de Nagios con el comando:

sudo ./configure –with-nagios-user=nagios –with-nagios-group=nagios

Instalación y configuración de Nagios para monitorizar la red - Compilar e instalar los Plugins de Nagios

A continuación ejecutaremos:

make

y luego:

make install

Iniciar Nagios

Si queremos que el servicio de Nagios se ejecute automáticamente cada vez que reiniciemos el equipo, ejecutaremos el siguiente comando:

sudo ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios

Verificaremos los ficheros de configuración de ejemplo que incluye Nagios, con el comando:

sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Instalación y configuración de Nagios para monitorizar la red - Iniciar Nagios

Si no hay errores (lo indica al final del comando con «Total Warnings» y «Total Errors») podremos iniciar Nagios con el comando:

/etc/init.d/nagios start

Instalación y configuración de Nagios para monitorizar la red - Iniciar Nagios

Si todo es correcto mostrará:

Starting nagios: done.

Acceso a la administración web de Nagios

Una vez instalado e iniciado Nagios, podremos acceder a la web de administración desde cualquier equipo de la red, tanto con sistema operativo Windows como GNU Linux. En nuestro caso accederemos a Nagios desde un equipo con Windows XP SP3, para ello abriremos un navegador web (como Mozilla Firefox) y escribiremos la siguiente URL:

http://192.168.1.111/nagios

Donde «192.168.1.111» será la IP del equipo donde hayamos instalado Nagios.

Nos pedirá usuario y contraseña, introduciremos en «Nombre de usuario» el usuario creado en pasos anteriores «nagiosadmin» y la contraseña introducida al crearlo:

Instalación y configuración de Nagios para monitorizar la red - Acceso a la administración web

El aspecto de la página principal de administración de Nagios versión 3.0.5, desde este página podremos ver el estado actual de los servicios monitorizados, entre otras cosas:

Instalación y configuración de Nagios para monitorizar la red - Acceso a la administración web

Pulsando en «Service Detail» podremos ver los servicios y equipos actualmente monitorizados por Nagios. Tras la instalación, Nagios sólo monitoriza (como ejemplo) el propio equipo donde ha sido instalado y, dentro de este equipo, monitoriza los servicios de HTTP, PING, SSH, Swap Usage, Total Processes:

Instalación y configuración de Nagios para monitorizar la red - Acceso a la administración web

Cómo configurar Nagios para monitorizar varios servidores

Fichero de configuración principal nagios.cfg

Desde el servidor con GNU Linux y Nagios, abriremos una ventana de terminal y accederemos a la carpeta que contiene los ficheros de configuración de Nagios, con el comando:

cd /usr/local/nagios/etc

Instalación y configuración de Nagios para monitorizar la red - Cómo configurar Nagios para monitorizar varios servidores

En primer lugar editaremos el fichero de configuración principal de Nagios (mainfile) llamado «nagios.cfg», lo podremos hacer con cualquier editor, por ejemplo:

sudo nano /usr/local/nagios/etc/nagios.cfg

En este fichero deberemos indicar la carpeta de ficheros .cfg ó el fichero de extensión .cfg que contendrá los hosts que monitorizaremos. En nuestro caso añadiremos una carpeta completa:

/usr/local/nagios/etc/hosts

Para ello añadiremos la siguiente línea (en cualquier parte del fichero nagios.cfg):

cfg_dir=/usr/local/nagios/etc/hosts

Guardaremos los cambios con «Control + O» y cerramos nano GNU nano con «Control + X».

Desde este fichero podremos configurar todos los parámetros generales de Nagios.

Ficheros de grupos hosts, hosts, servidores, equipos, dispositivos a monitorizar

Para indicar a Nagios los servidores, equipos o dispositivos a monitorizar, crearemos la carpeta «hosts», con el comando:

sudo mkdir /usr/local/nagios/etc/hosts

(que es la carpeta donde hemos indicado en nagios.cfg que contendrá los hosts)

Accederemos a ella con:

cd /usr/local/nagios/etc/hosts

En esta carpeta crearemos dos ficheros, por un lado crearemos el fichero que contendrá los grupos de hosts (para agrupar los servidores por «tipo»), por ejemplo con el nombre «grupos.cfg», para ello escribiremos el siguiente comando:

sudo nano /usr/local/nagios/etc/hosts/grupos.cfg

En el editor escribiremos:

Os explicamos cada parámetro:

  • hostgroup_name: nombre interno del grupo de hosts.
  • alias: nombre que se mostrará para identificar el grupo de hosts.
  • members: nombre de los hosts (definidos en el mismo u otro fichero de configuración) que pertenecerán a este grupo.

Obviamente, no sabremos los «members» hasta que no creemos el fichero de configuración con los hosts a monitorizar por Nagios. Este fichero «grupos.cfg» podremos editarlo en cualquier momento y agregar los miembros que deseemos.

Crearemos ahora un nuevo fichero con el nombre que queramos y la extensión .cfg, este fichero contendrá la configuración necesaria para agregar los distintos servidores y dispositivos a la monitorización de Nagios. Crearemos este fichero con:

sudo nano /usr/local/nagios/etc/hosts/servidores.cfg

Agregaremos lo siguiente al fichero:

A continuación explicamos algunos de los parámetros:

  • host_name: nombre interno del hosts (servidor o dispositivo).
  • alias: nombre que identificará el host en el administrador de Nagios.
  • address: dirección IP del host o dispositivo.
  • check_command: comando que se utilizará para comprobar la disponibilidad del host o dispositivo, normalmente «check-host-alive».
  • notifications_enabled: habiltar / deshabilitar las notificaciones en caso de caída de este host o dispositivo («1» habilitadas las notificaciones, «0» deshabilitadas las notificaciones).
  • contact_groups: grupo de contactos a los que se notificará en caso de caída del host o dispositivo.

En este fichero definiremos todos los host (servidores o pcs que queramos monitorizar) y todos los dispositivos (impresoras de red con IP propia, switch con IP, routers, etc.). Por supuesto, se pueden separar en tantos ficheros .cfg como deseemos, puesto que hemos configurado Nagios (nagios.cfg) para que utilice todos los ficheros .cfg de la carpeta /usr/local/nagios/etc/hosts.

Fichero de grupos de contactos y contactos

Deberemos crear también los grupos de contactos, podremos hacerlo en la misma carpeta donde hemos creado los grupos de hosts y hosts, accederemos a esta carpeta:

cd /usr/local/nagios/etc/hosts

Crearemos aquí un fichero con los grupos de contactos, llamado «grupos_contactos.cfg»:

sudo nano /usr/local/nagios/etc/hosts/grupos_contactos.cfg

En este fichero introduciremos algo así:

Creando todos los grupos de contactos, para el aviso (en caso de caída) de los servicios, hosts, dispositivos monitorizados. Lo normal es que, dependiendo del servidor a monitorizar, haya que avisar a un grupo u otro de contactos. Por ejemplo, en una organización con cuatro técncios dedidcados a administración de redes y tres técnicos dedicados a administración de base de datos, lo normal será crear dos grupos de contactos, uno para el aviso en caso de caída de la electrónica de red (administradores de redes) y otro para aviso en caso de caída del servidor (o los servicios) de la base de datos (administradores de base de datos).

A continuación crearemos otro fichero que contendrá los contactos propiamente dichos y la información de cada uno (email, nombre, etc.):

sudo nano /usr/local/nagios/etc/hosts/contactos.cfg

Con el contenido:

Definición de los comandos

En el paso anterior, para el contacto, en el parámetro «service_notification_commands» hemos establecido el comando «notificar_por_email» que hay que definir. Para ello crearemos un nuevo fichero que llamaremos «comandos.cfg» que contendrá todos los comandos que utilicemos definidos:

sudo nano /usr/local/nagios/etc/hosts/comandos.cfg

Con el contenido:

Nota: el contenido anterior para el parámetro «command_line» va en una sola línea, lo hemos partido para que la línea no quede excesivamente larga en la visulazación del navegador.

Verificación de la configuración introducida

Para que los cambios tengan efecto en Nagios, en primer lugar comprobaremos que la sintaxis introducida es correcta, para ello utilizaremos el comando:

sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Instalación y configuración de Nagios para monitorizar la red - Verificación de la configuración introducida

Deberemos asegurarnos de que al compilar no aparezcan errores:

Total Errors: 0

A continuación os mostramos algunos de los posibles errores al compilar los ficheros de configuración de Nagios.

Posibles errores de configuración y su causa y solución

Si hay algún error de sintaxis en algunos de los ficheros .cfg, el comando de verificación anterior nos mostrará algo así:

Nagios 3.0.5
Copyright (c) 1999-2008 Ethan Galstad (http://www.nagios.org)
Last Modified: 11-04-2008
License: GPL
Reading configuration data…
Error: Invalid hostgroup object directive ‘{‘.
Error: Could not add object property in file ‘/usr/local/nagios/etc/hosts/grupos.cfg’ on line 2.
*** One or more problems was encountered while processing the config files…
Check your configuration file(s) to ensure that they contain valid
directives and data defintions. If you are upgrading from a previous
version of Nagios, you should be aware that some variables/definitions
may have been removed or modified in this version. Make sure to read
the HTML documentation regarding the config files, as well as the
‘Whats New’ section to find out what has changed.

Indicando el fichero y la línea del fichero donde está el error de sintaxis y el error que se ha producido.

Si no encuentra un host en el fichero servidores.cfg de los indicados en «members» del fichero grupos.cfg mostrará algo así:

Reading configuration data…
Error: Could not find any host matching ‘srvts1’ (config file ‘/usr/local/nagios/etc/hosts/grupos.cfg’, starting on line 1)
Error: Could not expand members specified in hostgroup (config file ‘/usr/local/nagios/etc/hosts/grupos.cfg’, starting on line 1)
*** One or more problems was encountered while processing the config files…

Si no encuentra un grupo de contactos (contact_groups) para notificación de los hosts, mostrará algo así:

Reading configuration data…
Running pre-flight check on configuration data…
Checking services…
Checked 8 services.
Checking hosts…
Error: Contact group ‘contactos_routers’ specified in host ‘router_oficina’ is not defined anywhere!
Error: Contact group ‘contactos_base_datos’ specified in host ‘srvbd1’ is not defined anywhere!
Error: Contact group ‘contactos_almacenamiento’ specified in host ‘srvdatos1’ is not defined anywhere!
Error: Contact group ‘contactos_almacenamiento’ specified in host ‘srvdatos2’ is not defined anywhere!
Error: Contact group ‘contactos_terminal_server’ specified in host ‘srvts1’ is not defined anywhere!

Si no se ha asociado ningún servicio a un host mostrará un warning (permite iniciar Nagios, es un aviso):

Reading configuration data…
Running pre-flight check on configuration data…
Checking services…
Checked 8 services.
Checking hosts…
Warning: Host ‘router_oficina’ has no services associated with it!
Warning: Host ‘srvbd1’ has no services associated with it!
Warning: Host ‘srvdatos1’ has no services associated with it!
Warning: Host ‘srvdatos2’ has no services associated with it!
Warning: Host ‘srvts1’ has no services associated with it!

Si se produce algún error, como los anteriores, lo solucionaremos editando los ficheros de configuración .cfg (servidores.cfg, grupos.cfg, etc.) indicados en el propio error. Normalmente el comando de verificación suele indicarnos el motivo del error, el fichero donde se produce e incluso la línea del fichero. Tras editarlo y guardar los cambios volveremos a verificar los ficheros con el siguiente comando, hasta que no haya errores (sí puede haber warnings):

sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Reinicio servicio Nagios y comprobación de la monitorización de los hosts añadidos

Una vez verificados los ficheros de configuración de Nagios para que no haya errores, reiniciaremos el servicio para que se apliquen los cambios, con el comando:

/etc/init.d/nagios restart

Devolverá algo así:

Running configuration check… done.
Stopping nagios: done.
Starting nagios: done.

Ahora podremos acceder a la administración web de Nagios y veremos los nuevos hosts y dispositivos añadidos (desde «Host Detail»):

Instalación y configuración de Nagios para monitorizar la red - Reinicio servicio Nagios y comprobación de la monitorización de los hosts añadidos

En nuestro caso, hemos configurado los host para que se compruebe su estado mediante un PING, si alguno no está disponible en la red, Nagios, mostrará una aviso como este:

CRITICAL – Host Unreachable (192.168.1.150)

Si el host o dispositivo responde al PING correctamente, Nagios, mostrará un mensage como este en «Status Information»:

PING OK – Packet loss = 0%, RTA = 0.16 ms