Ghost AcademySecLearn// Seguridad Informática
Práctica de Laboratorio · Monitorización de Sistemas

Nagios Core

Instalación desde código fuente · Configuración · Monitorización en Ubuntu 24.04

🔧
Ubuntu 24.04
Noble Numbat
🌐
Apache + PHP
Interfaz web
🔌
Plugins + NRPE
Comprobaciones
📊
Nagios v4.5.3
Versión estable
🎯

¿Qué es Nagios Core?

Nagios Core es el motor de monitorización de sistemas y redes de código abierto más utilizado en entornos empresariales. Permite vigilar en tiempo real el estado de servidores, servicios de red, aplicaciones y dispositivos, enviando alertas automáticas cuando algo falla o se degrada.

A diferencia de Nagios XI (versión comercial con interfaz gráfica completa), Nagios Core se configura íntegramente editando archivos de texto, lo que lo convierte en una herramienta ideal para entender en profundidad cómo funciona la monitorización a nivel técnico.

ℹ️

Instalación desde código fuente: La instalación de Nagios Core en Ubuntu 24.04 se realiza compilando el código fuente porque garantiza la versión más reciente y la configuración óptima. Los repositorios apt a veces ofrecen versiones desactualizadas.

Al finalizar este laboratorio serás capaz de:

🏗️

Arquitectura y Conceptos Clave

Antes de empezar es fundamental entender los dos elementos centrales de Nagios:

ConceptoDefiniciónEjemplo
HostUn dispositivo físico o virtual que Nagios va a monitorizarServidor Ubuntu, Router, Windows PC
ServiceUna comprobación específica que se ejecuta sobre un hostPing, HTTP, CPU, Disco, MySQL
PluginScript o binario que realiza la comprobación y devuelve un estadocheck_ping, check_http, check_disk
ContactPersona que recibe las notificaciones de alertasAdministrador de sistemas
TemplatePlantilla de configuración reutilizablegeneric-host, linux-server
NRPEAgente que permite ejecutar plugins en el host remotoComprobar RAM de un servidor Windows

Estados posibles de un host

UP DOWN PENDING
EstadoSignificado
UPEl host responde correctamente a las comprobaciones
DOWNEl host no responde — puede estar caído o inaccesible
UNREACHABLEUn host intermedio (padre) está caído y bloquea el acceso
PENDINGAún no se ha ejecutado ninguna comprobación

Estados posibles de un servicio

OK WARNING CRITICAL UNKNOWN
EstadoSignificadoEjemplo típico
OKEl servicio funciona dentro de los parámetros normalesDisco al 45%, ping <100ms
WARNINGEl servicio está degradado pero no ha falladoDisco al 80%, ping 250ms
CRITICALEl servicio ha fallado o superado el umbral críticoDisco al 95%, HTTP 500, ping timeout
UNKNOWNEl plugin no pudo determinar el estado (error del propio plugin)Plugin mal configurado, permisos
🖥️

Preparar el Entorno

Prerrequisitos

Este laboratorio se realizará sobre Ubuntu 24.04 LTS (Noble Numbat). Necesitas un equipo o máquina virtual con acceso a internet y privilegios de superusuario.

1

Verificar la versión del sistema:

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04.1 LTS
Release:        24.04
Codename:       noble
2

Crear el directorio de trabajo del laboratorio:

mkdir -p ~/lab-nagios && cd ~/lab-nagios
echo "Directorio: /"
⚠️

Permisos sudo: Casi todos los comandos de este laboratorio requieren privilegios de superusuario. Asegúrate de tener sudo configurado o de trabajar como root. En una VM de laboratorio, trabajar directamente como root con sudo -i simplifica el proceso.

📦

Paso 1: Instalación de Dependencias

apt

Nagios requiere herramientas de compilación, bibliotecas de gráficos web y el servidor Apache con soporte PHP. Sin estas dependencias, la compilación fallará.

1

Actualizar el sistema:

sudo apt update
sudo apt upgrade -y
2

Instalar todos los paquetes esenciales en un solo comando:

