Monitoreo · 21 min read · Nov 09, 2025

Cómo instalar y configurar Nagios en Rocky Linux 9

Nagios es un sistema de monitoreo de código abierto popular y uno de los más poderosos. Monitorea tu infraestructura de TI y mantiene tus redes, servidores, aplicaciones y procesos funcionando sin problemas. Con un sistema de monitoreo, puedes detectar problemas antes de que ocurran y solucionarlos rápidamente para ahorrar costos y tiempo de inactividad.

Este tutorial te enseña cómo instalar y configurar Nagios en un servidor Rocky Linux 9. También haremos una configuración básica e instalaremos el Ejecutador de Plugins Remotos de Nagios (NPRE), que nos permite monitorear hosts remotos.

Prerrequisitos

  1. Un servidor que ejecute Rocky Linux 9.
  2. Un usuario no sudo con privilegios de root.
  3. SELinux está deshabilitado. Para este tutorial, incluso si mantienes SELinux habilitado, funcionará sin problemas. Pero dependiendo de los monitores de Nagios que uses, necesitarás configurar SELinux o será mejor mantenerlo deshabilitado.
  4. Otro servidor que ejecute Rocky Linux 9 que deseas monitorear.
  5. Asegúrate de que todo esté actualizado. $ sudo dnf update

Paso 1 - Configurar el Firewall

El primer paso es configurar el firewall. El servidor Rocky Linux viene con el firewall Firewalld.

Verifica si el firewall está en funcionamiento.

$ sudo firewall-cmd --state

Deberías obtener la siguiente salida.

running

Verifica 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

Verifica nuevamente el estado del firewall.

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

Deberías ver una salida similar.

dhcpv6-client http https mdns ssh

Recarga el Firewall.

$ sudo firewall-cmd --reload

Paso 2 - Instalar Apache y PHP

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

Instala y habilita el servicio de Apache.

$ sudo dnf install httpd
$ sudo systemctl enable httpd

Para instalar PHP, usaremos el Repositorio Remi. Instala el Repositorio Remi 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 y comienza el servicio.

$ sudo systemctl enable --now php-fpm

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

$ sudo systemctl restart httpd

Puedes verificar 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.

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Abre la URL http:///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 Dependencias

Este tutorial requerirá que Nagios y sus plugins se construyan desde la fuente. Por lo tanto, necesitas instalar algunas bibliotecas de desarrollo primero. 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

Descargar Nagios

Descarga la última versión desde la página de lanzamientos de GitHub de Nagios. En el momento del tutorial, 4.4.10 es la última versión disponible. Modifica el comando en caso de que desees 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 desde sus archivos fuente. Ejecuta el script configure para realizar verificaciones y asegurarte de que todas las dependencias estén presentes.

$ sudo ./configure

Deberías obtener una salida similar después de la finalización exitosa del script.

* Resumen de configuración para nagios 4.4.10 2023-01-17 *:

 Opciones Generales:
 -------------------------
        Ejecutable de Nagios:  nagios
        Usuario/grupo de Nagios:  nagios,nagios
       Usuario/grupo de comando:  nagios,nagios
             Broker de Eventos:  sí
        Instalar ${prefix}:  /usr/local/nagios
    Instalar ${includedir}:  /usr/local/nagios/include/nagios
                Archivo de bloqueo:  /run/nagios.lock
   Directorio de resultados de verificación:  /usr/local/nagios/var/spool/checkresults
           Directorio Init:  /lib/systemd/system
  Directorio conf.d de Apache:  /etc/httpd/conf.d
             Programa de correo:  /usr/sbin/sendmail
                  OS del host:  linux-gnu
          Método IOBroker:  epoll

 Opciones de Interfaz Web:
 ------------------------
                 URL HTML:  http://localhost/nagios/
                  URL CGI:  http://localhost/nagios/cgi-bin/
 Traceroute (usado por WAP):  

Revisa las opciones anteriores para verificar su precisión. Si parecen correctas,
type 'make all' para compilar el programa principal y los CGIs.

Inicia la compilación.

$ sudo make all

Crear Usuario y 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

