Registro y análisis de logs (RSA-13)
Este apartado te enseña cómo visualizar registros, filtrarlos por fecha, servicio o palabra clave, usar herramientas como journalctl
, logrotate
, rsyslog
, 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/
Archivo | Contenido principal |
---|---|
/var/log/syslog | Mensajes del sistema (Debian/Ubuntu) |
/var/log/messages | Eventos generales (Red Hat) |
/var/log/auth.log | Inicios de sesión y sudo |
/var/log/kern.log | Eventos del kernel |
/var/log/dpkg.log | Instalaciones de paquetes |
/var/log/Xorg.0.log | Errores de la interfaz gráfica |
/var/log/faillog | Intentos fallidos de autenticación |
/var/log/wtmp , btmp | Conexiones 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 (today
,now
,2024-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 registrosatopsar
: 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 t
, c
, m
, d
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.
Aspecto | PCP (Performance Co-Pilot) | atop |
---|---|---|
Tipos de métricas | CPU, RAM, disco, red, procesos, systemd, contenedores, etc. | CPU, RAM, disco, red, procesos, uso por proceso |
Visualización gráfica | pmchart , integración con Grafana | Limitada. Texto interactivo (atop ), exportable a CSV |
Exportación de informes | pmlogsummary , pmlogextract , compatible con dashboards | atopsar , informes por día en CSV/terminal |
Historial largo (logs) | Guarda logs continuos (pmlogger ) por días o semanas | Archivos diarios rotativos /var/log/atop/atop_YYYYMMDD |
Interactividad | Limitada (selección en pmchart ) | Alta: navegación por recursos, filtrado por tipo/proceso |
Facilidad de instalación | Múltiples paquetes (pcp , pmchart , pmlogger ) | Único paquete (atop ) fácil de activar como servicio |
Monitorización en tiempo real | Solo con herramientas complementarias | Interactivo con atop -r o en directo |
Integración externa | Grafana, Prometheus, otras fuentes de datos | Básica (CSV o manual, sin plugins oficiales) |
Recomendado para… | Auditoría histórica detallada, entornos grandes o distribuidos | Investigació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.