sudo apt install -y autoconf gcc libc6 make wget unzip apache2 php   libapache2-mod-php libgd-dev openssl libssl-dev build-essential
PaqueteFunción en Nagios
autoconf, gcc, make, build-essentialHerramientas de compilación de código C (Nagios Core está escrito en C)
apache2, php, libapache2-mod-phpServidor web y soporte PHP para la interfaz gráfica de Nagios
libgd-devBiblioteca de gráficos necesaria para generar los mapas visuales de la interfaz web
openssl, libssl-devLibrerías de seguridad para comunicaciones cifradas
wget, unzipHerramientas de descarga y descompresión del código fuente
3

Verificar que la instalación fue correcta comprobando la versión de Apache:

apache2 -v
php --version
👤

Paso 2: Configuración de Usuario y Grupo

Seguridad

Es una práctica recomendada en sistemas Unix crear un usuario y grupo dedicados para cada servicio. Esto limita los permisos del proceso de Nagios al mínimo necesario, reduciendo la superficie de ataque.

1

Crear el usuario nagios (sin directorio home, sin shell interactiva):

sudo useradd nagios
2

Crear el grupo nagcmd para el manejo de comandos externos:

sudo groupadd nagcmd
3

Añadir el usuario nagios al grupo nagcmd:

sudo usermod -a -G nagcmd nagios
4

Añadir el usuario www-data (Apache) al grupo nagcmd:

sudo usermod -a -G nagcmd www-data

Esto permite al servidor web enviar comandos externos a Nagios (reconocer alertas, programar mantenimientos, etc.) a través del pipe de comandos.

💡

¿Por qué www-data necesita estar en nagcmd? La interfaz web de Nagios permite ejecutar acciones (como "reconocer un problema" o "programar downtime") que envían comandos al proceso Nagios a través de un fichero de pipe especial (/usr/local/nagios/var/rw/nagios.cmd). Sin este permiso, la interfaz web no podría enviar esos comandos y daría error 403.

⚙️

Paso 3: Descarga y Compilación de Nagios Core

v4.5.3

Compilar desde código fuente nos da control total sobre la configuración y garantiza que tenemos la versión más reciente con todas las dependencias correctas.

ℹ️

Versiones: Los ejemplos usan la versión 4.5.3. Consulta assets.nagios.com para obtener la URL de la versión más reciente en el momento de realizar el laboratorio.

1

Descargar Nagios Core v4.5.3:

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

Descomprimir y acceder al directorio:

tar -zxvf nagios-4.5.3.tar.gz
cd nagios-4.5.3

La flag -zxvf significa: descomprimir gzip (z), extraer (x), modo verbose (v), fichero (f).

3

Configurar la compilación especificando el grupo de comandos:

sudo ./configure --with-command-group=nagcmd

El script configure detecta el sistema, verifica dependencias y genera los Makefile. Al final mostrará un resumen. Si hay errores de dependencias faltantes, los indicará aquí.

4

Compilar todo el código fuente (puede tardar 2-5 minutos):

sudo make all
💡

Para acelerar la compilación en sistemas con varios núcleos: sudo make -j2 all

5

Instalar Nagios Core ejecutando los targets de make en orden:

# Instala binarios, CGIs y archivos HTML de la interfaz web
sudo make install

# Instala los scripts de inicio del servicio (systemd)
sudo make install-init

# Configura los permisos del archivo de comandos externos
sudo make install-commandmode

# Instala los archivos de configuración de ejemplo en /usr/local/nagios/etc/
sudo make install-config

# Instala el archivo de configuración de Apache para Nagios
sudo make install-webconf
Comando makeQué instalaDestino
make installBinarios, CGIs e interfaz HTML/usr/local/nagios/
make install-initUnit de systemd para el servicio/lib/systemd/system/nagios.service
make install-commandmodePermisos del pipe de comandos/usr/local/nagios/var/rw/
make install-configArchivos de configuración de ejemplo/usr/local/nagios/etc/
make install-webconfConfiguración de Apache para Nagios/etc/apache2/conf-enabled/nagios.conf
🔌

