monitoreo

Instalación de clientes de Nagios

Para que el servidor Nagios empiece a mostrar información, necesitamos que en las máquinas a monitorizar haya instalado un cliente.

Hoy explicaré la instalación del agente en servidores GNU Linux.

La instalación la haré sobre un servidor Debian que tengo en producción y que uso de cajón desastre cuando quiero poner un servicio que no necesita correr en un servidor dedicado.

Compilación e instalación de los plugins de Nagios

Si la instalación la hacemos en un servidor Debian o familia como es mi caso, habrá que instalar las siguientes librerías para que no nos de errores de compilación y además agregar manualmente el usuario nagios:

# apt install build-essential
# apt-get install libssl-dev

Agregamos el usuario nagios

# useradd nagios

Descargamos la última versión de los plugins de Nagios.

# wget https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.3.3/nagios-plugins-2.3.3.tar.gz

Descomprimimos el paquete descargado.

# tar -xzvf nagios-plugins-2.3.3.tar.gz

Navegamos al directorio donde se ha desempaquetado.

# cd nagios-plugins-2.3.3

Ejecutamos el script configure para preparar el SO para la compilación.

# ./configure

Ejecutamos los comandos make para instalar los plugins de Nagios.

# make install

Instalación del módulo NRPE

Descargamos la última versión del módulo NRPE.

# cd ..
# wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz

Descomprimimos el paquete descargado.

# tar -xzvf nrpe-4.0.3.tar.gz

Navegamos al directorio donde se ha desempaquetado.

# cd nrpe-4.0.3

Ejecutamos el script configure para preparar el SO para la compilación.

# ./configure

Y lanzamos la compilación.

# make all
# make install
# make install-config
# make install-init

Editamos el archivo de configuración de NRPE. Sin esta modificación Nagios no lo puede monitorizar.

# nano /usr/local/nagios/etc/nrpe.cfg

Y añadimos la ip de nuestro servidor Nagios en la línea allowed_hosts y separamos con coma (,).

allowed_hosts=127.0.0.1,::1,IP_SERVIDOR_NAGIOS

Habilitamos el servicio NRPE

# systemctl enable nrpe

Y lo iniciamos

# systemctl start nrpe

Con estos pasos, ya tendríamos instalado el agente en el servidor cliente.

Comprobar la comunicación con servidor Nagios.

En nuestro servidor nagios, navegamos hacia la ruta:

# cd /usr/local/nagios/libexec/

Y ejecutamos el binario check_nrpe.

# ./check_nrpe -H ip_servidor_cliente

Si nos devuelve la versión del plugin, es porque hay comunicación entre servidor y cliente y está todo correcto.

Agregar un cliente a servidor Nagios

Hasta ahora lo único que hemos hecho es instalar el agente en el servidor cliente y hacer una prueba de comunicación desde el servidor Nagios.

Para agregar un cliente y que nuestro Nagios lo esté monitorizando constantemente, realizaremos las siguientes acciones.

Creamos un template para el servidor que vamos a agregar en la siguiente ruta:

# nano /usr/local/nagios/etc/objects/linux.cfg

Como yo he agregado un servidor linux, le he llamado a mi template «linux.cfg»

Dentro del template podemos definir hosts y servicios.

Ejemplo de definición de host:

define host{
            use linux-server
            host_name cliente_linux
            alias Servidor de múltiples servicios
            address IP_Cliente_Monitorizar
}

Donde:

use           Es la plantilla general a utilizar
host_name     Es el nombre que le vamos a dar a ese servidor
alias         Es la descripción del servidor
address       Es la IP del cliente a monitorizar

Nota: Todo lo que no definamos en este apartado, lo tomará de la plantilla general utilizada, es este caso linux-server.

Ejemplo de definición de servicio:

define service{
               use generic-service
               host_name cliente_linux
               service_description Disco duro
               check_command check_nrpe!check_hda1
}

Donde:

use                  Es la plantilla general a utilizar
host_name            Es el nombre del servidor donde pondremos el servicio
service_description  Es la descripción del servicio
check_command        Es el comando a utilizar en el servicio definido

Definimos tantos servicios como necesitemos monitorizar.

Cuando hayamos definido los servicios que necesitamos, informamos a Nagios que hay un nuevo archivo de configuración.