Agrega el usuario apache al grupo nagios.

$ sudo usermod -a -G nagios apache

Instalar Binarios de Nagios

Ejecuta el siguiente comando para instalar los binarios de Nagios, CGIs y 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

* Directorio de comandos externos configurado *

Instalar Archivos de Configuración de Nagios

Instala los archivos de configuración de muestra.

$ sudo make install-config

Instalar 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

Habilitar Autenticación HTTP

Puedes bloquear la interfaz web de Nagios a través de la autenticación HTTP. Ejecuta el siguiente comando para usar htpasswd para crear el usuario. Se te pedirá una contraseña.

$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Nueva contraseña:
Reescribe la nueva contraseña:
Agregando contraseña para el usuario nagiosadmin

El nombre predeterminado para el usuario es nagiosadmin. Puedes usar otro nombre de usuario reemplazando todas las instancias de nagiosadmin en el archivo /usr/local/nagios/etc/cgi.cfg por el nombre de usuario preferido. O puedes agregar el nombre de usuario usando una coma como la siguiente.

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 agregar usuarios con acceso de solo lectura habilitando la siguiente configuración en el archivo al eliminar el hash (#) frente a ella. Luego, ejecuta htpasswd con el nombre de usuario.

authorized_for_read_only=username2

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

$ sudo systemctl restart httpd

Paso 4 - Instalar Plugins de Nagios

Instala los prerrequisitos requeridos 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 desde la página de GitHub de los plugins de Nagios. En el momento del tutorial, 2.4.3 es la última versión disponible. Modifica el comando en caso de que desees 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

Cambia de nuevo 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 desde la página de lanzamientos de NRPE en GitHub. En el momento de escribir este tutorial, la última versión disponible es 4.1.0. Modifica el siguiente comando en caso de que desees 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 de Nagios.

$ sudo systemctl start nagios

Verifica el estado del servicio para ver si está funcionando correctamente.

$ sudo systemctl status nagios

Interfaz Web de Nagios

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

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

Página de inicio de Nagios

Paso 7 - Monitorear Hosts

Para monitorear un host, necesitas instalar el Daemon NRPE y los plugins de Nagios en el host. Monitorearemos un servidor Rocky Linux 9 desde nuestro servidor Nagios.

Inicia sesión en tu host.

$ ssh user@monitored_server_ip

Instalar Plugins de Nagios

Instala los plugins de Nagios repitiendo el paso 4 de antes.

Instalar NRPE

Instala los prerrequisitos requeridos para el daemon 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 grupo.

$ sudo make install-groups-users

Instala los binarios de NRPE, el daemon 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 nombres de servicios a números de puerto.

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

Instala el daemon de servicio NPRE.

$ sudo make install-init
$ sudo systemctl enable nrpe

Necesitas actualizar el archivo de configuración de NPRE ubicado en /usr/local/nagios/etc/nrpe.cfg.

Abre el archivo para editar.

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

Por defecto, NPRE escucha solicitudes solo desde el localhost (127.0.0.1). Necesitas agregar la dirección IP de tu servidor Nagios al archivo.

allowed_hosts=127.0.0.1,10.25.5.2

La siguiente opción determina si el daemon NPRE permitirá a los clientes especificar argumentos de comando. Permite la opción ingresando el valor como 1, lo que habilita configuraciones avanzadas de NPRE.

dont_blame_nrpe=1

A continuación, a medida que desplazas hacia abajo, encontrarás una lista de comandos NRPE con sus definiciones. Todos ellos están comentados. Necesitas descomentarlos para que Nagios pueda usarlos.

Cada comando puede recibir argumentos. Algunos de los comandos tienen argumentos codificados en frente de ellos, mientras que algunos 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 sobre la recuperación del servicio (estados OK)

Por lo tanto, puedes especificar en qué nivel qué tipo de notificación un comando puede enviar. No profundizaremos en la descripción detallada y función de cada uno de los comandos, ya que están más allá del alcance de este tutorial.

# Los siguientes ejemplos utilizan argumentos de comando codificados...
# Este es, con mucho, el método más seguro de usar 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

# Los siguientes ejemplos permiten argumentos proporcionados por el usuario y pueden
# solo usarse si el daemon NRPE fue compilado con soporte para
# argumentos de comando *Y* la directiva dont_blame_nrpe en este
# archivo de configuración está configurada en '1'. Esto plantea un riesgo de seguridad potencial, así que
# asegúrate de leer el archivo SECURITY antes de hacer esto.

### MÉTRICAS DEL SISTEMA MISC ###
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$

### SERVICIOS GENÉRICOS ###
command[check_init_service]=sudo /usr/local/nagios/libexec/check_init_service $ARG1$
command[check_services]=/usr/local/nagios/libexec/check_services -p $ARG1$

### ACTUALIZACIONES DEL SISTEMA ###
command[check_yum]=/usr/local/nagios/libexec/check_yum
#command[check_apt]=/usr/local/nagios/libexec/check_apt

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

### ARCHIVOS ABIERTOS ###
command[check_open_files]=/usr/local/nagios/libexec/check_open_files.pl $ARG1$

### CONEXIONES DE RED ###
command[check_netstat]=/usr/local/nagios/libexec/check_netstat.pl -p $ARG1$ $ARG2$

Descomenta los comandos anteriores eliminando el símbolo # frente a ellos. Puedes descomentar tantos comandos como necesites.

Agrega el siguiente comando para verificar el espacio en disco raíz.

command[check_root]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /

Una vez que hayas terminado, guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Permite el puerto 5666 que es utilizado por el plugin NPRE.

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

Recarga el firewall.

$ sudo firewall-cmd --reload

Inicia NPRE.

$ sudo systemctl start nrpe

Todos los comandos de aquí en adelante se ejecutarán en el servidor Nagios principal a menos que se especifique lo contrario.

Verifica si NRPE está funcionando 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 monitorear los hosts, necesitarás crear archivos de configuración para cada host que desees monitorear. Estos hosts se volverá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 editar.

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

Encuentra el siguiente archivo y descomenta eliminando el # frente a él.

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

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

El siguiente paso es agregar el comando check_nrpe al archivo /usr/local/nagios/etc/objects/commands.cfg para que pueda usarse para monitorear hosts.

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

$ 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 presionando Ctrl + X y entrando Y cuando se te 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

Agrega el siguiente código reemplazando el valor host_name con el nombre de tu host remoto, el valor alias con la descripción de tu host y el valor address con la dirección IP de tu host remoto.

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

Con esta configuración, Nagios te informará cuando el host esté arriba o abajo. Necesitarás agregar más servicios para monitorear cosas adicionales.

Agrega el siguiente bloque para verificar 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%
}