Paso 4: Instalación de Plugins de Nagios

v2.4.10

Los plugins son los ejecutables que realizan las comprobaciones reales. Sin ellos, Nagios no puede verificar nada. El paquete oficial contiene más de 50 plugins para los servicios más comunes.

1

Descargar los Nagios Plugins v2.4.10:

cd /tmp
wget https://nagios-plugins.org/download/nagios-plugins-2.4.10.tar.gz
2

Descomprimir y acceder al directorio:

tar -zxvf nagios-plugins-2.4.10.tar.gz
cd nagios-plugins-2.4.10
3

Configurar, compilar e instalar los plugins:

sudo ./configure --with-nagios-user=nagios --with-nagios-group=nagios
sudo make
sudo make install

Los plugins se instalan en /usr/local/nagios/libexec/. Puedes listarlos con: ls /usr/local/nagios/libexec/

4

Verificar que los plugins se instalaron correctamente:

ls /usr/local/nagios/libexec/ | head -20
check_apt          check_dig          check_http
check_by_ssh       check_disk         check_imap
check_cluster      check_dns          check_ldap
check_dbi          check_dummy        check_load
check_dhcp         check_file_age     check_mrtg
check_disk_smb     check_ftp          check_mysql
check_ping         check_smtp         check_tcp
check_pop          check_ssh          check_udp
PluginQué compruebaEjemplo de uso
check_pingConectividad ICMP (latencia y pérdida de paquetes)Cualquier dispositivo en red
check_httpEstado de un servidor web HTTP/HTTPSVerificar que el sitio web responde
check_diskUso del disco en el servidor localAlertar al 80% / crítico al 90%
check_loadCarga media del sistemaDetectar sobrecarga de CPU
check_sshAccesibilidad del servicio SSHPuerto 22 abierto y respondiendo
check_smtpServidor de correo SMTPPuerto 25 disponible
check_mysqlEstado de una base de datos MySQLConexión y credenciales válidas
check_nrpeEjecuta plugins en el host remoto vía NRPEDisco, RAM, CPU en servidor remoto
🌐

Paso 5: Configuración de Apache y Acceso Web

Apache
1

Habilitar los módulos de Apache necesarios:

# rewrite: necesario para las URLs amigables de Nagios
sudo a2enmod rewrite

# cgi: necesario para ejecutar los scripts CGI de Nagios (la interfaz web)
sudo a2enmod cgi
2

Crear el usuario administrador web (nagiosadmin):

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

El sistema te pedirá introducir y confirmar la contraseña. En el documento de práctica se usa dingdong, aunque en entornos reales debes usar una contraseña robusta.

⚠️

La flag -c crea un nuevo archivo. Si ya existe y quieres añadir otro usuario sin borrar el primero, omite -c: sudo htpasswd /usr/local/nagios/etc/htpasswd.users otrouser

3

Reiniciar Apache para aplicar la configuración web:

sudo systemctl restart apache2
4

Verificar la configuración de Nagios antes de iniciar el servicio:

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

Este comando es crítico: revisa la sintaxis de todos los archivos de configuración. Si hay errores, los indica con número de línea. Nunca inicies Nagios sin verificar primero.

Nagios Core 4.5.3
Copyright (c) 2009-present Nagios Core Development Team
...
Total Warnings: 0
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check
5

Habilitar e iniciar el servicio Nagios:

# Habilitar para que arranque automáticamente con el sistema
sudo systemctl enable nagios

# Iniciar el servicio ahora
sudo systemctl start nagios

# Verificar que está activo
sudo systemctl status nagios
● nagios.service - Nagios Core
     Loaded: loaded (/lib/systemd/system/nagios.service; enabled)
     Active: active (running) since ...
    Process: ... ExecStart=/usr/local/nagios/bin/nagios ...
   Main PID: 96800 (nagios)
     Status: "Daemon running..."
6

Si usas UFW (firewall), permite el tráfico HTTP:

sudo ufw allow 'Apache'
# O específicamente el puerto 80
sudo ufw allow 80/tcp
sudo ufw status
🔑