Para ello editamos el fichero nagios.cfg, buscamos la sección OBJECT CONFIGURATION FILE(S) y agregamos una nueva línea indicando el nombre del template que hemos creado.

# nano /usr/local/nagios/etc/nagios.cfg
...
# OBJECT CONFIGURATION FILE(S)
# These are the object configuration files in which you define hosts,
...
cfg_file=/usr/local/nagios/etc/objects/linux.cfg
...

Comprobamos que no hemos cometido errores al escribir el archivo de configuracón.

# nagioscheck

Y reiniciamos el servicio de Nagios para que cargue el nuevo template que hemos añadido.

# systemctl restart nagios

Vamos a la aplicación web de Nagios y vemos el servidor (Servicios) que hemos agregado con los servicios que hemos definido. El host llamado localhost, es el propio Nagios que muestra información de su NRPE.

Resolución de posibles problemas

El plugin NRPE en el cliente, llama al disco duro HDA1 y nos puede aparecer el mensaje HDA1 => NO reconoce el disco duro del cliente

Para corregir esto, editamos en el cliente el archivo nrpe.cfg

# nano /usr/local/nagios/etc/nrpe.cfg

Buscamos la sección de comandos y en el plugin check_hda1 pasamos como parámetro el nombre del disco duro del cliente a monitorizar: sda1 en mi caso.

command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1

Reiniciamos el servicio NRPE

# systemctl restart nrpe

Y con eso ya habremos subsanado el error.

Saludos =)

Instalación de Nagios

En la entrada anterior comentaba lo beneficioso que es tener una herramienta de monitorización en nuestro día a día. En las siguientes líneas indicaré cómo instalar Nagios en un servidor CentOS 8.

Laboratorio

Especificaciones del servidor:

SO                 CentOS Linux
Versión SO         8.2.2004
Arquitectura       x64
Número de núcleos  4
Memoria RAM        1 GB.
Tamaño de Disco    32 GB.
Tipo               Virtualizado

Preparación del Servidor

Lo primero que hacemos es verificar que nuestro servidor tiene las últimas actualizaciones instaladas. Para ello ejecutamos la siguiente instrucción en el terminal.

# yum update

Para el laboratorio, deshabilitamos SELinux para instalar y configurar nagios.

# nano /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted 

Añadimos las reglas al firewall para los puertos 80 y 443 para acceso vía web.

# firewall-cmd --permanent --add-port=80/tcp
# firewall-cmd --permanent --add-port=443/tcp

Luego aplicamos los cambios en el firewall.

# firewall-cmd --reload

Verificamos los puertos que hemos abierto.

# firewall-cmd --list-all
public (active)
...
ports: 80/tcp 443/tcp
...

Reiniciamos el servidor para que los cambios sobre SELinux surtan efecto.

# systemctl reboot

Instalamos los paquetes de dependencias.

# yum install -y gettext wget net-snmp-utils openssl-devel glibc-common unzip perl epel-release gcc php gd automake autoconf httpd make glibc gd-devel net-snmp
# yum --enablerepo=powertools,epel install perl-Net-SNMP
# yum install perl-Net-SNMP

Agregamos el usuario nagios y lo hacemos miembro del grupo apache.

# useradd nagios
# usermod -a -G nagios apache

Compilación e instalación de Nagios

Descargamos la última versión de Nagios.

# wget https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.6/nagios-4.4.6.tar.gz

Descomprimimos el paquete que hemos descargado.

# tar -xzvf nagios-4.4.6.tar.gz

Navegamos al directorio donde se ha desempaquetado.

# cd nagios-4.4.6

Ejecutamos el script configure para verificar que el SO contiene los paquetenes necesarios para la compilación de Nagios.

# ./configure

Ejecutamos los comandos make para compilar Nagios, instalar los scripts de inicio y la configuración por defecto.

# make all
# make install
# make install-init
# make install-commandmode
# make install-config
# make install-webconf

Habilitamos el servicio de Apache y Nagios para que inicie con el sistema mediante la instrucción enable.

# systemctl enable httpd
# systemctl enable nagios

Protegemos la página de Nagios con usuario y contraseña. Con la opción -c le indicamos que cree un fichero de contraseñas para Nagios.

# htpasswd -c /usr/local/nagios/etc/htpasswd.users admin

Nota:

Si lo que queremos es añádir un nuevo usuario al fichero existente, obviamos el parámetro -c.

