Cómo Instalar Y Configurar Nagios Para Monitorizar Un Servidor

Cómo Instalar y Configurar Nagios para Monitorizar un Servidor (Guía Completa 2026)

📘 Este artículo forma parte de nuestra Guía Completa de Servidores y Virtualización. Si buscas alternativas más modernas, consulta nuestra Guía de Zabbix con Nginx y nuestra Guía de Netdata.

Introducción

Nagios Core es uno de los sistemas de monitorización más veteranos y respetados del mundo de la administración de sistemas. Nacido en 1999 (como NetSaint), lleva más de 25 años siendo el estándar de facto en muchas empresas.

A diferencia de otras herramientas, Nagios destaca por:

  • Madurez extrema: décadas de desarrollo.
  • Ecosistema de plugins: +4.000 plugins disponibles.
  • Flexibilidad: monitoriza casi cualquier cosa.
  • Escalabilidad: desde 10 hasta 10.000+ hosts.
  • Comunidad activa: documentación y ejemplos abundantes.

En 2026, aunque existen alternativas más modernas (Zabbix, Prometheus, Checkmk), Nagios sigue siendo muy usado en empresas con infraestructuras tradicionales.

En esta guía completa vas a aprender:

  • Qué es Nagios y por qué usarlo.
  • Requisitos de hardware y software.
  • Instalación en Debian 12.
  • Configuración de hosts, servicios y contactos.
  • Plugins esenciales.
  • NRPE para monitorización remota.
  • Alertas por email, Slack, Telegram.
  • Interfaz web con Apache/Nginx.
  • Seguridad y hardening.
  • Alternativas (Icinga 2, Checkmk).
  • Troubleshooting.
  • FAQ.

Si quieres comparar con otras herramientas:


Índice de contenidos

  1. ¿Qué es Nagios?
  2. Requisitos
  3. Instalación
  4. Configuración inicial
  5. Añadir hosts
  6. Añadir servicios
  7. Plugins esenciales
  8. NRPE para monitorización remota
  9. Alertas y notificaciones
  10. Interfaz web con Nginx + SSL
  11. Seguridad
  12. Optimización y mantenimiento
  13. Alternativas modernas
  14. Troubleshooting
  15. FAQ
  16. Conclusión

1. ¿Qué es Nagios?

Nagios Core es un sistema de monitorización de infraestructuras open source (GPL). Monitoriza:

  • Hosts (servidores, routers, switches).
  • Servicios (HTTP, SSH, MySQL, DNS…).
  • Recursos (CPU, RAM, disco).
  • Aplicaciones (web, bases de datos).
  • Dispositivos de red (SNMP).

1.1 Componentes

ComponenteFunción
Nagios CoreMotor de monitorización
PluginsComprobaciones específicas
NRPEMonitorización remota (Linux/Unix)
NSClient++Monitorización remota (Windows)
Check By SSHComprobación por SSH
Interfaz webPanel de administración

1.2 Cómo funciona

  1. Nagios Core lee su configuración (hosts, servicios, contactos).
  2. Ejecuta plugins periódicamente para comprobar cada servicio.
  3. Analiza los resultados (OK, WARNING, CRITICAL, UNKNOWN).
  4. Genera alertas si algo falla.
  5. Notifica según la configuración.

1.3 Estados de servicio

EstadoSignificado
OK (0)Todo funciona
WARNING (1)Aviso, atención
CRITICAL (2)Error grave
UNKNOWN (3)Estado desconocido

1.4 Características principales

  • Comprobaciones activas y pasivas.
  • Escalado de alertas.
  • Dependencias entre hosts y servicios.
  • Reintentos y timeouts configurables.
  • Histórico de eventos.
  • API para integración.
  • Multi-usuario con permisos.

1.5 Nagios vs alternativas

HerramientaProsContras
Nagios CoreMaduro, pluginsInterfaz antigua
Icinga 2Moderno, APICurva aprendizaje
ZabbixCompletoComplejo
PrometheusCloud-nativeNo tradicional
CheckmkInterfaz modernaFree limitado
NetdataTiempo realMenos enterprise

Conclusión: Nagios Core es ideal para infraestructuras tradicionales y entornos donde la estabilidad importa más que la modernidad.

