Análisis de logs: /var/log/ y journalctl

Introducción

Los logs son el registro de eventos del sistema y los servicios. Son imprescindibles para diagnosticar fallos, auditar accesos y monitorizar el comportamiento del sistema. En Linux hay dos fuentes principales: los archivos de texto en /var/log/ y el diario binario de systemd consultable con journalctl.

Archivos principales en /var/log/


/var/log/syslog         # log general del sistema (Debian/Ubuntu)
/var/log/messages       # log general (RHEL/Fedora/CentOS)
/var/log/auth.log       # autenticaciones y sudo (Debian/Ubuntu)
/var/log/secure         # autenticaciones (RHEL/Fedora)
/var/log/kern.log       # mensajes del kernel
/var/log/dmesg          # mensajes de arranque del kernel
/var/log/boot.log       # log del proceso de arranque
/var/log/apt/           # operaciones de apt (Debian/Ubuntu)
/var/log/dnf.log        # operaciones de dnf (Fedora/RHEL)
/var/log/nginx/         # logs de nginx (access.log, error.log)
/var/log/apache2/       # logs de Apache
          

Herramientas básicas para leer logs de texto:


$ tail -f /var/log/syslog           # seguir el log en tiempo real
$ tail -n 50 /var/log/auth.log      # últimas 50 líneas
$ grep "error" /var/log/syslog      # filtrar líneas con "error"
$ grep "Failed" /var/log/auth.log   # intentos de login fallidos
$ less /var/log/kern.log            # navegar por el log
          

dmesg — Mensajes del kernel

Muestra el buffer de mensajes del kernel, especialmente útil para diagnosticar problemas de hardware y arranque.


$ dmesg                    # todos los mensajes del kernel
$ dmesg | tail -20         # últimos 20 mensajes
$ dmesg -T                 # con marcas de tiempo legibles
$ dmesg -l err,warn        # solo errores y avisos
$ dmesg | grep -i usb      # buscar mensajes de USB
          

journalctl — Diario de systemd

journalctl consulta el diario binario de systemd, que recoge los logs de todos los servicios gestionados por systemd, el kernel y los mensajes del arranque. Ofrece opciones de filtrado muy potentes.

Uso básico:


$ journalctl                         # todos los logs (del más antiguo al más reciente)
$ journalctl -r                      # en orden inverso (más reciente primero)
$ journalctl -f                      # seguir en tiempo real (como tail -f)
$ journalctl -n 50                   # últimas 50 líneas
          

Filtrar por servicio:


$ journalctl -u nginx                # logs del servicio nginx
$ journalctl -u sshd -f             # seguir logs de SSH en tiempo real
$ journalctl -u nginx --since today  # logs de nginx de hoy
          

Filtrar por tiempo:


$ journalctl --since "2025-01-01"
$ journalctl --since "2025-01-01 10:00" --until "2025-01-01 11:00"
$ journalctl --since "1 hour ago"
$ journalctl --since yesterday
          

Filtrar por prioridad:


$ journalctl -p err          # solo errores (0=emerg, 1=alert, 2=crit, 3=err, 4=warn, 5=notice, 6=info, 7=debug)
$ journalctl -p warning      # avisos y superiores
          

Mensajes del kernel y del arranque:


$ journalctl -k                     # solo mensajes del kernel
$ journalctl -b                     # logs del arranque actual
$ journalctl -b -1                  # logs del arranque anterior
$ journalctl --list-boots           # listar todos los arranques registrados
          

Gestión del espacio del diario:


$ journalctl --disk-usage           # espacio ocupado por el diario
# journalctl --vacuum-size=500M     # reducir el diario a 500 MB
# journalctl --vacuum-time=30d      # eliminar entradas de más de 30 días
          

Un buen administrador de sistemas revisa los logs regularmente para anticiparse a problemas antes de que ocurran. La rotación de logs con logrotate se trata en la Sección 17 (Seguridad Básica).

X11, Wayland y gestores de sesión gráfica

Índice de la sección

Índice del curso