Cómo instalar y configurar Nagios en CentOS 8

Nagios es un popular y uno de los más potentes sistemas de monitorización informática de código abierto. Hace un seguimiento de tu infraestructura informática y garantiza que tus redes, servidores, aplicaciones y procesos funcionen sin problemas. El uso de un sistema de monitorización te permite identificar los problemas antes de que se produzcan y desplegar las correcciones rápidamente, lo que supone un ahorro de costes y de tiempo de inactividad.

En este tutorial, aprenderás a instalar y configurar Nagios en un servidor basado en CentOS 8. También realizaremos una configuración básica e instalaremos Nagios Remote Plugin Executor (NPRE), que nos permitirá monitorizar hosts remotos.

Requisitos previos

  1. Un servidor con CentOS 8
  2. Un usuario no-sudo con privilegios de root.
  3. SELinux deshabilitado
  4. Otro servidor que ejecute CentOS 8 y que quieras monitorizar.
  5. Asegúrate de que todo está actualizado.
    $ sudo dnf update
    

Paso 1 - Configurar el cortafuegos

El primer paso es configurar el cortafuegos. El servidor Fedora viene con el cortafuegos Firewalld.

Comprueba si el cortafuegos se está ejecutando.

$ sudo firewall-cmd --state

Deberías obtener la siguiente salida.

running

Comprueba los servicios/puertos permitidos actualmente.

$ sudo firewall-cmd --permanent --list-services

Debería mostrar la siguiente salida.

dhcpv6-client mdns ssh

Permite los puertos HTTP y HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Vuelve a comprobar el estado del cortafuegos.

$ sudo firewall-cmd --permanent --list-services

Deberías ver una salida similar.

dhcpv6-client http https mdns ssh

Vuelve a cargar el cortafuegos.

$ sudo systemctl reload firewalld

Paso 2 - Instalar Apache y PHP

Para ejecutar Nagios, necesitarás Apache junto con PHP instalados.

Instala y habilita el servicio de Apache.

$ sudo dnf install httpd
$ sudo systemctl enable --now httpd

Para instalar PHP, utilizaremos el Repositorio Remi. Instala Remi Repo y habilita PHP 7.4.

$ sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
$ sudo dnf module reset php
$ sudo dnf module enable php:remi-7.4

Instala PHP y varios módulos comunes de PHP.

$ sudo dnf install php php-gd php-curl

Habilita PHP y arranca el servicio.

$ sudo systemctl enable --now php-fpm

Reinicia el servicio de Apache para que el cambio surta efecto.

$ sudo systemctl restart httpd

Puedes comprobar la instalación de Apache y PHP creando un archivo info.php en el directorio /var/www/html que fue creado por el instalador de Apache.

$ sudo nano /var/www/html/info.php

Pega el siguiente código en el editor.

<?php phpinfo();

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida.

Abre la URL http://<yourserverip>/info.php en tu navegador y deberías ser recibido por la siguiente página.

Página de información de PHP

Paso 3 - Instalar Nagios

La mayor parte de este tutorial requerirá que instales y trabajes en tu servidor principal.

Instalar las dependencias

Este tutorial requerirá que Nagios y sus plugins estén construidos desde el código fuente. Por lo tanto, necesitas instalar primero algunas librerías de desarrollo.

$ sudo dnf install gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel xinetd unzip wget gettext autoconf net-snmp-utils epel-release postfix automake
$ sudo dnf config-manager --enable powertools 
$ sudo dnf install perl-Net-SNMP

Descarga Nagios

Pasa al directorio /usr/src donde colocaremos los archivos fuente de Nagios descargados.

$ cd /usr/src

Descarga la última versión de Nagios desde su página de Github. En el momento del tutorial, la última versión disponible es la 4.4.6. Modifica el comando en caso de que quieras una versión diferente.

$ sudo wget https://github.com/NagiosEnterprises/nagioscore/archive/nagios-4.4.6.tar.gz

Extrae el archivo tar.

$ sudo tar zxf nagios-*.tar.gz

Cambia al directorio fuente de Nagios.

$ cd nagioscore-nagios-*/

Compilar Nagios

El siguiente paso es compilar Nagios a partir de sus archivos fuente. Ejecuta el script configure para comprobar que todas las dependencias están presentes.

$ sudo ./configure

Deberías obtener una salida similar tras la finalización con éxito del script.