Paso 6: Primer Acceso a la Interfaz Web

Verificación

Con el servicio activo, abre tu navegador y accede a la interfaz web de Nagios.

1

Obtener la IP del servidor (si no la conoces):

hostname -I | awk '{print }'
2

Acceder desde el navegador:

http://<tu_direccion_IP>/nagios

# Ejemplo local:
http://localhost/nagios
http://127.0.0.1/nagios

El navegador mostrará un diálogo de autenticación. Introduce las credenciales que configuraste en el paso anterior:

🔐

Usuario: nagiosadmin

Contraseña: La que estableciste (ej: dingdong)

Interfaz web de Nagios Core
Interfaz web de Nagios Core tras la instalación exitosa
Menú lateral de Nagios
Menú lateral izquierdo de Nagios Core con todas las secciones de navegación
🖥️

La Interfaz Web de Nagios Core

La interfaz de Nagios Core se divide en un menú lateral izquierdo con cuatro secciones principales. La mayoría del trabajo de monitorización se realiza en Current Status.

Sección del MenúFunción
Current StatusMuestra el estado actual y los problemas (en rojo/naranja) en tiempo real
ReportsMuestra el historial de eventos, notificaciones y gráficos de disponibilidad
SystemGestión del propio proceso Nagios: comentarios, downtime, rendimiento
GeneralPágina de inicio y enlace a documentación oficial

Referencia completa del menú

🖥️

Añadir un Host a la Monitorización

Configuración

Nagios Core no tiene interfaz gráfica para añadir configuraciones. Toda la configuración se realiza editando archivos .cfg en el servidor Ubuntu. Esta es la diferencia fundamental con Nagios XI.

📁

Ubicación de los archivos de configuración:

  • Configuración principal: /usr/local/nagios/etc/nagios.cfg
  • Objetos (hosts, servicios): /usr/local/nagios/etc/objects/
  • Plantillas: /usr/local/nagios/etc/objects/templates.cfg
  • Comandos: /usr/local/nagios/etc/objects/commands.cfg
1

Crear el archivo de definición de hosts (o añadir al existente):

sudo nano /usr/local/nagios/etc/objects/hosts.cfg
2

Definir el host a monitorizar — añade este bloque al archivo:

define host{
    use         linux-server          ; Plantilla heredada (de templates.cfg)
    host_name   Servidor_Windows      ; Nombre que aparecerá en Nagios
    alias       Mi Servidor de Pruebas ; Descripción legible
    address     192.168.1.5           ; Dirección IP del host (tu máquina Windows)
}
💡

Plantillas disponibles: La directiva use hereda configuración de una plantilla definida en templates.cfg. Las más usadas son:

  • linux-server: Para servidores Linux (comprobación PING activa)
  • windows-server: Para servidores Windows
  • generic-host: Base genérica con valores mínimos
3

Registrar el nuevo fichero en nagios.cfg añadiendo su ruta:

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

Busca la sección cfg_file=... y añade la línea:

cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
💡

Alternativamente, puedes usar cfg_dir=/usr/local/nagios/etc/objects/ para que Nagios cargue automáticamente todos los .cfg del directorio, sin necesidad de registrar cada fichero individualmente.

🔧

Añadir Servicios a la Monitorización

Configuración

Los servicios definen qué comprobación específica se ejecuta sobre un host. Cada servicio invoca un plugin concreto con sus parámetros de umbral.

1

Definir un servicio de Ping (el más básico — check_ping):

define service{
    use                  generic-service        ; Plantilla heredada
    host_name            Servidor_Windows       ; El nombre del host definido arriba
    service_description  Estado del Ping        ; Descripción del servicio en la UI
    check_command        check_ping!100.0,20%!500.0,60%
    notifications_enabled 1
}

; Explicación de los argumentos de check_ping:
; check_ping!WARN_latencia,WARN_%perdida!CRIT_latencia,CRIT_%perdida
; 100ms y 20% pérdida → WARNING
; 500ms y 60% pérdida → CRITICAL
2

