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
- Un servidor con CentOS 8
- Un usuario no-sudo con privilegios de root.
- SELinux deshabilitado
- Otro servidor que ejecute CentOS 8 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 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.
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.
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 user@monitored_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-service
predefinida 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.
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.
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.
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.