Consulta Las mejores herramientas de monitorización.


2. Requisitos

2.1 Hardware

ComponenteMínimoRecomendado
CPU1 core2+ cores
RAM512 MB1-2 GB
Disco10 GB20+ GB
Red100 Mbps1 Gbps

Nota: Nagios es muy ligero. El consumo depende del número de checks por minuto.

2.2 Software

  • Debian 12 (Bookworm) — recomendado.
  • Debian 11 (Bullseye) — funciona con ajustes.
  • Apache o Nginx (interfaz web).
  • PHP 8.2+ (interfaz web).
  • GCC, make (para compilar).
  • libgd, libssl-dev (dependencias).

2.3 Puertos

PuertoServicio
80, 443HTTP/HTTPS (interfaz web)
5666NRPE (monitorización remota)
12489NSClient++ (Windows)

2.4 Preparación

sudo apt update
sudo apt full-upgrade -y
sudo apt install -y wget curl unzip

Consulta Guía Completa de Linux.


3. Instalación

3.1 Instalar dependencias

sudo apt install -y \
    autoconf gcc libc6 make \
    apache2 libapache2-mod-php \
    php8.2 php8.2-gd php8.2-common php8.2-mysql php8.2-xml \
    libgd-dev libssl-dev libperl-dev \
    libmcrypt-dev libpq-dev \
    snmp libnet-snmp-perl gettext

3.2 Crear usuario y grupo

sudo useradd nagios
sudo groupadd nagcmd
sudo usermod -a -G nagcmd nagios
sudo usermod -a -G nagcmd www-data

3.3 Descargar Nagios Core

Verificar la última versión:

Visita https://www.nagios.org/downloads/nagios-core/ para la versión actual.

cd /tmp
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.5.1.tar.gz
tar -xzf nagios-4.5.1.tar.gz
cd nagios-4.5.1

3.4 Compilar e instalar Nagios Core

./configure --with-command-group=nagcmd --with-httpd-conf=/etc/apache2/sites-enabled
make all
sudo make install
sudo make install-commandmode
sudo make install-init
sudo make install-config
sudo make install-webconf

Explicación:

  • --with-httpd-conf: instala la configuración de Apache.
  • make install-commandmode: permisos para comandos externos.
  • make install-init: servicio systemd.
  • make install-config: archivos de configuración de ejemplo.

3.5 Crear usuario web de Nagios

sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Introduce una contraseña robusta. Este será tu usuario para la interfaz web.

3.6 Habilitar Apache y reiniciar

sudo a2enmod rewrite cgi
sudo systemctl restart apache2
sudo systemctl enable nagios
sudo systemctl start nagios
sudo systemctl status nagios

3.7 Verificar

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Debería decir: «Total Warnings: 0, Total Errors: 0».

3.8 Acceder a la interfaz web

Abre en el navegador:

http://IP_DEL_SERVIDOR/nagios

Credenciales:

  • Usuario: nagiosadmin
  • Contraseña: la que pusiste.

3.9 Instalar plugins (siguiente paso obligatorio)

Los plugins son imprescindibles. Instala Nagios Plugins:

cd /tmp
wget https://nagios-plugins.org/download/nagios-plugins-2.4.9.tar.gz
tar -xzf nagios-plugins-2.4.9.tar.gz
cd nagios-plugins-2.4.9
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
sudo make install

Consulta Guía Completa de Servidores.


4. Configuración inicial

4.1 Estructura de directorios

/usr/local/nagios/
├── bin/              # Binarios
├── etc/              # Configuración
│   ├── nagios.cfg    # Configuración principal
│   ├── cgi.cfg       # Configuración web
│   ├── objects/      # Definiciones (hosts, servicios)
│   └── resource.cfg  # Variables (rutas de plugins)
├── libexec/          # Plugins
├── sbin/             # Nagios Core
├── share/            # Documentación
└── var/              # Estado, logs

4.2 Configuración principal

Edita /usr/local/nagios/etc/nagios.cfg:

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

Ajustes clave:

# Usuario y grupo
nagios_user=nagios
nagios_group=nagios

# Directorios
log_file=/usr/local/nagios/var/nagios.log
cfg_dir=/usr/local/nagios/etc/servers
cfg_dir=/usr/local/nagios/etc/objects