Monitorizar el uso de disco (check_disk):

define service{
    use                  generic-service
    host_name            localhost
    service_description  Uso de Disco Raiz
    check_command        check_disk!20%!10%!/

    ; check_disk!WARN%!CRIT%!PARTICION
    ; WARNING si queda menos del 20% libre
    ; CRITICAL si queda menos del 10% libre
    ; En la partición raíz /
}
3

Monitorizar un servidor web HTTP (check_http):

define service{
    use                  generic-service
    host_name            Servidor_Windows
    service_description  Servicio HTTP
    check_command        check_http
    notifications_enabled 1
}

; check_http comprueba que el servidor responde en el puerto 80
; Variantes con argumentos:
; check_http!-p 8080        ; Puerto diferente
; check_http!-S             ; HTTPS (puerto 443)
; check_http!-u /health     ; URL específica
4

Monitorizar la carga del sistema (check_load) en el propio servidor Nagios:

define service{
    use                  generic-service
    host_name            localhost
    service_description  Carga del Sistema
    check_command        check_load!5.0,4.0,3.0!10.0,6.0,4.0

    ; check_load!WARN_1m,5m,15m!CRIT_1m,5m,15m
    ; Los 3 valores son la media de carga de 1min, 5min y 15min
}
PluginSintaxis del check_commandParámetros
check_pingcheck_ping!100,20%!500,60%latencia(ms),pérdida(%) para WARN y CRIT
check_httpcheck_httpSin args: comprueba puerto 80
check_diskcheck_disk!20%!10%!/% libre WARN, % libre CRIT, partición
check_loadcheck_load!5,4,3!10,6,4carga media 1m,5m,15m para WARN y CRIT
check_sshcheck_sshSin args: comprueba puerto 22
check_tcpcheck_tcp!3306Número de puerto a comprobar
⌨️

Comandos Esenciales de Nagios

Operación diaria

Después de modificar cualquier archivo de configuración, debes siempre verificar y recargar Nagios. Nunca apliques cambios sin verificar primero.

ComandoFunciónCuándo usarlo
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg Verifica la sintaxis de todos los archivos. Si hay errores, no continúes. Siempre antes de reiniciar
sudo systemctl restart nagios Reinicia el servicio Nagios aplicando los cambios de configuración Después de la verificación exitosa
sudo systemctl status nagios Verifica que el daemon se haya iniciado correctamente Después del reinicio
sudo systemctl reload nagios Recarga la configuración sin interrupción del servicio Cambios menores sin reinicio completo
sudo systemctl stop nagios Detiene el servicio completamente Mantenimiento, actualizaciones
sudo tail -f /usr/local/nagios/var/nagios.log Monitoriza el log de Nagios en tiempo real Diagnóstico de problemas
🔄

Flujo de Trabajo Estándar

Cada vez que quieras añadir o modificar hosts o servicios en Nagios, debes seguir este flujo sin saltarte ningún paso:

📝
Editar
Modificar o crear archivos .cfg
→
✅
Verificar
nagios -v nagios.cfg
→
🔄
Reiniciar
systemctl restart nagios
→
🌐
Revisar
Current Status en la web
1

Añadir o editar archivos .cfg con los nuevos hosts/servicios.

2

Ejecutar la verificación — si hay errores, corrígelos antes de continuar:

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

Busca la línea Total Errors: 0 al final. Si hay errores, indica la línea exacta del problema.

3

Ejecutar el reinicio solo si la verificación fue exitosa:

sudo systemctl restart nagios
sudo systemctl status nagios
4

Revisar el Current Status en la interfaz web. Los nuevos hosts/servicios pueden aparecer en estado PENDING hasta que se ejecute la primera comprobación (normalmente en 1-5 minutos).

🔌

El Siguiente Paso: Plugin NRPE

Avanzado

Para monitorizar recursos internos de un host remoto (RAM, CPU, procesos, disco en Windows/Linux), necesitas el Nagios Remote Plugin Executor (NRPE). Los plugins básicos como check_ping o check_http funcionan desde el servidor Nagios, pero no pueden ver el interior del sistema operativo sin un agente.

