Ejecute journalctl con una ventana de tiempo y -o json, y obtendrá un objeto JSON por línea con cada campo que el diario almacenó:
sudo journalctl --since "2026-10-19 00:00" --until "2026-10-20 00:00" -o json --no-pager > web-03_journal.jsonl
Para un archivo de texto estilo syslog, use -o short-iso. Sin sudo, o pertenencia a systemd-journal, adm o wheel, solo verá su propio diario de usuario, no el del sistema.
En la mayoría de las distribuciones modernas, el diario es donde todo aterriza primero: servicios, el kernel, sudo, cron, inicios de sesión. En Debian 12 y posteriores, Fedora y Arch, es a menudo el único lugar, porque rsyslog no está instalado. Prime Core tiene {N} reglas de detección para registros del sistema Linux, asignadas a {M} técnicas de MITRE ATT&CK, entre ellas persistencia de cron (T1053.003), servicios systemd maliciosos (T1543.002) y abuso de sudo (T1548.003).
Antes de comenzar
Permisos. Las mismas reglas que para cualquier registro del sistema: root o los grupos mencionados anteriormente. Nuestra [guía de permisos de logs de Linux] tiene los detalles.
¿El diario sobrevive a los reinicios? Si /var/log/journal no existe, los registros viven en memoria bajo /run/log/journal y desaparecen al reiniciar. journalctl –list-boots muestra cuántos inicios tiene en realidad. Si lista solo el actual, la historia anterior ya no está.
¿Cuánto hay? journalctl –disk-usage le informa antes de que lo descargue todo a un archivo. De forma predeterminada, un diario persistente puede crecer hasta el 10% de su sistema de archivos, con un límite de 4 GB. Eso es mucho más de lo que desea subir de una sola pieza.
Zonas horarias. El diario almacena marcas de tiempo en UTC, pero journalctl imprime la hora local a menos que agregue –utc. La salida JSON lleva la marca de tiempo UTC en microsegundos (__REALTIME_TIMESTAMP) de cualquier manera.
Paso 1: Reduzca el ámbito
Elija los filtros que coinciden con su pregunta. Se combinan:
| Filtro | Lo que hace |
|---|---|
| –since / –until | Ventana de tiempo; acepta «2026-10-19 14:00», ayer o «hace 2 horas» |
| -b, -b -1 | Inicio actual, inicio anterior |
| -u nginx -u ssh | Una o más unidades systemd |
| -p warning | Esa prioridad y cualquier cosa más grave |
| -k | Solo mensajes del kernel |
| _COMM=sudo, _UID=0 | Coincidir exactamente cualquier campo del diario |
Paso 2: Elija el formato de salida
- -o json: un objeto JSON por línea, con cada campo. Esta es la opción predeterminada para LogTotal, porque no se pierde nada.
- -o json –output-fields=MESSAGE,_HOSTNAME,_COMM,_PID,SYSLOG_IDENTIFIER,PRIORITY: lo mismo, reducido. Algunos campos, como las marcas de tiempo y el ID de inicio, siempre están incluidos. Esto reduce el tamaño del archivo drásticamente.
- -o short-iso: texto estilo syslog con marcas de tiempo ISO completas. Más pequeño y fácil de leer a simple vista. [PROOF: confirmar que LogTotal parsea short-iso]
No use -o export. A pesar del nombre, es un formato de serialización para enviar diarios entre máquinas systemd, no algo para analizar.
Le recomendamos una exportación típica con ámbito:
sudo journalctl -b -1 -p info -u ssh -u cron
-o json --no-pager > web-03_prevboot.jsonl
Paso 3 (opcional): Leer archivos de diario de otra máquina
En trabajos de incidente, a menudo tiene una imagen de disco o una carpeta copiada /var/log/journal en lugar de un sistema en vivo. journalctl los lee directamente:
journalctl -D /mnt/evidence/var/log/journal -o json --no-pager > evidence_journal.jsonl
Use –file para señalar archivos .journal individuales. Un diario de un sistema bloqueado o apagado indebidamente puede imprimir advertencias de corrupción. La mayoría de las entradas suelen salir de todos modos.
Subir, sanitizar y revisar en LogTotal
- Subir. Abrir logtotal.com y cargue el archivo .jsonl. [PROOF: pantalla de carga, límite de tamaño]
- Sanitizar. [PROOF: what gets masked in journal JSON: hostnames, usernames, IPs, machine and boot IDs]. Look it over before you continue.
- Revisar. [PROOF: what the results screen shows]
Cómo se ve esto en datos reales. Exportamos un día de diario desde [PROOF: fuente de ejemplo, por ejemplo, una máquina virtual de prueba desechable después de agregar un trabajo cron, un nuevo usuario y un servicio systemd sospechoso]. LogTotal marcó [PROOF: hallazgos reales]. [PROOF: enlace al archivo de ejemplo]
Cuando algo sale mal
| Síntoma | Causa probable | Fix |
|---|---|---|
| Sugerencia sobre no ver mensajes de otros usuarios | No es root y no está en los grupos del diario | sudo, o agregue la cuenta a systemd-journal |
| — No hay entradas — | La ventana de tiempo o el nombre de la unidad no coincide; confusión local vs. UTC | Amplíe la ventana; pruebe con –utc; verifique systemctl list-units |
| Solo existe el inicio actual | Diario volátil | Los registros antiguos se han ido; verifique su reenviador de registros o SIEM |
| La salida parece binaria o distorsionada | -o export fue utilizado | Use -o json |
| El archivo tiene gigabytes | Sin filtros | Agregue unidades, prioridad, –output-fields |
FAQ
¿JSON o texto?
JSON para análisis, porque mantiene PID, unidad, ID de arranque y marcas de tiempo exactas como campos separados. Texto cuando una persona lo leerá o cuando el tamaño importa.
¿Es el diario lo mismo que /var/log/syslog?
No. Cuando rsyslog está instalado, copia mensajes del diario a archivos de texto, por lo que puede tener ambos. Cuando no lo está, el diario es todo lo que hay.