Instalar y configurar Nagios en servidor Debian 7 (Parte III)
Seguimos 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:
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.
cd nrpe-2.15
./configure
make all
make install-plugin
Si nos da el siguiente error:
El mensaje «Checking for SSL headers… configure: error: Cannot find ssl headers«, lo podemos solucionar de la siguiente manera:
apt-get install libssl-dev
Así instalamos las librerías ssl, y ahora el comando configure añadiendo parámetros:
./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.
useradd nagios
passwd nagios
Y descamos el paquete nagios-plugin:
wget http://nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz
Una vez descargado, lo descomprimimos y accedemos a la carpeta:
tar xvfz nagios-plugins-2.0.3.tar.gz
cd nagios-plugins-2.0.3
Y ya podemos compilar:
export LDFLAGS=-ldl
./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-redhat-pthread-workaround
make
make install
Cambiamos los propietarios de las carpetas de Nagios en el cliente:
chown nagios.nagios /usr/local/nagios
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:
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:
tar xvfz nrpe-2.15.tar.gz
cd nrpe-2.15
Compilamos el código fuente:
./configure
make all
make install-plugins
make install-daemon
make install-daemon-config
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:
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
nano /etc/xinetd.d/nrpe
Y añadimos en la línea:
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:
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.
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:
define host{
name linux-box
use generic-host
check_period 24x7
check_interval 5
retry_interval 1
max_check_attempts 10
check_command check-host-alive
notification_period 24x7
notification_interval 30
notification_options d,r
contact_groups admin
register 0 ; ES UNA PLANTILLA
}
Añadimos el host que llamaremos RelayCorreo
define host{
use linx-box
host_name RelayCorreo
alias Debian 7
address 192.168.1.x
}
Y la definición de servicio:
define service{
use generic-service
host_name RelayCorreo
service_description Root Partition
check_command check_nrpe!check_load
}
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:
define service{
use generic-service
host_name RelayCorreo
service_description /dev/hda1 Free Space
check_command check_nrpe!check_hda1
}
Control de usuarios:
define service{
use generic-service
host_name RelayCorreo
service_description Current Users
check_command check_nrpe!check_users
}
Control de los procesos:
define service{
use generic-service
host_name RelayCorreo
service_description Total Processes
check_command check_nrpe!check_total_procs
}
Control de los procesos «zombie»
define service{
use generic-service
host_name RelayCorreo
service_description Zombie Processes
check_command check_nrpe!check_zombie_procs
}
Modificamos el archivo nagios.cfg, para añadir el nuevo archivo.
Añadiendo la línea:
# Añadimos el fichero linux.cfg
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:
# Plugin nrpe para los servidores Linux remotos
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
Ahora ya podemos reiniciar el servicio nagios
service nagios restart
Si todo ha todo bien veremos los servicios OK en la interfaz de Nagios:
Añ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:
Indicaremos 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:
/usr/local/nagios/libexec/check_swap -w 20% -c 10%
Y obtendremos un mensaje similar al siguiente:
Añadimos el comando en el archivo del remote host /usr/local/nagios/etc/nrpe.cfg, justo debajo del resto de comandos:
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:
define service{
use generic-service
host_name RelayCorreo
service_description Swap Usabe
check_command check_nrpe!check_swap
}
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.
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:
define service{
use generic-service
host_name RelayCorreo
service_description SMTP
check_command check_nrpe!check_smtp
}
Reinciamos el servicio nagios:
service nagios restart
Y con esto y un bizcocho…, ya lo tenemos todo listo:
En 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!