*** Configuration summary for nagios 4.4.6 2020-04-28 ***:

 General Options:
 -------------------------
        Nagios executable:  nagios
        Nagios user/group:  nagios,nagios
       Command user/group:  nagios,nagios
             Event Broker:  yes
        Install ${prefix}:  /usr/local/nagios
    Install ${includedir}:  /usr/local/nagios/include/nagios
                Lock file:  /run/nagios.lock
   Check result directory:  /usr/local/nagios/var/spool/checkresults
           Init directory:  /lib/systemd/system
  Apache conf.d directory:  /etc/httpd/conf.d
             Mail program:  /sbin/sendmail
                  Host OS:  linux-gnu
          IOBroker Method:  epoll

 Web Interface Options:
 ------------------------
                 HTML URL:  http://localhost/nagios/
                  CGI URL:  http://localhost/nagios/cgi-bin/
 Traceroute (used by WAP):


Review the options above for accuracy.  If they look okay,
type 'make all' to compile the main program and CGIs.

Inicia la compilación.

$ sudo make all

Crea un usuario y un grupo de Nagios

Crea un nuevo usuario y grupo que ejecutará el proceso de Nagios.

$ sudo make install-groups-users

Deberías ver la siguiente salida.

groupadd -r nagios
useradd -g nagios nagios

Añade el usuario apache al grupo nagios.

$ sudo usermod -a -G nagios apache

Instala los binarios de Nagios

Ejecuta el siguiente comando para instalar los binarios de Nagios, los CGIs y los archivos HTML.

$ sudo make install

Crear directorio de comandos externos

Nagios puede procesar comandos de aplicaciones externas y para ello necesita que se configure un directorio.

$ sudo make install-commandmode
/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/var/rw
chmod g+s /usr/local/nagios/var/rw

*** External command directory configured ***

Instalar los archivos de configuración de Nagios

Instala los archivos de configuración de ejemplo.

$ sudo make install-config

Instalar los archivos de configuración de Apache

Ejecuta el siguiente comando para instalar los archivos de configuración de Apache.

$ sudo make install-webconf

Reinicia el servidor web para activar la configuración.

$ sudo systemctl restart httpd

Crear un archivo de servicio Systemd

Ejecuta el siguiente comando para instalar un archivo de unidad systemd.

$ sudo make install-daemoninit

Activar la autenticación HTTP

Puedes bloquear la interfaz web de Nagios mediante la autenticación HTTP. Para ello, crea un usuario administrador llamado nagiosadmin.

Ejecuta el siguiente comando para utilizar htpasswd para crear el usuario. Se te pedirá una contraseña.

$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password:
Re-type new password:
Adding password for user nagiosadmin

Reinicia el servidor para que la configuración surta efecto.

$ sudo systemctl restart httpd

Paso 4 - Instalar los plugins de Nagios

Instala los requisitos previos necesarios para los plugins de Nagios.

$ sudo dnf install -y gcc glibc glibc-common make gettext automake autoconf wget openssl-devel net-snmp net-snmp-utils epel-release postgresql-devel libdbi-devel openldap-devel mysql-devel mysql-libs bind-utils samba-client fping openssh-clients lm_sensors
$ sudo dnf config-manager --enable powertools
$ sudo dnf install -y perl-Net-SNMP

Vuelve al directorio /usr/src.

$ cd /usr/src

Descarga la última versión de Nagios desde su página de Github. En el momento del tutorial, la última versión disponible es la 2.3.3. Modifica el comando en caso de que quieras una versión diferente.

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

Extrae el archivo tar.

$ sudo tar zxf nagios-plugins.tar.gz

Cambia al directorio de plugins.

$ cd nagios-plugins-*

Ejecuta los siguientes comandos para compilar e instalar los plugins.

$ sudo ./configure
$ sudo make
$ sudo make install

Paso 5 - Instalar el plugin check_nrpe

Cambia al directorio /usr/src.

$ cd /usr/src

Descarga la última versión de NPRE desde su página de Github. En el momento de escribir este tutorial, la última versión disponible es la 4.0.3. Modifica el siguiente comando en caso de que quieras una versión diferente.

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

Extrae el archivo.

$ sudo tar zxf nrpe-*.tar.gz

Cambia al directorio de NPRE.

$ cd nrpe-4.0.3

Configura e instala el plugin.

$ sudo ./configure
$ sudo make check_nrpe
$ sudo make install-plugin

Esto colocará el plugin check_nrpe en el directorio /usr/local/nagios/libexec/.

Paso 6 - Iniciar Nagios

Con Nagios y los plugins instalados, es el momento de iniciar el servicio Nagios.

