Registro y análisis de logs (RSA-13)

La ruta del SysAdmin 15 de jul. de 2025

Este apartado te enseña cómo visualizar registros, filtrarlos por fecha, servicio o palabra clave, usar herramientas como journalctllogrotatersyslog, y cómo automatizar auditorías sencillas.


¿Dónde se guardan los logs?

En sistemas Linux existen dos grandes fuentes de logs:

  • journalctl (con systemd): /run/log/journal/ o /var/log/journal/
  • logs tradicionales: archivos en /var/log/

Comando: journalctl

Usado en sistemas con systemd para consultar el journal (registro unificado).

Sintaxis Básica

$ journalctl
$ journalctl -xe                  # Últimos errores detallados

Sintaxis Avanzada

$ journalctl -u nginx             # Logs del servicio nginx
$ journalctl --since "1 hour ago"
$ journalctl -p 3                 # Solo prioridad: error
$ journalctl -b                   # Desde último arranque

Logs en /var/log/

ArchivoContenido principal
/var/log/syslogMensajes del sistema (Debian/Ubuntu)
/var/log/messagesEventos generales (Red Hat)
/var/log/auth.logInicios de sesión y sudo
/var/log/kern.logEventos del kernel
/var/log/dpkg.logInstalaciones de paquetes
/var/log/Xorg.0.logErrores de la interfaz gráfica
/var/log/faillogIntentos fallidos de autenticación
/var/log/wtmp, btmpConexiones e intentos fallidos

Comandos para filtrar logs

$ grep "error" /var/log/syslog
$ tail -n 50 /var/log/auth.log
$ less /var/log/messages
$ awk '/ssh/' /var/log/auth.log

Rotación de logs con logrotate

Evita que los archivos de log crezcan indefinidamente.

Configuración:

  • Directorios: /etc/logrotate.conf y /etc/logrotate.d/

Parámetros clave:

weekly           # Rotación semanal
rotate 4         # Guarda 4 versiones antiguas
compress         # Comprime con gzip
notifempty       # No rota si está vacío

Forzar rotación manual:

# logrotate -f /etc/logrotate.conf

rsyslog (sistema tradicional de logging)

Permite redirigir, filtrar y enviar logs local o remotamente.

Configuración básica:

module(load="imuxsock")       # Recibe mensajes locales
module(load="imklog")         # Mensajes del kernel

