Cómo instalar y configurar Nagios en Rocky Linux 9
Nagios es un popular y uno de los más potentes sistemas de monitorización de código abierto. Supervisa tu infraestructura informática y mantiene tus redes, servidores, aplicaciones y procesos funcionando sin problemas. Con un sistema de monitorización, puedes detectar problemas antes de que ocurran y solucionarlos rápidamente para ahorrar costes y tiempo de inactividad.
Este tutorial te enseña a instalar y configurar Nagios en un servidor Rocky Linux 9. También haremos alguna configuración básica e instalaremos el Ejecutor del Plugin Remoto de Nagios (NPRE), que nos permite monitorizar hosts remotos.
Requisitos previos
- Un servidor con Rocky Linux 9.
- Un usuario no usuario con privilegios de root.
- SELinux está desactivado. Para este tutorial, incluso si mantienes SELinux activado, funcionaría sin problemas. Pero dependiendo de los monitores Nagios que utilices, tendrás que configurar SELinux o será mejor que lo mantengas deshabilitado.
- Otro servidor que ejecute Rocky Linux 9 y que quieras monitorizar.
- Asegúrate de que todo está actualizado.
$ sudo dnf update
Paso 1 – Configurar el cortafuegos
El primer paso es configurar el cortafuegos. El servidor Rocky Linux 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
Recarga el Cortafuegos.
$ sudo firewall-cmd --reload
Paso 2 – Instalar Apache y PHP
Para ejecutar Nagios, necesitarás Apache junto con PHP instalados.
Instala y habilita el servicio Apache.
$ sudo dnf install httpd $ sudo systemctl enable httpd
Para instalar PHP, utilizaremos el Repositorio Remi. Instala Remi Repo y habilita PHP 8.1.
$ sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm $ sudo dnf module reset php -y $ sudo dnf module enable php:remi-8.1 -y
Instala PHP y varios módulos PHP comunes.
$ sudo dnf install -y php php-gd php-curl
Verifica la instalación de PHP.
$ php --version PHP 8.1.16 (cli) (built: Feb 14 2023 18:59:41) (NTS gcc x86_64) Copyright (c) The PHP Group Zend Engine v4.1.16, Copyright (c) Zend Technologies with Zend OPcache v8.1.16, Copyright (c), by Zend Technologies
Habilita PHP e inicia el servicio.
$ sudo systemctl enable --now php-fpm
Reinicia el servicio 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
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 se te pida.
Abre la URL http://<yourserverip>/info.php
en tu navegador y aparecerá la siguiente página.
Paso 3 – Instalar Nagios
La mayor parte de este tutorial requerirá que instales y trabajes en tu servidor principal.
Instalar 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. También necesitamos el repositorio EPEL, pero se instaló automáticamente con el repositorio Remi en el paso anterior, así que podemos omitirlo aquí.
$ sudo dnf install gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel unzip wget gettext autoconf net-snmp-utils postfix automake perl-Net-SNMP
Descarga Nagios
Descarga la última versión de la página de versiones de Nagios en GitHub. En el momento del tutorial, 4.4.10 es la última versión disponible. Modifica el comando en caso de que quieras una versión diferente.
$ cd ~ $ sudo wget -O nagios.tar.gz https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.10/nagios-4.4.10.tar.gz
Extrae el archivo tar.
$ sudo tar zxf nagios.tar.gz
Mueve el directorio extraído al directorio /usr/src
.
sudo mv nagios-4.4.10 /usr/src/nagios
Cambia al directorio /usr/src/nagios
.
$ cd /usr/src/nagios
Compilar Nagios
El siguiente paso es compilar Nagios a partir de sus archivos fuente. Ejecuta el script configure
para realizar comprobaciones y asegurarte de que todas las dependencias están presentes.
$ sudo ./configure
Deberías obtener una salida similar tras la finalización satisfactoria del script.
*** Configuration summary for nagios 4.4.10 2023-01-17 ***: 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: /usr/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
Crear usuario y grupo de Nagios
Crea un nuevo usuario y grupo que ejecutará el proceso 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, CGIs y archivos HTML de Nagios.
$ sudo make install
Crear directorio de comandos externos
Nagios puede procesar comandos de aplicaciones externas y para ello necesita que se cree 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 autenticación HTTP. 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
El nombre por defecto para el usuario es nagiosadmin
. Puedes utilizar otro nombre de usuario sustituyendo todas las instancias de nagiosadmin
en el archivo /usr/local/nagios/etc/cgi.cfg
por el nombre de usuario preferido. O puedes añadir el nombre de usuario utilizando una coma como se indica a continuación.
authorized_for_system_information=nagiosadmin, username1 authorized_for_configuration_information=nagiosadmin, username1 authorized_for_system_commands=nagiosadmin, username1 authorized_for_all_services=nagiosadmin, username1 authorized_for_all_hosts=nagiosadmin, username1 authorized_for_all_service_commands=nagiosadmin, username1 authorized_for_all_host_commands=nagiosadmin, username1
Puedes añadir usuarios con acceso de sólo lectura habilitando la siguiente configuración en el archivo eliminando la almohadilla (#) que aparece delante. A continuación, ejecuta el htpasswd
con el nombre de usuario.
authorized_for_read_only=username2
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 epel-release $ sudo dnf install -y gcc glibc glibc-common make gettext automake autoconf wget openssl-devel net-snmp net-snmp-utils postgresql-devel openldap-devel bind-utils samba-client fping openssh-clients lm_sensors perl-Net-SNMP
Descarga la última versión de la página GitHub de los plugins de Nagios. En el momento de realizar el tutorial, 2.4.3 es la última versión disponible. Modifica el comando en caso de que quieras una versión diferente.
$ cd ~ $ sudo wget -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.4.3/nagios-plugins-2.4.3.tar.gz
Extrae el archivo tar.
$ sudo tar zxf nagios-plugins.tar.gz
Mueve el directorio extraído al directorio /usr/src
.
$ sudo mv nagios-plugins-2.4.3 /usr/src/nagios-plugins
Vuelve al directorio /usr/src/nagios-plugins
.
$ cd /usr/src/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
Descarga la última versión de la página de versiones de GitHub de NRPE. En el momento de escribir este tutorial, la última versión disponible es la 4.1.0. Modifica el siguiente comando en caso de que quieras una versión diferente.
$ cd ~ $ wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.1.0/nrpe-4.1.0.tar.gz
Extrae el archivo.
$ tar zxf nrpe-*.tar.gz
Mueve el directorio extraído al directorio /usr/src
.
$ sudo mv nrpe-4.1.0 /usr/src/nrpe
Cambia al directorio /usr/src/nrpe
.
$ cd /usr/src/nrpe
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 hora 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 mensaje de inicio de sesión.
Introduce las credenciales que creaste durante el método de autenticación HTTP y aparecerá la siguiente pantalla.
Paso 7 – Monitorización de hosts
Para monitorizar un host, necesitas instalar NRPE Daemon y los plugins de Nagios en el host. Monitorizaremos un servidor Rocky Linux 9 desde nuestro servidor Nagios.
Inicia sesión en tu host.
$ ssh user@monitored_server_ip
Instala los plugins de Nagios
Instala los plugins de Nagios repitiendo el paso 4 anterior.
Instala NRPE
Instala los requisitos previos necesarios para el demonio NRPE.
$ sudo dnf install -y gcc glibc glibc-common openssl openssl-devel perl wget
Descarga NRPE.
$ cd ~ $ wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.1.0/nrpe-4.1.0.tar.gz
Extrae el archivo.
$ tar zxf nrpe-*.tar.gz
Mueve el directorio extraído al directorio /usr/src
.
$ sudo mv nrpe-4.1.0 /usr/src/nrpe
Cambia al directorio NRPE.
$ cd /usr/src/nrpe
Configura e instala NRPE.
$ sudo ./configure --enable-command-args $ sudo make all
Crea el Usuario y el grupo.
$ sudo make install-groups-users
Instala los binarios NRPE, el demonio NRPE 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 de servicio NPRE.
$ sudo make install-init $ sudo systemctl enable nrpe
Tienes que actualizar el archivo de configuración NPRE que se encuentra 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 peticiones del Localhost (127.0.0.1). Debes 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 a los clientes especificar argumentos de comando. 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, encontrarás 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, mientras que otros pueden aceptar argumentos del usuario. Cada comando puede tener las siguientes opciones de notificación.
- W significa estados de servicio Advertencia
- C significa estados de servicio Críticos
- R significa Notificar al recuperarse el servicio (estados OK)
Así, puedes especificar a qué nivel qué tipo de notificación puede enviar un comando. No entraremos 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.
Añade el siguiente comando para comprobar el espacio del disco raíz.
command[check_root]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /
Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.
Permite el puerto 5666 que utiliza el plugin NPRE.
$ sudo firewall-cmd --permanent --add-port=5666/tcp
Recarga el cortafuegos.
$ sudo firewall-cmd --reload
Inicia NPRE.
$ sudo systemctl start nrpe
Todos los comandos a partir de aquí se ejecutarán en el servidor Nagios principal, 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.1.0
Para supervisar los hosts, tendrás que crear archivos de configuración para cada host que quieras supervisar. Estos hosts serán 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.
$ sudo nano /usr/local/nagios/etc/nagios.cfg
Busca el siguiente archivo y descoméntalo eliminando el #
que aparece delante.
cfg_dir=/usr/local/nagios/etc/servers
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.
El siguiente paso es añadir el comando check_nrpe
al archivo /usr/local/nagios/etc/objects/commands.cfg
para que se pueda utilizar 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 se te solicite.
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. Necesitarás 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 monitored_server_host_name service_description PING check_command check_ping!200.0,20%!400.0,90% }
Añade el siguiente bloque para monitorizar la media 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-service
predefinida por Nagios.
A continuación, añade un bloque para monitorizar el uso del disco. Modifica el comando con las etiquetas de disco adecuadas.
define service { use generic-service host_name monitored_server_host_name service_description /dev/vda1 free space check_command check_nrpe!check_disk!-a '-w 20% -c 10% -p /dev/vda1' }
Monitoriza SSH utilizando 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 monitored_server_host_name 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 }
Comprobemos 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 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%' }
Comprueba la partición raíz y su uso de disco.
define service{ use generic-service host_name nagiosclient service_description Root / Partition check_command check_nrpe!check_disk!-a '-w 20% -c 10% -p /' }
Comprueba si hay instalado un servidor HTTP.
define service { use generic-service host_name nagiosclient service_description HTTP check_command check_http }
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 localhost en la página.
Haz clic en el host recién configurado(nagiosclient) y si todo está configurado correctamente, deberías ver su estado. El estado tardará aproximadamente un minuto en aparecer.
Para ver los servicios o los monitores que hemos configurado, haz clic en la opción Ver detalle del estado de este host y deberías ser recibido por la siguiente página.
Esto debería darte una idea adecuada de cómo están funcionando tus hosts.
Paso 8 – Instalar Nginx
Puedes ejecutar Nagios directamente a través de la IP del servidor o hacer que lo aloje en tu nombre de dominio. Nagios ya incluye archivos de configuración de Apache, pero nosotros utilizaremos Nginx para ejecutarlo. Utilizaremos Nginx como proxy inverso frente al servidor web Apache.
Apache ya lo está ejecutando en el puerto 80. Por lo tanto, primero tenemos que cambiarlo. 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 se te pida. Como utilizaremos el nombre de dominio para acceder a Nagios, no necesitamos abrir el puerto 8080 para el acceso público.
Reinicia el servidor Apache.
$ sudo systemctl restart httpd
A continuación, instala Nginx.
Rocky Linux 9 viene con una versión antigua de Nginx. Necesitas descargar el repositorio oficial de Nginx para instalar la última versión.
Crea y abre el archivo /etc/yum.repos.d/nginx.repo
para crear el repositorio oficial de Nginx.
$ sudo nano /etc/yum.repos.d/nginx.repo
Pega en él el siguiente código.
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.
Instala el servidor Nginx.
$ sudo dnf install nginx
Verifica la instalación.
$ nginx -v nginx version: nginx/1.22.1
Habilita e inicia el servidor Nginx.
$ sudo systemctl enable nginx --now
Paso 9 – 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 ello utilizaremos el instalador de paquetes Snapd. Como Rocky Linux no lo incluye, instala el instalador de Snapd. Requiere el repositorio EPEL para funcionar, que ya hemos instalado antes, así que podemos omitirlo.
Instala Snapd.
$ sudo dnf install -y snapd
Activa e inicia el servicio Snap.
$ sudo systemctl enable snapd --now
Instala el paquete principal de Snap, y asegúrate de que tu versión de Snapd está actualizada.
$ sudo snap install core && sudo snap refresh core
Crea los enlaces necesarios para que Snapd funcione.
$ sudo ln -s /var/lib/snapd/snap /snap $ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Ejecuta el siguiente comando para instalar Certbot.
$ sudo snap install --classic certbot
Utiliza el siguiente comando para asegurarte de que se puede ejecutar el comando Certbot creando un enlace simbólico al directorio /usr/bin
.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Verifica la instalación.
$ certbot --version certbot 2.3.0
Ejecuta el siguiente comando para generar un certificado SSL.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d nagios.example.com
El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/nagios.example.com
de tu servidor.
Genera un certificado de grupo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Realiza una ejecución en seco del proceso para comprobar si la renovación SSL funciona correctamente.
$ sudo certbot renew --dry-run
Si no ves ningún error, ya está todo listo. Tu certificado se renovará automáticamente.
Paso 10 – Configurar Nginx
Antes de configurar Nginx, hay otro cambio que debemos hacer. Por defecto, Apache sirve Nagios a través de http://<serverIP>:8080/nagios
. Ahora, podemos configurar un proxy directamente sobre Nagios, pero se servirá a través de https://nagios.example.com/nagios
. Podemos hacer una redirección en Nginx a la URL raíz, lo que complica las cosas. Por eso, 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 se te 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 lo siguiente.
#Alias /nagios "/usr/local/nagios/share"
Añade la siguiente línea debajo.
DocumentRoot /usr/local/nagios/share
Añade la siguiente línea al principio del archivo.
<VirtualHost *:8080>
Añade la siguiente línea al final del archivo.
</VirtualHost>
Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te 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 funcione, 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 Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 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 se te 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;
Cuando 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, reinicia el servidor Nginx.
$ sudo systemctl restart nginx
Configurar SELinux
Si has mantenido SELinux activado, ejecuta el siguiente comando para permitir que Nginx se conecte a la red.
$ sudo setsebool -P httpd_can_network_connect on
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 Rocky Linux 9 para supervisar varios servicios como la carga, el uso de disco/swap, los usuarios, el total de procesos, HTTP y SSH. Con esto concluye nuestro tutorial. Para 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 pregunta, publícala en los comentarios a continuación.