$ sudo systemctl start nagios

Comprueba el estado del servicio para ver si se está ejecutando correctamente.

$ sudo systemctl status nagios

Interfaz web de Nagios

Abre la URL http://<domain_or_ip_address>/nagios en tu navegador. Deberías ver un aviso de inicio de sesión.

Introduce las credenciales que creaste durante el método de autenticación HTTP y deberías ser recibido con la siguiente pantalla.

Página web de Nagios

Paso 7 - Monitorización de hosts

Para monitorizar un host, necesitas instalar el demonio NRPE y los plugins de Nagios en el host. Vamos a monitorizar un servidor basado en CentOS 8 desde nuestro servidor Nagios.

Inicia sesión en tu host.

$ ssh [email protected]_server_ip

Instala los plugins de Nagios

Instala los plugins de Nagios repitiendo el paso 4 anterior.

Instalar NRPE

Instala los requisitos previos necesarios para el demonio NRPE.

$ sudo dnf install -y gcc glibc glibc-common openssl openssl-devel perl wget

Pasa al directorio /usr/src.

$ cd /usr/src

Descarga NRPE.

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

Extrae el archivo.

$ sudo tar zxf nrpe-*.tar.gz

Cambia al directorio NPRE.

$ cd nrpe-4.0.3

Configura e instala NPRE.

$ sudo ./configure --enable-command-args
$ sudo make all

Crea el usuario y el grupo.

$ sudo make install-groups-users

Instala los binarios NPRE, el demonio NPRE y el plugin check_npre.

$ sudo make install

Instala los archivos de configuración.

$ sudo make install-config

Actualiza el archivo de servicios. El archivo /etc/services se utiliza para traducir los nombres de los servicios a números de puerto.

$ sudo sh -c "echo >> /etc/services"
$ sudo sh -c "sudo echo '# Nagios services' >> /etc/services"
$ sudo sh -c "sudo echo 'nrpe    5666/tcp' >> /etc/services"

Instala el demonio del servicio NPRE.

$ sudo make install-init
$ sudo systemctl enable nrpe

Tienes que actualizar el archivo de configuración de NPRE situado en /usr/local/nagios/etc/nrpe.cfg.

Abre el archivo para editarlo.

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

Por defecto, NPRE sólo escucha las peticiones del localhost (127.0.0.1). Tienes que añadir al archivo la dirección IP de tu servidor Nagios.

allowed_hosts=127.0.0.1,10.25.5.2

La siguiente opción determina si el demonio NPRE permitirá o no que los clientes especifiquen los argumentos de los comandos. Permite la opción introduciendo el valor como 1, que habilita las configuraciones avanzadas de NPRE.

dont_blame_nrpe=1

A continuación, al desplazarte hacia abajo, te encontrarás con una lista de comandos NRPE con sus definiciones. Todos ellos están comentados. Tienes que descomentarlos para que Nagios pueda utilizarlos.

A cada comando se le pueden pasar argumentos. Algunos de los comandos tienen argumentos codificados delante de ellos, mientras que otros pueden aceptar argumentos del usuario. Cada comando puede tener las siguientes opciones de notificación.

  • W = significa estados de servicio de Advertencia
  • C = significa estados de servicio Críticos
  • R = significa notificar cuando se recupera el servicio (estados OK)

Así, puedes especificar a qué nivel puede enviar un comando qué tipo de notificación. No vamos a entrar en la descripción detallada y la función de cada uno de los comandos, ya que están fuera del alcance de este tutorial.

# The following examples use hardcoded command arguments...
# This is by far the most secure method of using NRPE

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

# The following examples allow user-supplied arguments and can
# only be used if the NRPE daemon was compiled with support for
# command arguments *AND* the dont_blame_nrpe directive in this
# config file is set to '1'.  This poses a potential security risk, so
# make sure you read the SECURITY file before doing this.

### MISC SYSTEM METRICS ###
command[check_users]=/usr/local/nagios/libexec/check_users $ARG1$
command[check_load]=/usr/local/nagios/libexec/check_load $ARG1$
command[check_disk]=/usr/local/nagios/libexec/check_disk $ARG1$
command[check_swap]=/usr/local/nagios/libexec/check_swap $ARG1$
command[check_cpu_stats]=/usr/local/nagios/libexec/check_cpu_stats.sh $ARG1$
command[check_mem]=/usr/local/nagios/libexec/custom_check_mem -n $ARG1$