→ Archivos de configuración: /etc/rsyslog.conf/etc/rsyslog.d/*.conf


Auditoría de actividad

Ver quién usó sudo

$ grep "sudo" /var/log/auth.log

Ver últimos accesos

$ last
$ lastlog

Crear logs personalizados desde scripts

#!/bin/bash
echo "$(date): Inicio de respaldo" >> /var/log/milog.log
rsync -a /datos /backup
echo "$(date): Fin de respaldo" >> /var/log/milog.log

Auditoría avanzada con auditd, ausearch y auditctl

El paquete auditd es el subsistema de auditoría de Linux. Permite registrar operaciones sensibles como cambios de archivos, ejecuciones, accesos fallidos, etc.

auditctl: definir reglas de auditoría

Establece qué eventos deben registrarse.

Ejemplo: auditar apertura de un archivo específico:

# auditctl -w /etc/passwd -p wa -k passwd_watch
  • -w: archivo a monitorear
  • -p: permisos (w=write, a=attr change, r=read, x=execute)
  • -k: etiqueta para búsqueda posterior

Otras reglas útiles:

# auditctl -a always,exit -F arch=b64 -S execve -k ejecuciones
# auditctl -a always,exit -F uid=1000 -F auid>=1000 -k usuario_luisgulo

ausearch: buscar en los logs de auditoría

Permite filtrar eventos registrados por auditd.

Ejemplos:

# ausearch -k passwd_watch
# ausearch -ts today -k ejecuciones
# ausearch -i --user luisgulo
  • -k: filtra por etiqueta
  • -ts: fecha de inicio (todaynow2024-10-25)
  • -i: salida legible

Generar reportes automáticos

Usando aureport

Obtiene resúmenes de auditoría:

# aureport --summary
# aureport --login
# aureport --file --start today --end now

Programar con cron

Ejemplo de script /usr/local/bin/reporte_audit.sh:

#!/bin/bash
FECHA=$(date +%Y-%m-%d)
aureport --summary > /var/log/audit/resumen_$FECHA.log

Agregar a cron diario:

$ crontab -e
0 1 * * * /usr/local/bin/reporte_audit.sh

Equivalentes modernos a KSar para analizar los logs de SAR

KSar era una herramienta gráfica que usé bastante para visualizar los logs de sysstat/sar.

Ya no se mantiene, y hacerla funcionar es algo complicado por la versión de Java que usa y el formato de datos que permite leer.

Hay otras alternativas más actuales:

1. Grafana + Prometheus + node_exporter

  • node_exporter recolecta métricas similares a SAR (CPU, RAM, disco)
  • Prometheus almacena datos con historial
  • Grafana ofrece dashboards para detectar sobrecarga y cuellos de botella

→ Puedes replicar gráficamente lo que hacía KSar, con paneles de carga, I/O y red.


2. Performance Co-Pilot (PCP) + pmchart

  • Herramienta avanzada para recolectar y graficar métricas en tiempo real
  • pmchart: visor gráfico interactivo (similar a KSar)
  • Compatible con SAR y puede importar sus datos
# apt install pcp pcp-gui
$ pmchart &

3. atop + atopsar

  • atop: herramienta de monitorización en tiempo real y en registros
  • atopsar: genera informes históricos, similar a KSar
$ atopsar -r /var/log/atop/atop_2025xxxx -A

4. Glances con exportación a InfluxDB

  • Exporta métricas a bases de datos
  • Grafana puede visualizar esos datos

Ejemplo completo: Monitorización con Performance Co-Pilot (PCP)

1. Instalar PCP y visor gráfico

# apt install pcp pcp-gui

En Arch:

# pacman -S pcp

2. Activar recolección continua

# systemctl enable pmcd
# systemctl start pmcd
# systemctl enable pmlogger
# systemctl start pmlogger

Esto inicia la recolección en /var/log/pcp/pmlogger/.


3. Esperar varios días

Durante este tiempo se guardan datos como CPU, RAM, disco, red…


4. Visualizar con pmchart (modo gráfico)

$ pmchart &

→ Selecciona métricas como kernel.all.cpu.user o mem.physmem.

Puedes elegir el rango de fechas desde los menús.


5. Consultar logs desde consola

$ pmlogsummary /var/log/pcp/pmlogger/<host>/YYYYMMDD HH:MM HH:MM

También puedes exportar métricas específicas:

$ pmlogextract -s "2 day ago" -e "now" /var/log/pcp/pmlogger/<host>/ 

Ejemplo completo: Monitorización con atop

1. Instalar atop

# apt install atop

En Fedora:

# dnf install atop

2. Activar servicio automático

# systemctl enable atop
# systemctl start atop

Esto genera archivos como:

/var/log/atop/atop_YYYYMMDD

→ Guarda 10 minutos de actividad por defecto cada hora.


3. Visualizar registros anteriores

$ atop -r /var/log/atop/atop_20250714

→ Usa flechas y tcmd para ver CPU, memoria, disco…


4. Exportar informe CSV

$ atopsar -r /var/log/atop/atop_20250714 -A > informe.csv

→ Puedes abrirlo con hojas de cálculo o importar a dashboards.


5. Ver resumen filtrado por recurso

$ atopsar -r /var/log/atop/atop_20250714 -c        # CPU
$ atopsar -r /var/log/atop/atop_20250714 -m        # Memoria
$ atopsar -r /var/log/atop/atop_20250714 -d        # Disco

Tabla Comparativa: PCP vs atop

Una tabla comparativa entre Performance Co-Pilot (PCP) y atop, organizada por tipo de métricas, visualización y nivel de detalle.

Para ayudarte a elegir la herramienta adecuada según tus necesidades de monitorización, análisis histórico o investigación de cuellos de botella.

AspectoPCP (Performance Co-Pilot)atop
Tipos de métricasCPU, RAM, disco, red, procesos, systemd, contenedores, etc.CPU, RAM, disco, red, procesos, uso por proceso
Visualización gráficapmchart, integración con GrafanaLimitada. Texto interactivo (atop), exportable a CSV
Exportación de informespmlogsummary, pmlogextract, compatible con dashboardsatopsar, informes por día en CSV/terminal
Historial largo (logs)Guarda logs continuos (pmlogger) por días o semanasArchivos diarios rotativos /var/log/atop/atop_YYYYMMDD
InteractividadLimitada (selección en pmchart)Alta: navegación por recursos, filtrado por tipo/proceso
Facilidad de instalaciónMúltiples paquetes (pcp, pmchart, pmlogger)Único paquete (atop) fácil de activar como servicio
Monitorización en tiempo realSolo con herramientas complementariasInteractivo con atop -r o en directo
Integración externaGrafana, Prometheus, otras fuentes de datosBásica (CSV o manual, sin plugins oficiales)
Recomendado para…Auditoría histórica detallada, entornos grandes o distribuidosInvestigación directa de cuellos de botella por proceso

Resumen rápido:

  • Usa PCP si buscas recolectar y visualizar datos en entornos de larga duración, integrarlo con dashboards modernos o crear reportes centralizados.
  • Escoge atop si necesitas investigar problemas inmediatos, analizar procesos específicos y trabajar en terminal con alta interactividad.

Etiquetas

Luis GuLo

🐧 SysAdmin GNU/Linux - 🐳 Docker - 🖥️ Bash Scripting - 🐪 Perl - 🐬 MySQL - 👥 Formador de TI - 👥 Formador de SysAdmin's - 💢 Ansible - ☁️ Cloud Computing - ❤️ Debian GNU/Linux