# htpasswd /usr/local/nagios/etc/htpasswd.users nuevousuario
New password: ************
Re-type new password: ************

Iniciamos los servicios correspondientes a Apache y Nagios.

# systemctl start httpd
# systemctl start nagios

Y si hemos seguido estos sencillos pasos, podríamos acceder a la interfaz web de la siguiente manera:

Abrimos un navegador web y ponemos la siguiente URL:

http://IP_SERVIDOR_NAGIOS/nagios

Cambiando IP_SERVIDOR_NAGIOS por la IP del servidor que hayamos usado para instalar Nagios.

Utilizamos las credenciales que pusimos para proteger el sitio de Nagios. El usuario admin en mi caso con su respectiva contraseña.

Pantalla de inicio de Nagios

Compilación e instalación de los plugins de Nagios

Una vez instalado Nagios, procedemos con la instalación de los plugins que son necesarios para realizar los cheackeos en los dispositivos a monitorizar.

Descargamos la última versión de los plugins de Nagios.

# wget https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.3.3/nagios-plugins-2.3.3.tar.gz

Descomprimimos el paquete descargado.

# tar -xzvf nagios-plugins-2.3.3.tar.gz

Navegamos al directorio donde se ha desempaquetado.

# cd nagios-plugins-2.3.3

Ejecutamos el script configure para verificar que el SO contiene los paquetenes necesarios para la compilación de los plugins.

# ./configure

Ejecutamos los comandos make para compilar e instalar los plugins de Nagios.

# make install

Reiniciamos el servicio de Nagios.

# systemctl restart nagios

Listamos los plugins instalados en la siguiente ruta:

# ls /usr/local/nagios/libexec/
...
check_apt       check_dummy         check_imap      check_nntps
...

Instalación del módulo NRPE

NRPE (Nagios Remote Plugin Executor) permite ejecutar complementos de Nagios en otras máquinas de forma remota.

Descargamos la última versión del módulo NRPE.

# wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz

Descomprimimos el paquete descargado.

# tar -xzvf nrpe-4.0.3.tar.gz

Navegamos al directorio donde se ha desempaquetado.

# cd nrpe-4.0.3

Ejecutamos el script configure.

# ./configure
*** Configuration summary for nrpe 4.0.3 2020-04-28 ***:

 General Options:
 -------------------------
 NRPE port:    5666
 NRPE user:    nagios
 NRPE group:   nagios
 Nagios user:  nagios
 Nagios group: nagios

Nota: 5666 Es el puerto que se debe abrir en el FW de cada servidor/ordenador que se quiera monitorizar para que Nagios pueda establecer comunicación.

Compilamos el ejecutable a invocar cada vez que se hace una consulta a un servidor.

# make check_nrpe

Copiamos el NRPE que acabamos de compilar donde tenemos todos los ejecutables /usr/local/nagios/libexec.

# make install-plugin

Creamos un comando para que Nagios pueda usar el comando NRPE editando el fichero de configuración commands.cfg

# nano /usr/local/nagios/etc/objects/commands.cfg

Y añadiendo al final del mismo, la siguiente información.

...
define command {
    command_name    check_nrpe
    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Donde:

$USER1 es el equivalente al PATH /usr/local/nagios/libexec

Se puede ver el contenido de esta variable en el fichero de configuración resource.cfg con el siguiente comando:

# cat /usr/local/nagios/etc/resource.cfg
...
# Sets $USER1$ to be the path to the plugins
$USER1$=/usr/local/nagios/libexec
...

Comprobamos la sintaxis de nuestros archivos de configuración de Nagios.

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

Si no tenemos errores, reiniciamos el servicio de Nagios.

# systemctl restart nagios

Nota:

Como vamos a necesitar mucho los comandos para revisar la sintaxis y reiniciar el servicio de Nagios y sobre todo el primero es largo, podemos crear un alias de comando.

Creación de Alias de comandos.

Agregamos dos alias al final del archivo .bashrc ubicado en el home del usuario con el que se trabaja, en nuestro caso root:

# nano /root/.bashrc

Añadimos las siguientes líneas a dicho fichero.

...
alias nagioscheck='/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg'
alias nagiosreload='systemctl restart nagios'

Recargamos la configuración con los comandos que hemos añadido.

# source /root/.bashrc

Y ya hemos dejado todo preparado para en el siguiente artículo monitorizar nuestro primer servidor Linux.

Saludos =)