### GENERIC SERVICES ###
command[check_init_service]=sudo /usr/local/nagios/libexec/check_init_service $ARG1$
command[check_services]=/usr/local/nagios/libexec/check_services -p $ARG1$

### SYSTEM UPDATES ###
command[check_yum]=/usr/local/nagios/libexec/check_yum
command[check_apt]=/usr/local/nagios/libexec/check_apt

### PROCESSES ###
command[check_all_procs]=/usr/local/nagios/libexec/custom_check_procs
command[check_procs]=/usr/local/nagios/libexec/check_procs $ARG1$

### OPEN FILES ###
command[check_open_files]=/usr/local/nagios/libexec/check_open_files.pl $ARG1$

### NETWORK CONNECTIONS ###
command[check_netstat]=/usr/local/nagios/libexec/check_netstat.pl -p $ARG1$ $ARG2$

Descomenta los comandos anteriores eliminando el símbolo # que aparece delante de ellos. Puedes descomentar tantos comandos como necesites.

Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.

Permite el puerto 5666 que utiliza el plugin de NPRE.

$ sudo firewall-cmd --permanent --add-port=5666/tcp

Vuelve a cargar el cortafuegos.

$ sudo systemctl reload firewalld

Inicia NPRE.

$ sudo systemctl start nrpe

Todos los comandos a partir de ahora se ejecutarán en el servidor principal de Nagios, a menos que se especifique lo contrario.

Comprueba si NRPE funciona ejecutando el siguiente comando en tu servidor Nagios principal.

$ /usr/local/nagios/libexec/check_nrpe -H monitored_server_ip

Deberías ver la siguiente salida.

NRPE v4.0.3

Para monitorizar los hosts, tendrás que crear archivos de configuración para cada host que quieras monitorizar. Estos hosts serán entonces accesibles a través de la interfaz web de Nagios.

Crea el directorio para almacenar los archivos de configuración y dale los permisos adecuados.

$ sudo mkdir /usr/local/nagios/etc/servers
$ sudo chown -R nagios:nagios /usr/local/nagios/etc/servers
$ sudo chmod g+w /usr/local/nagios/etc/servers

Abre el archivo de configuración de Nagios /usr/local/nagios/etc/nagios.cfg para editarlo. Busca el siguiente archivo y descoméntalo eliminando el # que hay delante.

#cfg_dir=/usr/local/nagios/etc/servers

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida.

El siguiente paso es añadir el comando check_nrpe al archivo /usr/local/nagios/etc/objects/commands.cfg para que pueda utilizarlo para monitorizar hosts.

Abre el archivo /usr/local/nagios/etc/objects/commands.cfg para editarlo.

$ sudo nano /usr/local/nagios/etc/objects/commands.cfg

Pega el siguiente código al final del archivo.

define command {
    command_name 				   check_nrpe
    command_line    			   $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$ $ARG2$
}

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida.

Crea un nuevo archivo de configuración para el host remoto en el directorio /usr/local/nagios/etc/servers/.

$ sudo nano /usr/local/nagios/etc/servers/yourhost.cfg

Añade el siguiente código sustituyendo el valor host_name por el nombre de tu host remoto, el valor alias por la descripción de tu host y el valor address por la dirección IP de tu host remoto.

define host {
        use                             linux-server
        host_name                       monitored_server_host_name
        alias                           My client server
        address                         monitored_server_private_ip
        max_check_attempts              5
        check_period                    24x7
        notification_interval           30
        notification_period             24x7
}

Con esta configuración, Nagios te avisará cuando el host esté activo o inactivo. Tendrás que añadir más servicios para monitorizar cosas adicionales.

Añade el siguiente bloque para comprobar las estadísticas de conexión del host.

define service {
      use                             generic-service
      host_name                       client01
      service_description             PING
      check_command                   check_ping!200.0,20%!400.0,90%
}

Añade el siguiente bloque para monitorizar el promedio de carga de tu servidor.

define service {
        use                             generic-service
        host_name                       monitored_server_host_name
        service_description             Load average
        check_command                   check_nrpe!check_load!-a '-w 0.7,0.6,0.5 -c 0.9,0.8,0.7'
}

La directiva use generic-service indica a Nagios que herede de una plantilla llamada generic-servicepredefinida por Nagios.

A continuación, añade un bloque para monitorizar el uso del disco.

define service {
        use                             generic-service
        host_name                       monitored_server_host_name
        service_description             /dev/sda1 free space
        check_command                   check_nrpe!check_disk!-a '-w 20% -c 10% -p /dev/sda1'
}