Agrega el siguiente bloque para monitorear el promedio de carga de tu servidor.

define service {
        use                             generic-service
        host_name                       monitored_server_host_name
        service_description             Promedio de carga
        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 le dice a Nagios que herede de una plantilla llamada generic-service predefinida por Nagios.

A continuación, agrega un bloque para monitorear el uso del disco. Modifica el comando con las etiquetas de disco apropiadas.

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

Monitorea SSH usando el siguiente bloque. El siguiente bloque verificará el servidor SSH y generará una alerta si el servidor no responde dentro de los 5 segundos.

define service {
    use                                 generic-service
    host_name                           monitored_server_host_name
    service_description                 Verificación de versión SSH
    check_command                       check_ssh!-t 5
}

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

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

Verifica los usuarios actualmente conectados.

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

Verifica el uso del disco SWAP.

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

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

define service{
    use                                  generic-service
    host_name                            nagiosclient
    service_description                  Raíz / Partición
    check_command                        check_nrpe!check_disk!-a '-w 20% -c 10% -p /'
}

Verifica si un servidor HTTP está instalado.

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

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Reinicia Nagios.

$ sudo systemctl restart nagios

Verificar Monitores

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

Monitoreo de Hosts de Nagios

Haz clic en el nuevo host configurado (nagiosclient) y si todo está configurado correctamente, deberías ver su estado. Tomará un minuto o más para que el estado aparezca.

Monitoreo de Servicios de Hosts de Nagios

Para ver los servicios o los monitores que configuramos, haz clic en la opción Ver Detalle de Estado para Este Host y deberías ser recibido por la siguiente página.

Estado de Monitores de Servicios de Nagios

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 tenerlo alojado en tu nombre de dominio. Nagios ya incluye archivos de configuración de Apache, pero usaremos Nginx para ejecutarlo. Usaremos Nginx como un proxy inverso frente al servidor web Apache.

Apache ya lo está ejecutando en el puerto 80. Por lo tanto, necesitamos cambiar eso primero. Y luego, podemos ejecutar Nginx como proxy.

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

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

Cambia la línea Listen 80 a Listen 8080. Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida. Dado que usaremos el nombre de dominio para acceder a Nagios, no necesitamos abrir el puerto 8080 para acceso público.

Reinicia el servidor Apache.

$ sudo systemctl restart httpd

A continuación, instala Nginx.

Rocky Linux 9 incluye una versión más 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 el siguiente código en él.

[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 presionando Ctrl + X y entrando 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, configuraremos y configuraremos un certificado SSL para el dominio que vamos a usar con Nagios. En nuestro caso, usaremos http://nagios.example.com.

Usaremos el instalador de paquetes Snapd para eso. Dado que Rocky Linux no lo incluye, instala el instalador Snapd. Requiere que el repositorio EPEL funcione, que ya instalamos anteriormente, así que podemos omitir eso.

Instala Snapd.

$ sudo dnf install -y snapd

Habilita e inicia el servicio Snap.

$ sudo systemctl enable snapd --now

Instala el paquete Snap core 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

Emite el siguiente comando para instalar Certbot.

$ sudo snap install --classic certbot

Usa el siguiente comando para asegurarte de que el comando Certbot pueda ejecutarse 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 en tu servidor.

Genera un certificado de grupo Diffie-Hellman.

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

Haz una prueba del proceso para verificar si la renovación de SSL está funcionando bien.

$ sudo certbot renew --dry-run

Si no ves errores, estás listo. Tu certificado se renovará automáticamente.

Paso 10 - Configurar Nginx

Antes de configurar Nginx, hay otro cambio que deberíamos hacer. Por defecto, Apache sirve Nagios a través de http://:8080/nagios. Ahora, podemos configurar un proxy directamente con 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 esa razón, haremos un cambio en Apache y Nagios directamente.

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

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

Cambia url_html_path=/nagios a url_html_path=/.

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

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

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

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

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

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

Agrega la siguiente línea debajo de ella.

DocumentRoot /usr/local/nagios/share

Agrega la siguiente línea en la parte superior del archivo.


Agrega la siguiente línea en la parte inferior del archivo.


Una vez que hayas terminado, guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

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

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

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

Guarda el archivo presionando Ctrl + X y entrando 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://:1080 en tu navegador y deberías ver a Nagios funcionando correctamente. También asegúrate de que los datos de los Hosts se estén recibiendo.

Una vez que todo esté funcionando, 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 el siguiente código en él.

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;
       }
}

Una vez que hayas terminado, guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Valida el archivo de configuración.

$ sudo nginx -t

Si obtienes el siguiente error, necesitarás editar el archivo /etc/nginx/nginx.conf para agregar/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 editar.

$ sudo nano /etc/nginx/nginx.conf

Agrega la siguiente línea antes

server_names_hash_bucket_size  64;

Una vez que hayas terminado, guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida. Valida Nginx nuevamente.

Si no ves problemas, reinicia el servidor Nginx.

$ sudo systemctl restart nginx

Configurar SELinux

Si has mantenido SELinux habilitado, ejecuta el siguiente comando para permitir que Nginx se conecte a la red.

$ sudo setsebool -P httpd_can_network_connect on

Lanza 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 monitorear varios servicios como la carga, el uso de disco/swap, usuarios, total de procesos, HTTP y SSH. Esto concluye nuestro tutorial. Para aprender más, deberías consultar la documentación oficial de Nagios que cubre el monitoreo y varios comandos en gran detalle. Si tienes alguna pregunta, publícalas en los comentarios a continuación.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.