En este artículo veremos cómo instalar Nagios en CentOS 8 / CentOS Stream 8 paso a paso, de modo que puedas usar Nagios Core, los plugins de Nagios y el servicio Nagios NRPE para monitorizar distintas máquinas de forma centralizada, utilizando tu servidor o VPS CentOS.
Contenido
Antes de instalar Nagios en CentOS 8
Para poder seguir esta completa guía de instalación de Nagios en CentOS 8 debes satisfacer los siguientes requisitos mínimos:
- Un sistema CentOS Stream 8 actualizado.
- Un servidor web con PHP.
- Acceso a línea de comandos con un usuario con privilegios de sudo o el mismo root.
- Conexión a Internet.
Si no dispones del entorno necesario, puedes consultar previamente nuestra guía de instalación de Apache en CentOS 8 y guía de instalación de PHP en CentOS 8.
En este artículo configuraremos un servidor Nagios Core en una máquina CentOS 8 (llamada centos8.local.lan), en el que instalaremos:
- Los plugins de Nagios
- El servicio Nagios Core
- El plugin Nagios NRPE
También configuraremos una máquina remota CentOS 8 (llamada centos82.local.lan) para ser monitorizada por el servidor anterior, donde instalaremos:
- Los plugins de Nagios
- El servicio Nagios NRPE
Además, instalaremos en todas las máquinas CentOS Stream 8 (tanto el servidor como las máquinas que van a ser monitorizadas) algunas herramientas del sistema que necesitaremos, por lo que actualizamos la información de los repositorios:
~$ sudo yum update
E instalamos dichas herramientas:
~$ sudo yum install -y gcc make tar unzip wget
Cómo descargar e instalar los plugins de Nagios para CentOS 8
Vamos a descargar los plugins de Nagios para CentOS 8 desde el sitio web del proyecto.
Este proceso lo realizaremos tanto en la máquina que actuará como servidor Nagios, como en cada máquina remota que queramos supervisar desde el servidor Nagios
Encontraremos la última versión disponible en forma de paquete .tar.gz cuyo enlace vamos a copiar para descargar desde consola con el comando wget:
~$ wget https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.4.0/nagios-plugins-2.4.0.tar.gz
Instalaremos también algunas dependencias que necesitan algunos plugins:
~$ sudo yum install -y bind-utils libpq-devel mysql-devel openldap-devel openssl-devel
Descomprimimos el archivo en el directorio personal:
~$ tar xf nagios-plugins-2.4.0.tar.gz
Y cambiamos el directorio de trabajo al subdirectorio que se acaba de crear:
~$ cd nagios-plugins-2.4.0
Configuramos la compilación:
$ ./configure
Y compilamos los plugins:
$ make
Finalizada la compilación, instalamos los plugins:
~$ sudo make install
Ya podemos abandonar el directorio de trabajo e incluso eliminarlo.
Los plugins de Nagios quedan instalados como comandos ejecutables en la ruta /usr/local/nagios/libexec/, y pueden ser utilizados directamente desde consola. Por ejemplo, el plugin check_uptime, que puede usarse sin parámetros:
~$ /usr/local/nagios/libexec/check_uptime Uptime OK: 0 day(s) 1 hour(s) 36 minute(s) | uptime=96.000000;;;
Si usas el parámetro -h en este o cualquier otro plugin obtendrás ayuda de los parámetros que admite. Es importante conocer los plugins disponibles y su uso para configurar la monitorización de servicios, más allá de los predeterminados por defecto.
Cómo descargar e instalar Nagios Core en CentOS 8
Ahora vamos a descargar Nagios Core para CentOS 8 desde el sitio de desarrollo del proyecto:
Este proceso sólo lo realizaremos en la máquina CentOS 8 que actuará como servidor Nagios
Copiamos el enlace del paquete .tar.gz y lo descargamos desde consola:
~$ wget https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.7/nagios-4.4.7.tar.gz
Descomprimimos el paquete en el directorio personal:
~$ tar xf nagios-4.4.7.tar.gz
Y cambiamos el directorio de trabajo al subdirectorio que se acaba de crear:
~$ cd nagios-4.4.7
Ahora configuramos la compilación:
$ ./configure --disable-ssl
Y compilamos:
$ make all
La instalación consta de varios pasos, como crear usuario y grupo con el que corre el servicio, instalación en las rutas adecuadas de los binarios, archivos de configuración, scripts de manejo, configuración del servicio web, etc.
$ sudo make install-groups-users install install-webconf install-config install-init install-daemoninit install-commandmode
Podemos abandonar el directorio de trabajo y eliminarlo.
Añadimos el grupo de Nagios que se acaba de crear al usuario con el que corre el servicio web para poder ejecutar comandos externos:
~$ sudo usermod -a -G nagios apache
Como normalmente SELinux se encuentra activado en CentOS Stream 8 no bastará con el ajuste anterior, sino que habrá que crear un contexto de lectura/escritura para el servicio web sobre el directorio de comandos externos:
~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/usr/local/nagios/var/rw(/.*)?"
Aplicamos el nuevo contexto sobre el directorio:
~$ sudo restorecon -R /usr/local/nagios/var/rw/
Y por fin iniciamos el nuevo servicio Nagios:
~$ sudo systemctl start nagios
Podemos comprobar el estado del servicio en cualquier momento con el comando systemctl status nagios
:
Necesitamos crear el usuario y la contraseña para acceder a la interfaz web de Nagios Core:
~$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin New password: Re-type new password: Adding password for user nagiosadmin ~$
Finalmente, reiniciamos el servicio web para cargar la configuración específica de la aplicación Nagios Core:
~$ sudo systemctl restart httpd
Acceder a Nagios Core en CentOS 8
Para acceder a Nagios Core en CentOS 8 debemos saber que la instalación ha creado un alias /nagios para la aplicación web, por lo que accederemos añadiendo este alias a la dirección IP o nombre DNS del servidor.
Por ejemplo, en este tutorial trabajamos sobre un servidor accesible en el dominio centos8.local.lan, por lo que usamos http://centos8.local.lan/nagios como URL:
Tras autenticarnos con el usuario que hemos creado, accedemos a la página principal:
Si accedemos a la sección «Hosts» veremos las máquinas supervisadas por el servidor Nagios Core:
Y si accedemos a la sección «Services» además veremos información detallada sobre los servicios supervisados en cada máquina:
Cómo descargar Nagios NRPE
Finalmente, vamos a descargar Nagios NRPE para CentOS 8 desde el sitio web del proyecto:
Descargamos Nagios NRPE tanto en el servidor Nagios Core como en las máquinas remotas, ya que el mismo paquete contiene tanto el servicio Nagios NRPE para las máquinas remotas como el plugin NRPE para el servidor Nagios Core
Encontraremos el paquete .tar.gz de la última versión disponible, cuyo enlace copiaremos para descargar desde consola:
~$ wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz
Cómo instalar el servicio Nagios NRPE en CentOS 8
En primero lugar, vamos a instalar el servicio Nagios NRPE en cada máquina remota CentOS 8 que será supervisada.
Para ello descomprimimos el paquete en el directorio actual:
~$ tar xf nrpe-4.0.3.tar.gz
Cambiamos el directorio de trabajo a la carpeta que se acaba de crear:
~$ cd nrpe-4.0.3
Configuramos la compilación:
$ ./configure
Compilamos:
$ make nrpe
Terminada la compilación instalamos los binarios, archivos de configuración, scripts, etc.:
$ sudo make install-groups-users install-daemon install-config install-init
Ya podemos salir del directorio de trabajo y eliminarlo si lo consideramos oportuno.
Ahora podemos iniciar el servicio:
~$ sudo systemctl start nrpe
Comprobamos el estado del servicio con el comando systemctl status nrpe
:
Y habilitamos el servicio para que inicie automáticamente en cada arranque de la máquina remota:
~$ sudo systemctl enable nrpe
Cómo configurar el servicio Nagios NRPE en CentOS 8
Para configurar el servicio Nagios NRPE en CentOS 8 editamos su archivo de configuración principal, nrpe.cfg, que se encuentra en el directorio /usr/local/nagios/etc/:
~$ sudo nano /usr/local/nagios/etc/nrpe.cfg
Buscamos la directiva allowed_hosts, que indica qué servidores Nagios Core podrán conectar con el servicio:
... allowed_hosts=127.0.0.1,::1 ...
Añadimos la dirección del servidor Nagios Core, en este ejemplo es centos8.local.lan:
... allowed_hosts=127.0.0.1,::1,centos8.local.lan ...
En este mismo archivo encontramos la definición de los comandos que pueden ser ejecutados a través de peticiones remotas, por ejemplo:
... command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10 command[check_load]=/usr/local/nagios/libexec/check_load -r -w .15,.10,.05 -c .30,.25,.20 command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1 command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200 ...
Puedes añadir, eliminar (o desactivar), modificar, etc. los comandos que quieras. Por ejemplo, el comando check_hda1 usa el plugin check_disk para supervisar la partición /dev/hda1, pero en la máquina CentOS 8 en la que realizamos este tutorial no tenemos unidades hdx, sino sdx, por lo que modificamos tanto el nombre del comando como el parámetro relacionado:
... command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1 ...
Guardamos el archivo y recargamos la configuración del servicio Nagios NRPE para aplicar los nuevos ajustes:
~$ sudo systemctl reload nrpe
Cómo configurar el firewall de CentOS 8 para el servicio NRPE
Si tenemos activado el firewall de CentOS 8 en la máquina remota, lo que suele ocurrir por defecto, tendremos que añadimos una regla para que el servidor Nagios Core pueda conectar al servicio Nagios NRPE:
~$ sudo firewall-cmd --permanent --add-service=nrpe
Recargamos la configuración de firewall para aplicar los cambios:
~$ sudo firewall-cmd --reload
Cómo instalar el plugin NRPE en CentOS 8
De vuelta al servidor Nagios Core, es el momento de instalar el plugin NRPE en CentOS 8, para lo que empezaremos descomprimiendo el paquete que descargamos anteriormente:
~$ tar xf nrpe-4.0.3.tar.gz
Cambiamos el directorio de trabajo:
~$ cd nrpe-4.0.3
Configuramos la compilación:
$ ./configure
En este caso, a diferencia de las máquinas remotas, aquí compilamos el plugin en lugar del servicio:
$ make check_nrpe
Y lo instalamos:
$ sudo make install-plugin
Podemos abandonar el directorio de trabajo e incluso eliminarlo.
Es posible probar el plugin NRPE directamente desde consola indicando la dirección de la máquina remota:
~$ /usr/local/nagios/libexec/check_nrpe -H centos82.local.lan NRPE v4.0.3
Si la configuración es correcta, el plugin NRPE conecta con el servicio NRPE de la máquina remota y este responde con la versión del servicio.
Con el plugin NRPE instalado en el servidor Nagios Core, debemos añadir una configuración para el uso del comando en commands.cfg:
~$ sudo nano /usr/local/nagios/etc/objects/commands.cfg
Al final del archivo añadimos la definición de comando para el plugin NRPE:
... define command { command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
Podemos ver que el valor del parámetro command_line es bastante parecido a la prueba que realizamos antes, aunque se añade un parámetro para lanzar comandos remotos.
Guardamos los cambios y editamos ahora el archivo nagios.cfg para que incluya los archivos de configuración de máquinas remotas:
~$ sudo nano /usr/local/nagios/etc/nagios.cfg
Buscamos esta línea:
... #cfg_dir=/usr/local/nagios/etc/servers ...
Y la activamos eliminando el carácter # inicial:
... cfg_dir=/usr/local/nagios/etc/servers ...
Ya podemos guardar el archivo.
El subdirectorio servers/ que acabamos de habilitar en la configuración no existe, así que lo creamos antes de continuar:
~$ sudo mkdir /usr/local/nagios/etc/servers
Y creamos dentro de este subdirectorio el archivo de configuración de la máquina remota que hemos preparado:
~$ sudo nano /usr/local/nagios/etc/servers/centos82.local.lan.cfg
Empezamos añadiendo la definición de la máquina remota, es decir, su información identificativa y para conexión:
define host { use linux-server host_name centos82.local.lan alias CentOS 8 (remota) address centos82.local.lan max_check_attempts 5 check_period 24x7 notification_interval 30 notification_period 24x7 }
La configuración de este bloque es bastante intuitiva, destacando la directiva address, que es donde debes indicar la dirección IP o nombre DNS de la máquina remota.
A continuación de este bloque añadimos otros para definir los servicios que queremos supervisar, dentro de los que la máquina remota permite según su configuración:
... define service { use generic-service host_name centos82.local.lan service_description Carga de CPU check_command check_nrpe!check_load } define service { use generic-service host_name centos82.local.lan service_description Espacio libre en /dev/sda1 check_command check_nrpe!check_sda1 }
Hemos elegido estos dos servicios de ejemplo, pero obviamente puedes añadir otros y todos los que quieras.
Guardamos los cambios y, como ya hemos terminado la configuración de Nagios Core para añadir la máquina remota, recargamos la configuración del servicio:
~$ sudo systemctl reload nagios
Accedemos a la interfaz web de Nagios Core, nos dirigimos a la sección «Hosts» y ya podremos ver la nueva máquina remota en la lista:
Y si accedemos a la sección «Services» veremos también el estado de los servicios de la nueva máquina remota:
Conclusión
Ahora que sabes cómo instalar Nagios en CentOS 8 ya puedes monitorizar los servicios de distintas máquinas gracias a la suite compuesta por Nagios Core, los plugins de Nagios, Nagios NRPE y el plugin NRPE.
Si te ha quedado alguna duda o tienes preguntas, sugerencias de mejora o actualización del artículo, notificaciones de errores, etc. puedes dejar un comentario.
¡Apoya comoinstalar.me!
¿Ya puedes monitorizar los servicios de tus sistemas en red gracias a esta guía de instalación de Nagios en CentOS 8? Si es así y quieres agradecérnoslo, cualquier pequeña ayuda contribuye mucho al mantenimiento de este sitio y la creación de nuevos artículos sobre CentOS 8 y Nagios. Puedes dejar una propina a partir de 1 $ desde PayPal:
O, si te sientes especialmente agradecido, puedes invitarnos a un cappuccino:
¡Gracias!
Actualizado a la versión 2.4.0 de los plugins de Nagios para CentOS Stream 8.
Hola, buenas. Tengo un problema con el NRPE, cuando termino la instalación y procedo a comprobar en la página los procesos, me salta «NRPE: Unable to read output«. Tras buscar mucho por Internet no he conseguido solucionarlo.
Un saludo.
Hola, Christian. Yo buscaría el problema así:
En alguno de estos pasos deberías encontrar algo.