📘 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:
- Guía de instalación de Zabbix
- Guía de instalación de Netdata
- Cómo instalar Munin en Debian
- Las mejores herramientas de monitorización de servidores
Índice de contenidos
- ¿Qué es Nagios?
- Requisitos
- Instalación
- Configuración inicial
- Añadir hosts
- Añadir servicios
- Plugins esenciales
- NRPE para monitorización remota
- Alertas y notificaciones
- Interfaz web con Nginx + SSL
- Seguridad
- Optimización y mantenimiento
- Alternativas modernas
- Troubleshooting
- FAQ
- 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
| Componente | Función |
|---|---|
| Nagios Core | Motor de monitorización |
| Plugins | Comprobaciones específicas |
| NRPE | Monitorización remota (Linux/Unix) |
| NSClient++ | Monitorización remota (Windows) |
| Check By SSH | Comprobación por SSH |
| Interfaz web | Panel de administración |
1.2 Cómo funciona
- Nagios Core lee su configuración (hosts, servicios, contactos).
- Ejecuta plugins periódicamente para comprobar cada servicio.
- Analiza los resultados (OK, WARNING, CRITICAL, UNKNOWN).
- Genera alertas si algo falla.
- Notifica según la configuración.
1.3 Estados de servicio
| Estado | Significado |
|---|---|
| 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
| Herramienta | Pros | Contras |
|---|---|---|
| Nagios Core | Maduro, plugins | Interfaz antigua |
| Icinga 2 | Moderno, API | Curva aprendizaje |
| Zabbix | Completo | Complejo |
| Prometheus | Cloud-native | No tradicional |
| Checkmk | Interfaz moderna | Free limitado |
| Netdata | Tiempo real | Menos 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
| Componente | Mínimo | Recomendado |
|---|---|---|
| CPU | 1 core | 2+ cores |
| RAM | 512 MB | 1-2 GB |
| Disco | 10 GB | 20+ GB |
| Red | 100 Mbps | 1 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
| Puerto | Servicio |
|---|---|
| 80, 443 | HTTP/HTTPS (interfaz web) |
| 5666 | NRPE (monitorización remota) |
| 12489 | NSClient++ (Windows) |
2.4 Preparación
sudo apt update
sudo apt full-upgrade -y
sudo apt install -y wget curl unzipConsulta 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 gettext3.2 Crear usuario y grupo
sudo useradd nagios
sudo groupadd nagcmd
sudo usermod -a -G nagcmd nagios
sudo usermod -a -G nagcmd www-data3.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.13.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-webconfExplicació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 nagiosadminIntroduce 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 nagios3.7 Verificar
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfgDebería decir: «Total Warnings: 0, Total Errors: 0».
3.8 Acceder a la interfaz web
Abre en el navegador:
http://IP_DEL_SERVIDOR/nagiosCredenciales:
- 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 installConsulta 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, logs4.2 Configuración principal
Edita /usr/local/nagios/etc/nagios.cfg:
sudo nano /usr/local/nagios/etc/nagios.cfgAjustes 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=304.3 Configuración web
Edita /usr/local/nagios/etc/cgi.cfg:
sudo nano /usr/local/nagios/etc/cgi.cfgCambiar 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=nagiosadmin4.4 Variables de recursos
Edita /usr/local/nagios/etc/resource.cfg:
sudo nano /usr/local/nagios/etc/resource.cfg$USER1$=/usr/local/nagios/libexec4.5 Directorio para hosts
sudo mkdir -p /usr/local/nagios/etc/serversVerificar:
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg5. 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.cfgContenido:
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 nagiosVerificar: 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 nagios7. 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
| Plugin | Uso |
|---|---|
| check_ping | Conectividad ICMP |
| check_http | Servidor web (HTTP/HTTPS) |
| check_ssh | Servicio SSH |
| check_tcp | Puerto TCP abierto |
| check_disk | Espacio en disco |
| check_load | Carga del sistema |
| check_memory | Uso de memoria |
| check_users | Usuarios conectados |
| check_procs | Procesos activos |
| check_swap | Uso de swap |
| check_ntp | Sincronización NTP |
| check_dns | Servidor DNS |
| check_smtp | Servidor SMTP |
| check_mysql | Base de datos MySQL |
| check_postgres | Base 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 install7.4 Plugins de la comunidad
Repositorio Monitor Plugins:
https://www.monitoring-plugins.org
sudo apt install -y monitoring-pluginsConsulta 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 plugin8.2 Instalar NRPE en el servidor remoto
sudo apt install -y nagios-nrpe-server nagios-plugins8.3 Configurar NRPE
Edita /etc/nagios/nrpe.cfg:
sudo nano /etc/nagios/nrpe.cfgAjustes:
# 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 3008.4 Reiniciar NRPE
sudo systemctl restart nagios-nrpe-server
sudo systemctl enable nagios-nrpe-server8.5 Firewall en el servidor remoto
sudo ufw allow from IP_DEL_NAGIOS_SERVER to any port 5666 proto tcp8.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.cfgdefine 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 3650Configurar NRPE:
ssl_log_file=/var/log/nrpe.log
ssl_cert_file=/etc/nagios/nrpe.crt
ssl_private_key_file=/etc/nagios/nrpe.key8.8 Windows: NSClient++
Para monitorizar servidores Windows:
- Descarga NSClient++ desde https://nsclient.org/.
- Instala y configura.
- Permite conexiones desde el servidor Nagios.
- 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.cfgdefine 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 mailutilsProbar:
echo "Test" | mail -s "Test" tu-email@ejemplo.comConfigurar 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.shDefinir 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:
- Hosts → Commands → Schedule downtime.
- 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 notifyConsulta 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-fpm10.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 fcgiwrap10.4 Activar sitio
sudo ln -s /etc/nginx/sites-available/nagios /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx10.5 SSL con Let’s Encrypt
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d nagios.tudominio.comConsulta Guía completa para configurar SSL en Nginx.
11. Seguridad
11.1 Checklist
- HTTPS obligatorio.
- Autenticación web (htpasswd).
- Firewall restrictivo.
- Fail2ban.
- Acceso por IP (opcional).
- Actualizaciones.
- Backups.
11.2 Fail2ban
sudo apt install -y fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localAñade a /etc/fail2ban/jail.local:
[nagios]
enabled = true
port = http,https
filter = nagios
logpath = /var/log/nginx/nagios.access.log
maxretry = 5
bantime = 86400Crea /etc/fail2ban/filter.d/nagios.conf:
[Definition]
failregex = ^<HOST> - .* "GET /nagios/.* HTTP.*" 401
ignoreregex =Reiniciar:
sudo systemctl restart fail2banConsulta 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 wireguardConsulta 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 enableConsulta 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 -deletesudo chmod +x /usr/local/bin/backup-nagios.sh
sudo crontab -e0 3 * * * /usr/local/bin/backup-nagios.sh >> /var/log/backup-nagios.log 2>&1Consulta 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 icingaweb2Web: 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 monitoringWeb: 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.
13.6 Comparativa
| Herramienta | Tipo | Curva | Interfaz |
|---|---|---|---|
| Nagios Core | Open source | Media | Antigua |
| Icinga 2 | Open source | Media | Moderna |
| Checkmk | Comercial+free | Baja | Moderna |
| Zabbix | Open source | Alta | Buena |
| Netdata | Open source | Muy baja | Excelente |
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.logVerificar configuración:
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg14.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.log14.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 localhost14.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 nrpeCausas:
- Firewall bloquea puerto 5666.
allowed_hostsmal configurado.- NRPE no arranca.
14.6 Alertas no se envían
Diagnóstico:
sudo tail -f /usr/local/nagios/var/nagios.log | grep -i notifyCausas:
- Sin contacto asociado.
- Sin comando de notificación.
notifications_enableda 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_intervalmuy 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.cfgCorrige los errores que muestre.
14.10 Migración a otro servidor
Pasos:
- Backup de
/usr/local/nagios/etc/. - Instalar Nagios en el nuevo servidor.
- Restaurar configuración.
- 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++:
- Descarga desde https://nsclient.org/.
- Instala en el servidor Windows.
- Permite conexiones desde Nagios.
- Añade checks con
check_nto 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?
- Crea archivo
.cfgen/usr/local/nagios/etc/servers/. - Define
hostyservice. - Verifica con
nagios -v. - 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?
- Ver logs:
sudo tail -f /usr/local/nagios/var/nagios.log- Ejecutar plugin manualmente:
sudo -u nagios /usr/local/nagios/libexec/check_http -H host- Corregir configuración.
¿Nagios funciona con Docker?
Sí. Hay imágenes oficiales:
docker pull jasonrivers/nagiosConsulta 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:
- Instalación desde código fuente en Debian 12.
- Plugins esenciales (
check_http,check_ping…). - NRPE para monitorización remota.
- Alertas por email, Slack, Telegram.
- Interfaz web con Nginx + SSL.
- Seguridad: HTTPS, htpasswd, Fail2ban.
- Escalado de alertas.
- Alternativas: Icinga 2, Checkmk.
- Troubleshooting extenso.
- Backups automatizados.
Si quieres seguir aprendiendo:







Pingback: Novedades en Debian 12 y Cómo Configurarlo en un Servidor
Pingback: 10 Herramientas Imprescindibles para la Administración de Servidores Linux