# Archivos de estado
status_file=/usr/local/nagios/var/status.dat
state_retention_file=/usr/local/nagios/var/retention.dat
command_file=/usr/local/nagios/var/rw/nagios.cmd

# Comprobaciones
check_external_commands=1
interval_length=60
service_check_timeout=60
host_check_timeout=30

4.3 Configuración web

Edita /usr/local/nagios/etc/cgi.cfg:

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

Cambiar usuario autorizado:

authorized_for_system_information=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin

4.4 Variables de recursos

Edita /usr/local/nagios/etc/resource.cfg:

sudo nano /usr/local/nagios/etc/resource.cfg
$USER1$=/usr/local/nagios/libexec

4.5 Directorio para hosts

sudo mkdir -p /usr/local/nagios/etc/servers

Verificar:

sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

5. Añadir hosts

5.1 Definir un host

Crea /usr/local/nagios/etc/servers/mi-servidor.cfg:

sudo nano /usr/local/nagios/etc/servers/mi-servidor.cfg

Contenido:

define host {
    use                     linux-server
    host_name               servidor-web
    alias                   Servidor Web Principal
    address                 192.168.1.100
    max_check_attempts      5
    check_period            24x7
    notification_interval   30
    notification_period     24x7
}

Explicación:

  • use: plantilla base.
  • host_name: nombre único (sin espacios).
  • alias: descripción.
  • address: IP o dominio.
  • max_check_attempts: reintentos antes de notificar.

5.2 Añadir host a un grupo

define hostgroup {
    hostgroup_name          web-servers
    alias                   Servidores Web
    members                 servidor-web
}

5.3 Aplicar cambios

sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
sudo systemctl reload nagios

Verificar: en la interfaz web → Hosts.

Consulta Guía Completa de Redes.


6. Añadir servicios

6.1 Servicios básicos para un host

Crea /usr/local/nagios/etc/servers/mi-servidor.cfg (añadir):

# Check HTTP
define service {
    use                     generic-service
    host_name               servidor-web
    service_description     HTTP
    check_command           check_http
    notifications_enabled   1
}

# Check SSH
define service {
    use                     generic-service
    host_name               servidor-web
    service_description     SSH
    check_command           check_ssh
}

# Check Ping
define service {
    use                     generic-service
    host_name               servidor-web
    service_description     PING
    check_command           check_ping!100.0,20%!500.0,60%
}

# Check disco
define service {
    use                     generic-service
    host_name               servidor-web
    service_description     Disk Usage
    check_command           check_nrpe!check_disk
}

# Check CPU
define service {
    use                     generic-service
    host_name               servidor-web
    service_description     CPU Load
    check_command           check_nrpe!check_load
}

Explicación de check_ping!100.0,20%!500.0,60%:

  • WARNING: RTT > 100ms o pérdida > 20%.
  • CRITICAL: RTT > 500ms o pérdida > 60%.

6.2 Servicios web avanzados

# HTTPS
define service {
    use                     generic-service
    host_name               servidor-web
    service_description     HTTPS
    check_command           check_http!-S
}

# Certificado SSL (caduca en X días)
define service {
    use                     generic-service
    host_name               servidor-web
    service_description     SSL Certificate
    check_command           check_http!-S -C 30,14
}

-C 30,14: WARNING si caduca en 30 días, CRITICAL si en 14.

6.3 Aplicar cambios

sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
sudo systemctl reload nagios

7. Plugins esenciales

7.1 Verificar plugins instalados

ls /usr/local/nagios/libexec/

Verás decenas de plugins como check_http, check_ping, check_ssh, check_disk…

7.2 Plugins más usados

PluginUso
check_pingConectividad ICMP
check_httpServidor web (HTTP/HTTPS)
check_sshServicio SSH
check_tcpPuerto TCP abierto
check_diskEspacio en disco
check_loadCarga del sistema
check_memoryUso de memoria
check_usersUsuarios conectados
check_procsProcesos activos
check_swapUso de swap
check_ntpSincronización NTP
check_dnsServidor DNS
check_smtpServidor SMTP
check_mysqlBase de datos MySQL
check_postgresBase de datos PostgreSQL

