Introducción a la monitorización de logs

Los logs son el sistema nervioso de cualquier servidor Linux. Sin ellos, diagnosticar fallos, detectar intrusiones o simplemente entender qué está pasando en el sistema se convierte en una tarea de adivinanza. En esta primera parte exploraremos tres herramientas fundamentales que cualquier administrador debe dominar: journalctl, rsyslog y logwatch.

Cada una cumple un rol distinto: journalctl es el cliente del sistema de logs moderno de systemd, rsyslog es el motor tradicional de gestión de logs con capacidades de enrutamiento remoto, y logwatch automatiza los reportes diarios. Al dominar estas tres herramientas, tendrás una base sólida para escalar a soluciones más avanzadas en la Parte II.

journalctl: el visor de logs de systemd

systemd-journald recolecta logs binarios en /var/log/journal/. Con journalctl accedemos a ellos de forma estructurada y filtrable. Veamos los comandos esenciales:

# Ver logs del servicio SSH
journalctl -u ssh

# Ver errores desde ayer
journalctl -p err --since yesterday

# Seguir logs en tiempo real (-f = follow)
journalctl -f

# Filtrar por PID específico
journalctl _PID=1234

# Mostrar solo mensajes de prioridad warning (4) o superior
journalctl -p 4..0

# Ver logs del kernel
journalctl -k

# Paginación, JSON y formatos
journalctl -o json-pretty
journalctl --no-pager -n 50

La combinación de banderas permite crear filtros muy precisos. Por ejemplo, para ver solo errores de autenticación SSH de hoy:

journalctl -u ssh -p err --since today

Si el sistema guarda logs persistentemente (en /var/log/journal/), tendrás acceso histórico incluso tras reinicios. De lo contrario, los logs se pierden al apagar el equipo.

rsyslog: el motor tradicional de logs

rsyslog es el heredero de syslog y sigue siendo el estándar en muchas distribuciones. Su configuración vive en /etc/rsyslog.conf y /etc/rsyslog.d/. Se organiza alrededor de dos conceptos clave: facility y severity.

# /etc/rsyslog.conf — Ejemplo de configuración

# Log todos los mensajes de autenticación
auth.*                           /var/log/auth.log

# Mensajes del kernel
kern.*                           /var/log/kern.log

# Daemon (servicios del sistema)
daemon.*                         /var/log/daemon.log

# Enviar logs críticos a un servidor remoto
*.crit                           @192.168.1.100:514

Los facilities más usados son: auth (autenticación), authpriv (privada), daemon (demonios), kern (kernel), mail (correo), user (usuarios), local0-local7 (personalizados). Las severidades van de emerg (0) a debug (7).

Envío remoto de logs con rsyslog

Una de las capacidades más potentes de rsyslog es reenviar logs a un servidor central. Esto es esencial en entornos multi-servidor. Se configura con templates:

# Template personalizado para envío remoto
$template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs

# Enviar a servidor central por TCP
*.* @@servidor-central.example.com:514

# Enviar a servidor central por UDP
*.* @servidor-central.example.com:514

El puerto 514 es el estándar syslog. Usa TCP (con @@) si necesitas fiabilidad, y UDP (con @) si prefieres menor latencia.

logwatch: reportes automáticos por correo

Logwatch analiza los logs y genera resúmenes legibles. Se instala fácilmente y se puede configurar para que envíe reportes diarios por correo electrónico.

# Instalar logwatch
apt update && apt install logwatch -y

# Configuración principal en:
# /usr/share/logwatch/default.conf/logwatch.conf

# Ejemplo de configuración típica
Output = mail
MailTo = admin@midominio.com
MailFrom = logwatch@midominio.com
Range = yesterday
Detail = Low
Service = All
Format = html

Logwatch se ejecuta típicamente como cron diario en /etc/cron.daily/00logwatch. Puedes forzar un reporte manual para probar:

# Ejecutar logwatch manualmente
logwatch --detail High --range today --service sshd --output stdout

# O enviar por correo directamente
logwatch --detail High --range yesterday --mailto admin@midominio.com

Con logwatch, cada mañana recibirás un resumen de lo ocurrido en el servidor sin necesidad de revisar manualmente gigas de logs. En la Parte II veremos herramientas mucho más potentes como ELK Stack, Loki y Grafana.

Infografía Monitorización de logs en Linux: Parte I — Básica con journalctl, rsyslog y logwatch
Infografía: Monitorización de logs en Linux: Parte I — Básica con journalctl, rsyslog y logwatch