ComprobaciónSin NRPECon NRPE
Conectividad PING✅ check_ping—
Servicio HTTP✅ check_http—
Puerto TCP abierto✅ check_tcp—
Uso de CPU del host❌ Imposible✅ check_nrpe → check_load
Uso de RAM del host❌ Imposible✅ check_nrpe → check_mem
Espacio en disco del host❌ Imposible✅ check_nrpe → check_disk
Procesos en ejecución❌ Imposible✅ check_nrpe → check_procs

Arquitectura NRPE

🖥️
Nagios Server
Ubuntu — ejecuta
check_nrpe plugin
⟷
🔌
Puerto 5666
Canal cifrado SSL/TLS
⟷
💻
Host Remoto
Windows/Linux
NSClient++ o nrpe daemon
1

Instalar NRPE plugin en el servidor Nagios (Ubuntu):

sudo apt install -y nagios-nrpe-plugin

O compilarlo desde fuente para la versión más reciente:

cd /tmp
wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.1.0/nrpe-4.1.0.tar.gz
tar -zxvf nrpe-4.1.0.tar.gz
cd nrpe-4.1.0
sudo ./configure --enable-command-args
sudo make check_nrpe
sudo make install-plugin
2

Instalar el agente NRPE en el host remoto Linux:

# En la máquina REMOTA que quieres monitorizar
sudo apt install -y nagios-nrpe-server nagios-plugins

Para Windows, instala NSClient++ que incluye soporte NRPE.

3

Configurar el agente NRPE en el host remoto Linux para aceptar conexiones del servidor Nagios:

# En la máquina remota
sudo nano /etc/nagios/nrpe.cfg

Añade o modifica la línea allowed_hosts:

allowed_hosts=127.0.0.1,IP_SERVIDOR_NAGIOS

# Comandos disponibles para comprobación remota
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda1
command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200
4

Definir en Nagios un servicio que use NRPE para comprobar el disco remoto:

define command{
    command_name  check_nrpe
    command_line  $/check_nrpe -H $ -c $
}

define service{
    use                  generic-service
    host_name            Servidor_Remote
    service_description  Disco Remoto /dev/sda1
    check_command        check_nrpe!check_hda1
}
👥

Grupos de Hosts y Contactos

Avanzado

Los grupos permiten organizar los hosts por función, visualizar su estado de forma agrupada en la interfaz, y definir quién recibe las alertas de cada grupo.

1

Definir un grupo de hosts en hostgroups.cfg:

define hostgroup{
    hostgroup_name  servidores-web       ; Identificador interno
    alias           Servidores Web       ; Nombre que aparece en la UI
    members         web01, web02, web03  ; Nombres de los hosts miembros
}
2

Definir un contacto para recibir alertas en contacts.cfg:

define contact{
    contact_name            admin_web            ; Identificador
    alias                   Administrador Web    ; Nombre descriptivo
    email                   admin@empresa.com    ; Email de notificaciones
    use                     generic-contact      ; Plantilla base
    host_notification_commands    notify-host-by-email
    service_notification_commands notify-service-by-email
}
3

Definir un grupo de contactos y asignarlo a un grupo de hosts:

define contactgroup{
    contactgroup_name  admins-web
    alias              Administradores de Servidores Web
    members            admin_web, admin_backup
}
📧

Configurar Notificaciones por Email

Avanzado

Nagios puede enviar notificaciones por email cuando un host o servicio cambia de estado. Esto requiere que el servidor tenga un MTA (Mail Transfer Agent) configurado.

1

Instalar mailutils (MTA básico para el envío de emails):

sudo apt install -y mailutils postfix

Durante la instalación de Postfix, selecciona "Internet Site" y usa el nombre de dominio del servidor.

2

Verificar que los comandos de notificación están en commands.cfg:

grep -A5 "notify-service-by-email" /usr/local/nagios/etc/objects/commands.cfg
define command{
    command_name    notify-service-by-email
    command_line    /usr/bin/printf "%b" "..." | /usr/bin/mail -s "** $ Service Alert: $/$ **" $
}
3

