Execute journalctl com uma janela de tempo e -o json, e você obterá um objeto JSON por linha com todos os campos que o diário armazenou:
sudo journalctl --since "2026-10-19 00:00" --until "2026-10-20 00:00" -o json --no-pager > web-03_journal.jsonl
Para um arquivo de texto no estilo syslog, use -o short-iso. Sem sudo, ou pertencendo aos grupos systemd-journal, adm ou wheel, você verá apenas o diário do seu próprio usuário, não o do sistema.
Na maioria das distribuições modernas, o diário é onde tudo é registrado primeiro: serviços, o kernel, sudo, cron, logins. No Debian 12 e posteriores, Fedora e Arch, geralmente é o único local, porque rsyslog não está instalado. O Prime Core tem {N} regras de detecção para logs do sistema Linux, mapeadas para {M} técnicas do MITRE ATT&CK, entre elas persistência cron (T1053.003), serviços systemd maliciosos (T1543.002) e abuso de sudo (T1548.003).
Antes de começar
Permissões. Mesmas regras de qualquer log do sistema: root, ou os grupos acima. Nosso [guia de permissões de logs do Linux] tem os detalhes.
O diário sobrevive a reinicializações? Se /var/log/journal não existir, os logs residem na memória sob /run/log/journal e desaparecem na reinicialização. journalctl –list-boots mostra quantas inicializações você realmente tem. Se listar apenas a atual, o histórico mais antigo se foi.
Quanto há? journalctl –disk-usage informa antes de despejar tudo em um arquivo. Por padrão, um diário persistente pode crescer até 10% de seu sistema de arquivos, limitado a 4 GB. Isso é muito mais do que você gostaria de enviar de uma só vez.
Fusos horários. O diário armazena carimbos de tempo em UTC, mas journalctl imprime o horário local a menos que você adicione –utc. A saída JSON carrega o carimbo de tempo bruto UTC em microssegundos (__REALTIME_TIMESTAMP) de qualquer forma.
Passo 1: Reduza o escopo
Escolha os filtros que correspondem à sua pergunta. Eles se combinam:
| Filtro | O que faz |
|---|---|
| –since / –until | Janela de tempo; aceita “2026-10-19 14:00”, ontem ou “2 horas atrás” |
| -b, -b -1 | Inicialização atual, inicialização anterior |
| -u nginx -u ssh | Uma ou mais unidades systemd |
| -p warning | Essa prioridade e qualquer coisa mais severa |
| -k | Apenas mensagens do kernel |
| _COMM=sudo, _UID=0 | Corresponde exatamente a qualquer campo do diário |
Passo 2: Escolha o formato de saída
- -o json: um objeto JSON por linha, com todos os campos. Esta é a escolha padrão para LogTotal, porque nada se perde.
- -o json –output-fields=MESSAGE,_HOSTNAME,_COMM,_PID,SYSLOG_IDENTIFIER,PRIORITY: o mesmo, reduzido. Alguns campos, como os carimbos de tempo e o ID de inicialização, estão sempre incluídos. Isso reduz drasticamente o tamanho do arquivo.
- -o short-iso: texto no estilo syslog com carimbos de tempo ISO completos. Menor e fácil de ler visualmente. [PROVA: confirme que LogTotal analisa short-iso]
Não use -o export. Apesar do nome, é um formato de serialização para transferência de diários entre máquinas systemd, não algo para análise.
Recomendamos a exportação típica com escopo:
sudo journalctl -b -1 -p info -u ssh -u cron
-o json --no-pager > web-03_prevboot.jsonl
Passo 3 (opcional): Leia arquivos de diário de outra máquina
No trabalho de incidentes, você frequentemente tem uma imagem de disco ou uma pasta /var/log/journal copiada em vez de um sistema ao vivo. journalctl lê diretamente esses:
journalctl -D /mnt/evidence/var/log/journal -o json --no-pager > evidence_journal.jsonl
Use –file para apontar para arquivos .journal individuais. Um diário de um sistema travado ou desligado de maneira não limpa pode imprimir avisos de corrupção. A maioria das entradas geralmente ainda aparece.
Envie, sanitize e revise no LogTotal
- Envie. Abra logtotal.com e insira o arquivo .jsonl. [PROVA: tela de envio, limite de tamanho]
- Sanitize. [PROOF: what gets masked in journal JSON: hostnames, usernames, IPs, machine and boot IDs]. Look it over before you continue.
- Revise. [PROOF: what the results screen shows]
Como isso se parece com dados reais. Exportamos um dia de diário de [PROVA: fonte de exemplo, e.g. uma VM de teste descartável após adicionar um cron job, um novo usuário e um serviço systemd suspeito]. LogTotal sinalizou [PROVA: achados reais]. [PROVA: link para o arquivo de exemplo]
Quando dá errado
| Sintoma | Causa provável | Fix |
|---|---|---|
| Dica sobre não ver mensagens de outros usuários | Não root, e não nos grupos de diário | sudo, ou adicione a conta ao systemd-journal |
| — Sem entradas — | Janela de tempo ou nome da unidade não correspondem; confusão entre local e UTC | Amplie a janela; tente –utc; verifique systemctl list-units |
| Somente a inicialização atual existe | Diário volátil | Logs mais antigos se foram; verifique seu encaminhador de logs ou SIEM |
| A saída parece binária ou corrompida | -o export was used | Use -o json |
| O arquivo tem gigabytes | Sem filtros | Adicione unidades, prioridade, –output-fields |
FAQ
JSON ou texto?
JSON para análise, porque mantém PID, unidade, ID de inicialização e carimbos de tempo exatos como campos separados. Texto quando uma pessoa vai ler, ou quando o tamanho importa.
O diário é o mesmo que /var/log/syslog?
Não. Quando rsyslog está instalado, ele copia mensagens do diário para arquivos de texto, então você pode ter ambos. Quando não está, o diário é tudo o que há.