A continuación, podemos monitorizar el servicio HTTP utilizando el siguiente bloque de código.

define service {
    use                 				generic-service
    host_name 					        monitored_server_host_name
    service_description 				HTTP
    check_command       				check_http
}

Monitoriza SSH usando el siguiente bloque. El siguiente bloque comprobará el servidor SSH y genera una alerta si el servidor no responde en 5 segundos.

define service {
    use                                 generic-service
    host_name                           nagiosclient
    service_description                 SSH Version Check
    check_command                       check_ssh!-t 5
}

Comprobemos el número total de procesos en ejecución.

define service{                     
    use                     			generic-service            
    host_name               			monitored_server_host_name            
    service_description     			Total Processes            
    check_command           			check_nrpe!check_total_procs
}

Comprueba los usuarios conectados actualmente.

define service{                     
    use                     			generic-service            
    host_name               			monitored_server_host_name            
    service_description     			Current Users            
    check_command           			check_nrpe!check_users!-a '-w 5 -c 10'
}

Comprueba la partición raíz y su uso de disco.

define service{                     
    use                     			generic-service            
    host_name               			monitored_server_host_name            
    service_description     			Root / Partition            
    check_command           			check_nrpe!check_root
}

Comprueba el uso del disco SWAP.

define service{                     
    use                     			generic-service            
    host_name               			monitored_server_host_name            
    service_description     			SWAP Usage            
    check_command           			check_nrpe!check_swap!-a '-w 40% -c 20%'
}

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.

Reinicia Nagios.

$ sudo systemctl restart nagios

Comprobar los monitores

Abre tu panel de control de Nagios y haz clic en la opción Hosts de la barra lateral izquierda. Deberías ver el host recién configurado junto con el localhost en la página.

Monitorización de hosts Nagios

Haz clic en el host recién configurado(nagiosclient) y si todo está configurado correctamente, deberías ver su estado. El estado tardará más o menos un minuto en aparecer.

Detalles del host de Nagios

Para ver los servicios o los monitores que hemos configurado, haz clic en la opción Ver detalle del estado de este host y te debería aparecer la siguiente página.

Estado de los monitores del servicio Nagios

En nuestro caso, no hemos configurado la memoria Swap y, por tanto, estamos obteniendo un estado crítico para el servicio, ya que el espacio Swap es 0. Esto debería darte una idea adecuada de cómo están funcionando tus hosts.

Paso 8 - Instalar y configurar Nginx

Puedes ejecutar Nagios directamente a través de la IP del servidor o hacer que se aloje en tu propio nombre de dominio. Nagios ya viene con archivos de configuración de Apache, pero nosotros usaremos Nginx para ejecutarlo. Utilizaremos Nginx como proxy inverso frente al servidor web Apache.

Apache ya se está ejecutando en el puerto 80. Por lo tanto, tenemos que cambiar eso primero. Y entonces, podremos ejecutar Nginx como proxy.

Abre el archivo /etc/httpd/conf/httpd.conf para editarlo.

$ sudo nano /etc/httpd/conf/httpd.conf

Cambia la línea Listen 80 por Listen 8080.

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida.

Añade la nueva dirección IP a tu cortafuegos.

$ sudo firewall-cmd --permanent --add-port=8080/tcp
$ sudo systemctl reload firewalld

Reinicia el servidor Apache.

$ sudo systemctl restart httpd

A continuación, instala Nginx.

CentOS 8 viene con Nginx 1.14 por defecto, pero es una versión antigua. También podemos habilitar la última versión.

$ sudo dnf module enable nginx:1.20
$ sudo dnf install nginx

Activa el servidor Nginx.

$ sudo systemctl enable nginx

Paso 8a - Instalar y configurar SSL

Antes de configurar Nginx, instalaremos y configuraremos un certificado SSL para el dominio que vamos a utilizar con Nagios. En nuestro caso, utilizaremos http://nagios.example.com.

Para instalar un certificado SSL usando Let's Encrypt, necesitamos descargar la herramienta Certbot. Certbot está disponible en el repositorio EPEL de CentOS que ya hemos añadido antes en el tutorial.

$ sudo dnf install certbot python3-certbot-nginx

Detén el servicio Nginx.

$ sudo systemctl stop nginx

Genera un certificado SSL.

$ sudo certbot certonly --standalone --preferred-challenges --agree-tos --email [email protected] http -d nagios.example.com

El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/nagios.example.com de tu servidor.