Configurar el email del contacto nagiosadmin en contacts.cfg:

define contact{
    contact_name    nagiosadmin
    use             generic-contact
    alias           Nagios Admin
    email           tu@email.com   ; ← Cambia esto
}
🔍

Resolución de Problemas (Troubleshooting)

Diagnóstico
⚠️

La mayoría de los problemas en Nagios Core tienen solución consultando los logs. El primer lugar a mirar siempre es /usr/local/nagios/var/nagios.log

ProblemaCausa más comúnSolución
Apache muestra error 403 en /nagiosMódulo CGI no habilitadosudo a2enmod cgi && sudo systemctl restart apache2
Nagios no arranca tras editar configError de sintaxis en un .cfgEjecutar nagios -v y corregir el error indicado
Servicio en estado UNKNOWNPlugin no encontrado o sin permisosVerificar que existe en /usr/local/nagios/libexec/ y es ejecutable
Host siempre en PENDINGNagios no recargó la nueva configsudo systemctl restart nagios
No llegan emails de alertaPostfix no configurado o email incorrectoComprobar /var/log/mail.log y la config del contacto
NRPE: CHECK_NRPE: ErrorFirewall o allowed_hosts incorrectoVerificar puerto 5666 abierto y IP en allowed_hosts
Interfaz web muy lentaDemasiadas comprobaciones simultáneasAjustar max_concurrent_checks en nagios.cfg

Comandos de diagnóstico útiles

# Ver el log de Nagios en tiempo real
sudo tail -f /usr/local/nagios/var/nagios.log

# Comprobar el log de Apache (errores de la interfaz web)
sudo tail -f /var/log/apache2/error.log

# Probar un plugin manualmente (fuera de Nagios)
/usr/local/nagios/libexec/check_ping -H 192.168.1.5 -w 100,20% -c 500,60%

# Verificar la sintaxis de configuración
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

# Ver el estado del servicio Nagios
sudo systemctl status nagios

# Verificar que NRPE responde en un host remoto
/usr/local/nagios/libexec/check_nrpe -H 192.168.1.5

# Ver todos los procesos de Nagios activos
ps aux | grep nagios
📋

Resumen y Cheatsheet de Referencia

🎉

¡Laboratorio completado! Has instalado Nagios Core desde código fuente, configurado Apache para el acceso web, añadido hosts y servicios, y aprendido a gestionar el ciclo de operación diaria.

Rutas de archivos importantes

# Binario principal
/usr/local/nagios/bin/nagios

# Configuración principal
/usr/local/nagios/etc/nagios.cfg

# Directorio de objetos (hosts, servicios, contactos)
/usr/local/nagios/etc/objects/

# Plugins
/usr/local/nagios/libexec/

# Log principal
/usr/local/nagios/var/nagios.log

# Credenciales de acceso web
/usr/local/nagios/etc/htpasswd.users

# Pipe de comandos externos
/usr/local/nagios/var/rw/nagios.cmd

Comandos de operación diaria

──── VERIFICAR / INICIAR / PARAR ────────────────────────────────
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
sudo systemctl restart nagios
sudo systemctl status nagios
sudo systemctl stop nagios

──── FLUJO COMPLETO TRAS EDITAR CONFIGURACIÓN ───────────────────
# 1. Editar archivos .cfg
sudo nano /usr/local/nagios/etc/objects/hosts.cfg
# 2. Verificar
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
# 3. Reiniciar (solo si Total Errors: 0)
sudo systemctl restart nagios
# 4. Revisar en la web: http://IP/nagios → Current Status

──── LOGS ───────────────────────────────────────────────────────
sudo tail -f /usr/local/nagios/var/nagios.log
sudo tail -f /var/log/apache2/error.log

──── PROBAR PLUGINS MANUALMENTE ─────────────────────────────────
/usr/local/nagios/libexec/check_ping -H IP -w 100,20% -c 500,60%
/usr/local/nagios/libexec/check_http -H IP
/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /

Capacidades adquiridas