Instalar y configurar Nagios en servidor Debian 7 (Parte III)

Nagios_LogoSeguimos con el tercer capítulo de la guía de instalación y configuración del servidor de monitorización Nagios, en un sistema operativo GNU/Linux Debian 7. En el capítulo que trataremos hoy hablaremos de cómo se conecta Nagios con un cliente Linux con el plugin NRPE, además de configurar servicios como el SMTP.

Recapitulemos

En la primera parte de la guía tratamos de instalación y configuración básica del servidor, aquí. En la segunda parte de la creación de un cliente windows, concretamente un Windows Server 2008, y posteriormente de la instalación del programa de conexión en dicho servidor, aquí.

Instalar el add-on NRPE

Para poder monitorizar máquinas Linux debemos de instalar en el servidor el Add-on NRPE, que  se encargará de ello. Desde el siguiente enlace podéis encontrár más detalles.

En el siguiente esquema podéis ver su funcionamiento:

nrpe-1Descargamos el add-on:

  1. wget http://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz

Una vez descargado, lo descomprimimos, accedemos al directorio y compilamos el código fuente.

  1. cd nrpe-2.15
  2. ./configure
  3. make all
  4. make install-plugin

Si nos da el siguiente error:

nagios-3-ochobits-1El mensaje «Checking for SSL headers… configure: error: Cannot find ssl headers«, lo podemos solucionar de la siguiente manera:

  1. apt-get install libssl-dev

Así instalamos las librerías ssl, y ahora el comando configure añadiendo parámetros:

  1. ./configure --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu

La solución al error lo he encontrado en la web: askubuntu.com

Y ejecutamos los comandos que van a continuación, es decir: make alll y make install-plugin

Ya hemos instalado el plugin en el servidor, ahora haremos lo mismo en el cliente.

Instalar Nagios Plugins y  NRPE en el cliente

Voy a usar como cliente un servidor Debian 7 que tiene instalado un servicio de relay de correo con Postfix, que usa SMTP

Antes de empezar creamos un usuario que se llame nagios, con la contraseña igual que el nombre.

  1. useradd nagios
  2. passwd nagios

Y descamos el paquete nagios-plugin:

  1. wget http://nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz

Una vez descargado, lo descomprimimos y accedemos a la carpeta:

  1. tar xvfz nagios-plugins-2.0.3.tar.gz
  2. cd nagios-plugins-2.0.3

Y ya podemos compilar:

  1. export LDFLAGS=-ldl
  2. ./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-redhat-pthread-workaround
  3. make
  4. make install

Cambiamos los propietarios de las carpetas de Nagios en el cliente:

  1. chown nagios.nagios /usr/local/nagios
  2. chown -R nagios.nagios /usr/local/nagios/libexec/

Ahora nos toca instalar NRPE en el cliente:

Nos descargamos el add-on NRPE otra vez, pero ahora en cliente:

  1. wget http://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz

Descomprimimos y entramos dentro del directorio recíen creado:

  1. tar xvfz nrpe-2.15.tar.gz
  2. cd nrpe-2.15

Compilamos el código fuente:

  1. ./configure
  2. make all
  3. make install-plugins
  4. make install-daemon
  5. make install-daemon-config
  6. make install-xinetd

Si nos da el mismo error SSL, sólo tenemos que seguir las instrucciones de cuando instalamos el software en el servidor Nagios.

Otro error que nos puede dar es al instalar xinetd. Tenemos que tener el daemon xinetd instalado, simplemente lo instalamos con el comando:

  1. apt-get -y install xinetd

Configurar NRPE en el demonio del cliente

Modificar el archivo de configuración de NRPE dentro de xinetd, para indicar que admitimos conexiones desde nuestro servidor Nagios

  1. nano /etc/xinetd.d/nrpe

Y añadimos en la línea:

  1.   only_from       = 127.0.0.1 192.168.1.x

Donde la x es la IP de nuestro servidor nagios.

Modificamos el archivo /etc/services, y añadimos al final:

  1. nrpe 5666/tcp # NRPE

El archivo /usrc/local/nagios/etc/nrpe.cfg

Los comandos que se usan para monitorizar se configuran en el archivo nrpe.cfg. Si lo editaremos veremos varios comandos de ejemplo.

Si echamos un ojo a los parámetros veremos que la «w» es Warning, es decir, advertencia, y «c» es sinónimo de crítico. Podemos modificar el comando check_disk, si el espacio disponibles es menor al 20 % lanza una advertencia, si queda menos del 10 % de espacio Nagios nos enviará un mensajé crítico.

  1. command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1

Creamos client y servicio en el servidor Nagios

Ya hemos instalado los plugins necesarios, tanto en el servidor Nagios como en el servidor remoto a monitorizar.

Para ello creamos un archivo desde cero, con los datos del host remoto y sus servicios. En muchas guías recomiendan copiar el archivo localhost.cfg y modificarlo. Creo que es mejor crearlo nuevo, para evitar errores.

Creamos /usr/local/nagios/etc/objects/linux.cfg