7.3 Plugins comunitarios (Nagios Exchange)

Descarga desde: https://exchange.nagios.org/

Ejemplos útiles:

  • check_mysql_health: monitorización avanzada de MySQL.
  • check_postgres: completo para PostgreSQL.
  • check_multi: ejecuta varios checks en uno.
  • check_nwc_health: dispositivos de red.
  • check_docker: monitorización de contenedores.

Instalación típica:

cd /tmp
wget https://.../check_mysql_health-2.2.2.tar.gz
tar -xzf check_mysql_health-2.2.2.tar.gz
cd check_mysql_health-2.2.2
./configure --prefix=/usr/local/nagios \
    --with-nagios-user=nagios \
    --with-nagios-group=nagios
make
sudo make install

7.4 Plugins de la comunidad

Repositorio Monitor Plugins:

https://www.monitoring-plugins.org

sudo apt install -y monitoring-plugins

Consulta Qué es Docker para monitorizar contenedores.


8. NRPE para monitorización remota

NRPE (Nagios Remote Plugin Executor) permite ejecutar plugins en un servidor remoto.

8.1 Arquitectura

[Nagios Server] ---> check_nrpe ---> [NRPE en servidor remoto] ---> Ejecuta plugin

8.2 Instalar NRPE en el servidor remoto

sudo apt install -y nagios-nrpe-server nagios-plugins

8.3 Configurar NRPE

Edita /etc/nagios/nrpe.cfg:

sudo nano /etc/nagios/nrpe.cfg

Ajustes:

# IP del servidor Nagios
allowed_hosts=127.0.0.1,IP_DEL_NAGIOS_SERVER

# Comandos permitidos
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib/nagios/plugins/check_load -r -w 5,4,3 -c 10,6,4
command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /
command[check_mem]=/usr/lib/nagios/plugins/check_mem.pl -w 80 -c 95
command[check_swap]=/usr/lib/nagios/plugins/check_swap -w 20% -c 10%
command[check_procs]=/usr/lib/nagios/plugins/check_procs -w 250 -c 300

8.4 Reiniciar NRPE

sudo systemctl restart nagios-nrpe-server
sudo systemctl enable nagios-nrpe-server

8.5 Firewall en el servidor remoto

sudo ufw allow from IP_DEL_NAGIOS_SERVER to any port 5666 proto tcp

8.6 Configurar en el servidor Nagios

Definir el comando NRPE:

Edita /usr/local/nagios/etc/objects/commands.cfg:

sudo nano /usr/local/nagios/etc/objects/commands.cfg
define command {
    command_name    check_nrpe
    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Añadir servicios NRPE al host:

define service {
    use                     generic-service
    host_name               servidor-web
    service_description     Disk /
    check_command           check_nrpe!check_disk
}

define service {
    use                     generic-service
    host_name               servidor-web
    service_description     CPU Load
    check_command           check_nrpe!check_load
}

define service {
    use                     generic-service
    host_name               servidor-web
    service_description     Memory
    check_command           check_nrpe!check_mem
}

8.7 NRPE con SSL

En el servidor remoto:

# Generar certificado
openssl req -x509 -nodes -newkey rsa:2048 \
    -keyout /etc/nagios/nrpe.key \
    -out /etc/nagios/nrpe.crt \
    -days 3650

Configurar NRPE:

ssl_log_file=/var/log/nrpe.log
ssl_cert_file=/etc/nagios/nrpe.crt
ssl_private_key_file=/etc/nagios/nrpe.key

8.8 Windows: NSClient++

Para monitorizar servidores Windows:

  1. Descarga NSClient++ desde https://nsclient.org/.
  2. Instala y configura.
  3. Permite conexiones desde el servidor Nagios.
  4. Habilita checks de CPU, RAM, disco.

Consulta Por qué elegir Windows Server.


9. Alertas y notificaciones

9.1 Configurar contactos

Crea /usr/local/nagios/etc/objects/contacts.cfg:

sudo nano /usr/local/nagios/etc/objects/contacts.cfg
define contact {
    contact_name            admin
    use                     generic-contact
    alias                   Administrador
    email                   admin@tudominio.com
}

define contactgroup {
    contactgroup_name       admins
    alias                   Administradores
    members                 admin
}

9.2 Configurar notificación por email

Instalar mailutils:

sudo apt install -y mailutils

Probar:

echo "Test" | mail -s "Test" tu-email@ejemplo.com

Configurar en contacts.cfg:

define contact {
    contact_name            admin
    use                     generic-contact
    alias                   Administrador
    email                   admin@tudominio.com
    host_notification_commands   notify-host-by-email
    service_notification_commands notify-service-by-email
}

Si tienes servidor de correo propio, consulta nuestra Guía de servidor de correo en Debian.

9.3 Configurar Slack

Crear webhook en Slack.

Crea /usr/local/nagios/libexec/notify_slack.sh:

#!/bin/bash
WEBHOOK_URL="https://hooks.slack.com/services/..."
MESSAGE="$1"

curl -X POST -H 'Content-type: application/json' \
    --data "{\"text\":\"$MESSAGE\"}" \
    "$WEBHOOK_URL"
sudo chmod +x /usr/local/nagios/libexec/notify_slack.sh
sudo chown nagios:nagios /usr/local/nagios/libexec/notify_slack.sh

Definir comando:

define command {
    command_name    notify-host-by-slack
    command_line    /usr/local/nagios/libexec/notify_slack.sh "Host $HOSTNAME$ is $HOSTSTATE$"
}

define command {
    command_name    notify-service-by-slack
    command_line    /usr/local/nagios/libexec/notify_slack.sh "Service $SERVICEDESC$ on $HOSTNAME$ is $SERVICESTATE$"
}

9.4 Configurar Telegram

Crea /usr/local/nagios/libexec/notify_telegram.sh:

#!/bin/bash
BOT_TOKEN="1234567890:AAA..."
CHAT_ID="123456789"
MESSAGE="$1"

curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" \
    -d "chat_id=$CHAT_ID" \
    -d "text=$MESSAGE"

9.5 Escalado de alertas

define serviceescalation {
    host_name               servidor-web
    service_description     HTTP
    first_notification      3
    last_notification       5
    notification_interval   30
    contact_groups          admins
}

define serviceescalation {
    host_name               servidor-web
    service_description     HTTP
    first_notification      5
    last_notification       0
    notification_interval   15
    contact_groups          admins,ciso
}

Significado: si no se resuelve tras 3 notificaciones, escala al CISO.

9.6 Silenciar alertas (mantenimiento)

En la interfaz web:

  1. Hosts → Commands → Schedule downtime.
  2. Duración y comentario.

Útil para:

  • Ventanas de mantenimiento.
  • Actualizaciones programadas.

9.7 Verificar notificaciones

sudo tail -f /usr/local/nagios/var/nagios.log | grep -i notify

Consulta La importancia de la monitorización de redes.


10. Interfaz web con Nginx + SSL

Nagios por defecto usa Apache. Vamos a migrar a Nginx + SSL.

10.1 Instalar Nginx y PHP-FPM

sudo apt install -y nginx php8.2-fpm

10.2 Configurar Nginx

Crea /etc/nginx/sites-available/nagios:

server {
    listen 80;
    server_name nagios.tudominio.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name nagios.tudominio.com;

    ssl_certificate /etc/letsencrypt/live/nagios.tudominio.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/nagios.tudominio.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;

    add_header Strict-Transport-Security "max-age=31536000" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;

    root /usr/local/nagios/share;
    index index.php index.html;

    auth_basic "Nagios";
    auth_basic_user_file /usr/local/nagios/etc/htpasswd.users;

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

    # CGI
    location ~ ^/nagios/cgi-bin/ {
        root /usr/local/nagios/sbin;
        rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1 break;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME /usr/local/nagios/sbin/$fastcgi_script_name;
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
    }

    location /nagios/ {
        alias /usr/local/nagios/share/;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\. {
        deny all;
    }
}

10.3 Instalar fcgiwrap (para CGI)

sudo apt install -y fcgiwrap
sudo systemctl enable --now fcgiwrap

10.4 Activar sitio

sudo ln -s /etc/nginx/sites-available/nagios /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

10.5 SSL con Let’s Encrypt

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d nagios.tudominio.com

Consulta Guía completa para configurar SSL en Nginx.


11. Seguridad

11.1 Checklist

  1. HTTPS obligatorio.
  2. Autenticación web (htpasswd).
  3. Firewall restrictivo.
  4. Fail2ban.
  5. Acceso por IP (opcional).
  6. Actualizaciones.
  7. Backups.

11.2 Fail2ban

sudo apt install -y fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Añade a /etc/fail2ban/jail.local:

[nagios]
enabled = true
port = http,https
filter = nagios
logpath = /var/log/nginx/nagios.access.log
maxretry = 5
bantime = 86400

Crea /etc/fail2ban/filter.d/nagios.conf:

[Definition]
failregex = ^<HOST> - .* "GET /nagios/.* HTTP.*" 401
ignoreregex =

Reiniciar:

sudo systemctl restart fail2ban

Consulta Cómo configurar y usar Fail2ban.

11.3 Restringir por IP

En Nginx:

location /nagios/ {
    allow 192.168.1.0/24;
    allow 200.100.50.25;
    deny all;
    alias /usr/local/nagios/share/;
}

11.4 VPN para acceso remoto

Recomendado: VPN en lugar de exponer a internet.

sudo apt install wireguard

Consulta Cómo montar tu propio servidor de VPN y Zero Trust.

11.5 Firewall

sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Consulta Guía para configurar firewall en Debian.

11.6 Backups

sudo nano /usr/local/bin/backup-nagios.sh
#!/bin/bash
FECHA=$(date +%F)
DESTINO="/backup/nagios"

mkdir -p "$DESTINO"

# Configuración
tar -czf "$DESTINO/nagios-config-$FECHA.tar.gz" /usr/local/nagios/etc/

# Estado
tar -czf "$DESTINO/nagios-var-$FECHA.tar.gz" /usr/local/nagios/var/

# Retención 30 días
find "$DESTINO" -name "*.gz" -mtime +30 -delete
sudo chmod +x /usr/local/bin/backup-nagios.sh
sudo crontab -e
0 3 * * * /usr/local/bin/backup-nagios.sh >> /var/log/backup-nagios.log 2>&1

Consulta La importancia de los backups.


12. Optimización y mantenimiento

12.1 Ajustar check_interval

Menos frecuencia = menos carga:

define service {
    use                     generic-service
    host_name               servidor-web
    service_description     CPU Load
    check_command           check_nrpe!check_load
    check_interval          5    ; cada 5 minutos (por defecto 5)
    retry_interval          1
}

12.2 Check_interval por defecto

Edita /usr/local/nagios/etc/objects/templates.cfg:

define service {
    name                    generic-service
    active_checks_enabled   1
    passive_checks_enabled  1
    parallelize_check       1
    obsess_over_service     1
    check_freshness         0
    notifications_enabled   1
    event_handler_enabled   1
    flap_detection_enabled  1
    process_perf_data       1
    retain_status_information 1
    retain_nonstatus_information 1
    notification_interval   30
    notification_period     24x7
    notification_options    w,u,c,r
    contact_groups          admins
    register                0
    check_interval          5
    retry_interval          1
    max_check_attempts      4
    check_period            24x7
}

12.3 Usar Nagios con MySQL (más escalable)

Nagios por defecto usa archivos planos. Para grandes instalaciones:

  • Nagios + MySQL: usar NDOUtils.
  • Icinga 2 con IDO: más moderno.

12.4 Monitorizar el propio Nagios

Añade checks:

define service {
    use                     generic-service
    host_name               localhost
    service_description     Nagios Load
    check_command           check_nrpe!check_load
}

define service {
    use                     generic-service
    host_name               localhost
    service_description     Nagios Process
    check_command           check_procs!1:1!nagios
}

12.5 Rotar logs

Edita /etc/logrotate.d/nagios:

/usr/local/nagios/var/nagios.log {
    weekly
    rotate 4
    compress
    delaycompress
    missingok
    notifempty
    create 0644 nagios nagios
    postrotate
        /bin/kill -HUP `cat /usr/local/nagios/var/nagios.lock 2>/dev/null` 2>/dev/null || true
    endscript
}

Consulta Optimización de servidores Linux.


13. Alternativas modernas

13.1 Icinga 2

Fork moderno de Nagios.

Pros:

  • Configuración más limpia.
  • API REST.
  • Interfaz moderna (Icinga Web 2).
  • Compatible con plugins de Nagios.

Instalación:

sudo apt install icinga2 icinga2-ido-mysql icingaweb2

Web: https://icinga.com/

13.2 Checkmk

Comercial con versión free.

Pros:

  • Interfaz muy moderna.
  • Auto-descubrimiento.
  • Reglas potentes.

Instalación:

wget https://download.checkmk.com/checkmk/2.2.0/check-mk-raw-2.2.0_0.bookworm_amd64.deb
sudo dpkg -i check-mk-raw-*.deb
sudo omd create monitoring

Web: https://checkmk.com/

13.3 Zabbix

Alternativa completa. Consulta nuestra Guía de Zabbix.

13.4 Netdata

Tiempo real. Consulta Guía de Netdata.

13.5 Prometheus

Cloud-native. Ideal para Kubernetes.

Web: https://prometheus.io/

13.6 Comparativa

HerramientaTipoCurvaInterfaz
Nagios CoreOpen sourceMediaAntigua
Icinga 2Open sourceMediaModerna
CheckmkComercial+freeBajaModerna
ZabbixOpen sourceAltaBuena
NetdataOpen sourceMuy bajaExcelente

14. Troubleshooting

14.1 Nagios no arranca

Diagnóstico:

sudo systemctl status nagios
sudo journalctl -u nagios -n 50
sudo tail -f /usr/local/nagios/var/nagios.log

Verificar configuración:

sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

14.2 No puedo acceder a la interfaz web

Causas:

  • Apache/Nginx no funciona.
  • Permisos incorrectos.
  • htpasswd mal configurado.

Solución:

sudo systemctl status apache2
sudo systemctl status nginx
sudo tail -f /var/log/apache2/error.log
sudo tail -f /var/log/nginx/nagios.error.log

14.3 «It appears as though you do not have permission»

Solución:

Edita /usr/local/nagios/etc/cgi.cfg y añade el usuario a authorized_for_*.

14.4 Checks muestran «UNKNOWN»

Causas:

  • Plugin no encontrado.
  • Sintaxis incorrecta.
  • Permisos.

Diagnóstico:

sudo -u nagios /usr/local/nagios/libexec/check_http -H localhost

14.5 NRPE no responde

Diagnóstico:

# Desde el servidor Nagios
/usr/local/nagios/libexec/check_nrpe -H IP_REMOTA

# Ver logs
sudo tail -f /var/log/syslog | grep nrpe

Causas:

  • Firewall bloquea puerto 5666.
  • allowed_hosts mal configurado.
  • NRPE no arranca.

14.6 Alertas no se envían

Diagnóstico:

sudo tail -f /usr/local/nagios/var/nagios.log | grep -i notify

Causas:

  • Sin contacto asociado.
  • Sin comando de notificación.
  • notifications_enabled a 0.

14.7 Notificaciones duplicadas

Causas:

  • Múltiples contactos.
  • Escalados mal configurados.

Solución: revisa contact_groups y escalados.

14.8 Nagios consume mucha CPU

Causas:

  • Demasiados checks.
  • check_interval muy corto.
  • Plugins pesados.

Solución:

  • Aumentar check_interval.
  • Usar checks pasivos (NSCA).
  • Optimizar plugins.

14.9 Errores de sintaxis en configuración

Solución:

sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Corrige los errores que muestre.

14.10 Migración a otro servidor

Pasos:

  1. Backup de /usr/local/nagios/etc/.
  2. Instalar Nagios en el nuevo servidor.
  3. Restaurar configuración.
  4. Verificar.

Consulta Análisis de registros en Linux.


15. FAQ

¿Qué es Nagios?

Nagios Core es un sistema de monitorización open source para hosts, servicios y redes.

Destaca por: madurez, plugins, flexibilidad.

¿Nagios es gratis?

Nagios Core es gratis (GPL).

Nagios XI (interfaz moderna + features) es de pago.

¿Nagios o Icinga?

Icinga 2 es un fork moderno de Nagios.

Ventajas de Icinga:

  • API REST.
  • Configuración moderna.
  • Interfaz Icinga Web 2.

Ventaja de Nagios: más madurez y plugins.

¿Nagios o Zabbix?

  • Nagios: tradicional, plugins, más ligero.
  • Zabbix: completo, auto-descubrimiento, más moderno.

Recomendación: Zabbix para nuevas instalaciones.

¿Cuántos hosts soporta Nagios?

Depende del hardware y checks:

  • 1 core, 1 GB: ~50 hosts.
  • 2 cores, 2 GB: ~200 hosts.
  • 4 cores, 4 GB: ~500 hosts.

Para más: usa Icinga 2 o Nagios con NDOUtils.

¿Cómo monitorizo Windows?

Con NSClient++:

  1. Descarga desde https://nsclient.org/.
  2. Instala en el servidor Windows.
  3. Permite conexiones desde Nagios.
  4. Añade checks con check_nt o NRPE.

¿Cómo monitorizo servicios específicos?

Con plugins del Nagios Exchange:

  • MySQL: check_mysql.
  • PostgreSQL: check_postgres.
  • Docker: check_docker.
  • Nginx: check_nginx.

¿Cómo añado un nuevo host?

  1. Crea archivo .cfg en /usr/local/nagios/etc/servers/.
  2. Define host y service.
  3. Verifica con nagios -v.
  4. Recarga: systemctl reload nagios.

¿Cómo recibo alertas por Slack?

Crea un script notify_slack.sh y define el comando en Nagios. Consulta la sección 9.3.

¿Nagios tiene API?

Sí, pero limitada. Nagios Core tiene:

  • CGI para consultas.
  • Livestatus (con MK Livestatus).

Icinga 2 tiene API REST completa.

¿Cómo hago backup?

tar -czf nagios-backup-$(date +%F).tar.gz /usr/local/nagios/etc/

Consulta La importancia de los backups.

¿Puedo migrar de Nagios a Icinga?

Sí. Icinga 2 incluye herramientas de migración.

Consulta: https://icinga.com/docs/icinga-2/latest/doc/11-cli-commands/

¿Nagios soporta SNMP?

Sí. Con check_snmp:

check_snmp -H 192.168.1.1 -o 1.3.6.1.2.1.1.3.0 -w 5: -c 10:

¿Nagios consume muchos recursos?

No, es muy ligero. Consume ~50-200 MB RAM y 5-20% CPU según checks.

¿Nagios afecta al SEO?

No, si es interno. Márcalo noindex si es nagios.tudominio.com.

¿Qué hacer si un check falla?

  1. Ver logs:
sudo tail -f /usr/local/nagios/var/nagios.log
  1. Ejecutar plugin manualmente:
sudo -u nagios /usr/local/nagios/libexec/check_http -H host
  1. Corregir configuración.

¿Nagios funciona con Docker?

Sí. Hay imágenes oficiales:

docker pull jasonrivers/nagios

Consulta Qué es Docker.

¿Nagios para Kubernetes?

Nagios no es ideal para Kubernetes. Usa Prometheus.

Consulta Qué es Kubernetes.


16. Conclusión

Nagios Core es uno de los sistemas de monitorización más veteranos y respetados. Con décadas de desarrollo y un ecosistema de +4.000 plugins, sigue siendo una opción sólida para infraestructuras tradicionales.

Puntos clave:

  1. Instalación desde código fuente en Debian 12.
  2. Plugins esenciales (check_http, check_ping…).
  3. NRPE para monitorización remota.
  4. Alertas por email, Slack, Telegram.
  5. Interfaz web con Nginx + SSL.
  6. Seguridad: HTTPS, htpasswd, Fail2ban.
  7. Escalado de alertas.
  8. Alternativas: Icinga 2, Checkmk.
  9. Troubleshooting extenso.
  10. Backups automatizados.

Si quieres seguir aprendiendo:

2 comentarios en “Cómo Instalar y Configurar Nagios para Monitorizar un Servidor (Guía Completa 2026)”

  1. Pingback: Novedades en Debian 12 y Cómo Configurarlo en un Servidor

  2. Pingback: 10 Herramientas Imprescindibles para la Administración de Servidores Linux

Deja un comentario