Crea un Cron Job para renovar el SSL. Se ejecutará cada día para comprobar el certificado y renovarlo si es necesario. Para ello, primero crea el archivo /etc/cron.daily/certbot-renew y ábrelo para editarlo.

$ sudo nano /etc/cron.daily/certbot-renew

Pega el siguiente código.

#!/bin/sh
certbot renew --cert-name nagios.example.com --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida.

Cambia los permisos del archivo de la tarea para que sea ejecutable.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Genera un certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Antes de configurar Nginx, hay otro cambio que debemos hacer. Por defecto, Apache sirve a Nagios a través de http://<serverIP>:8080/nagios. Ahora podemos configurar un proxy directamente sobre Nagios, pero se servirá sobre https://nagios.example.com/nagios. Podemos hacer una redirección en Nginx a la URL raíz, lo que complica las cosas. Por ello, haremos un cambio en Apache y Nagios directamente.

Primero, abre el archivo /usr/local/nagios/etc/cgi.cfg para editarlo.

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

Cambia url_html_path=/nagios por url_html_path=/.

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida.

A continuación, abre /etc/httpd/conf.d/nagios.conf para editarlo.

$ sudo nano /etc/httpd/conf.d/nagios.conf

Cambia ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin" por ScriptAlias /cgi-bin "/usr/local/nagios/sbin".

Comenta la línea Alias /nagios "/usr/local/nagios/share" cambiándola por la siguiente.

#Alias /nagios "/usr/local/nagios/share" 

Añade la siguiente línea debajo de ella.

DocumentRoot /usr/local/nagios/share

Añade la siguiente línea en la parte superior del archivo.

<VirtualHost *:1080>

Añade la siguiente línea en la parte inferior del archivo.

</VirtualHost>

Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida.

Y por último, abre el archivo /usr/local/nagios/share/config.inc.php para editarlo.

$ sudo nano /usr/local/nagios/share/config.inc.php

Cambia $cfg['cgi_base_url']='/nagios/cgi-bin'; por $cfg['cgi_base_url']='/cgi-bin';.

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.

Reinicia tanto Apache como Nagios.

$ sudo systemctl restart httpd
$ sudo systemctl restart nagios

Para confirmar que todo funciona correctamente, abre la URL http://<serverIP>:1080 en tu navegador y deberías ver que Nagios funciona correctamente. Asegúrate también de que se reciben los datos de los Hosts.

Una vez que todo funciona, podemos proceder a crear nuestro archivo de configuración para Nginx.

Crea un archivo de configuración para Nagios en el directorio /etc/nginx/conf.d.

$ sudo nano /etc/nginx/conf.d/nagios.conf

Pega en él el siguiente código.

server {
    	listen 80; listen [::]:80;
	    server_name nagios.example.com;
    	return 301 https://$host$request_uri;
}

server {
        server_name nagios.example.com;

        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        access_log /var/log/nginx/nagios.access.log;
        error_log /var/log/nginx/nagios.error.log;

        ssl_certificate /etc/letsencrypt/live/nagios.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/nagios.example.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/nagios.example.com/chain.pem;
        ssl_session_timeout 1d;
        ssl_session_cache shared:MozSSL:10m;
        ssl_session_tickets off;

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
 
        location / {
                proxy_pass http://127.0.0.1:8080;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		       proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
        	    proxy_set_header X-Forwarded-Proto $scheme;
        }
}

Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida.

Valida el archivo de configuración.

$ sudo nginx -t

Si obtienes el siguiente error, tendrás que editar el archivo /etc/nginx/nginx.conf para añadir/ajustar el tamaño de la variable server_names_hash_bucket_size.

nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size

Abre el archivo /etc/nginx/nginx.conf para editarlo.

$ sudo nano /etc/nginx/nginx.conf

Añade la siguiente línea antes de

server_names_hash_bucket_size  64;

Una vez que hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida. Vuelve a validar Nginx.

Si no ves ningún problema, inicia el servidor Nginx.

$ sudo systemctl start nginx

Inicia el dominio https://nagios.example.com en tu navegador, y deberías ser recibido con la página de inicio de Nagios.

Conclusión

Has instalado y configurado Nagios en un servidor basado en CentOS 8 para monitorizar varios servicios como la carga, el uso de disco/swap, los usuarios, el total de procesos, HTTP y SSH. Con esto concluye nuestro tutorial. Si quieres saber más, deberías consultar la documentación oficial de Nagios que cubre la monitorización y varios comandos con gran detalle. Si tienes alguna duda, publícala en los comentarios de abajo.

También te podría gustar...