Con el siguiente template, que servirá de base:

  1. define host{
  2.      name                       linux-box
  3.      use                        generic-host
  4.      check_period               24x7
  5.      check_interval             5
  6.      retry_interval             1
  7.      max_check_attempts         10
  8.      check_command              check-host-alive
  9.      notification_period        24x7
  10.      notification_interval      30
  11.      notification_options       d,r
  12.      contact_groups             admin
  13.      register                   0  ;  ES UNA PLANTILLA
  14. }

Añadimos el host que llamaremos RelayCorreo

  1. define host{
  2.       use                  linx-box
  3.       host_name            RelayCorreo
  4.       alias                Debian 7 
  5.       address              192.168.1.x
  6.      }

Y la definición de servicio:

  1. define service{
  2. use                              generic-service
  3. host_name                        RelayCorreo
  4. service_description              Root Partition
  5. check_command                    check_nrpe!check_load
  6. }

Los comandos que estamos definiendo recuerda que están configurados en el archivo /usr/local/nagios/etc/nrpe.cfg del remote host, que en nuestro caso se llamana RelayCorreo.

Añadimos cuatro servicios más, que se encargarán de revisar el espacio de disco, el «log» de los usuarios, el total de los procesos y de los procesos «zombie»

Control de disco:

  1. define service{
  2. use                              generic-service
  3. host_name                        RelayCorreo
  4. service_description              /dev/hda1 Free Space
  5. check_command                    check_nrpe!check_hda1
  6. }

Control de usuarios:

  1. define service{
  2. use                              generic-service
  3. host_name                        RelayCorreo
  4. service_description              Current Users
  5. check_command                    check_nrpe!check_users
  6. }

Control de los procesos:

  1. define service{
  2. use                              generic-service
  3. host_name                        RelayCorreo
  4. service_description              Total Processes
  5. check_command                    check_nrpe!check_total_procs
  6. }

Control de los procesos «zombie»

  1. define service{
  2. use                              generic-service
  3. host_name                        RelayCorreo
  4. service_description              Zombie Processes
  5. check_command                    check_nrpe!check_zombie_procs
  6. }

Modificamos el archivo nagios.cfg, para añadir el nuevo archivo.

Añadiendo la línea:

  1. # Añadimos el fichero linux.cfg
  2. cfg_file=/usr/local/nagios/etc/objects/linux.cfg

¡IMPORTANTE! Para que funcione el plugin tenemos que modificar el fichero /usr/local/nagios/etc/objects/commands.cfg y añadir:

  1. # Plugin nrpe para los servidores Linux remotos
  2. define command{
  3.         command_name  check_nrpe
  4.         command_line  $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
  5.         }

Ahora ya podemos reiniciar el servicio nagios

  1. service nagios restart

Si todo ha todo bien veremos los servicios OK en la interfaz de Nagios:

nagios-nrpe-1Añadiendo nuevos comandos de control en NRPE

El plugin NRPE permite añadir nuevas definiciones de comandos.Si listamos los archivos de /usr/local/nagios/libexec, veremos los comandos disponibles:

nagios-nrpe-2Indicaremos a NRPE que queremos revisar el estado de la partición transaccional o swap de nuestro RelayCorreo. Donde nos avisará que cuando quede menos del 20 % de espacio nos envié un aviso y si queda menos 10% un aviso crítico.

Probarremos el comando en el remote host con el comando:

  1. /usr/local/nagios/libexec/check_swap -w 20% -c 10%

Y obtendremos un mensaje similar al siguiente:

nagios-nrpe-3Añadimos el comando en el archivo del remote host /usr/local/nagios/etc/nrpe.cfg, justo debajo del resto de comandos:

  1. command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%

Añadimos el servicio en nuestra configuración del server Nagios en /usr/local/nagios/etc/objects/linux.cfg:

  1. define service{
  2. use                              generic-service
  3. host_name                        RelayCorreo
  4. service_description              Swap Usabe
  5. check_command                    check_nrpe!check_swap
  6. }

Cómo última parte de hoy añadiremos el control del servicio SMTP

Añadimos la siguiente línea en el archivo nrpe.cfg del remote host RelayCorreo.

  1. command[check_smtp]=/usr/local/nagios/libexec/check_smtp -w 1 -c 2

Y a posteriori, al igual que hemos hecho con el servicio swap, añadimos el servicio SMTP en el servicios nagios:

  1. define service{
  2. use                              generic-service
  3. host_name                        RelayCorreo
  4. service_description              SMTP
  5. check_command                    check_nrpe!check_smtp
  6. }

Reinciamos el servicio nagios:

  1. service nagios restart

Y con esto y un bizcocho…,  ya lo tenemos todo listo:

nagios-nrpe-4En el próximo capítulo veremos como generar gráficos de los servicios con cacti.

Si queréis saber más sobre el plugin NRPE, os recomiendo las guías oficiales:

Nagios NRPE Documentation (en inglés)

Más capítulos sobre Nagios:

See you soon!