journalctl na Pratica - Filtrando Logs do Journal do systemd

journalctl na Pratica - Filtrando Logs do Journal do systemd

O Que Voce Pode Resolver com Este Artigo

journalctl e a ferramenta de consulta de logs do systemd. Com as combinacoes de filtros corretas, voce pode extrair linhas especificas de milhoes de entradas de log em segundos. Os padroes abaixo cobrem a maioria das tarefas reais de investigacao de logs.

Combinacoes mais usadas (prontas para copiar e colar)

# erros do nginx na ultima hora
journalctl -u nginx -p err --since "1 hour ago"

# Todos os erros desde o boot atual
journalctl -b -p err

# Acompanhar uma unidade em tempo real
journalctl -u myapp.service -f

Como filtrar por unidade

Use -u para limitar a saida a um servico especifico. Esta e a opcao mais usada na pratica.

# Unidade unica
journalctl -u nginx.service

# Multiplas unidades de uma vez
journalctl -u nginx.service -u php-fpm.service

O sufixo .service pode ser omitido - -u nginx tambem funciona.

Como especificar uma faixa de tempo

Use --since e --until para restringir por tempo. Formatos relativos e absolutos sao aceitos.

# Ultima hora
journalctl --since "1 hour ago"

# Ultimos 30 minutos
journalctl --since "30 min ago"

# De um timestamp especifico ate agora
journalctl --since "2026-05-30 14:00:00"

# Faixa delimitada
journalctl --since "2026-05-30 10:00" --until "2026-05-30 12:00"

-S e abreviacao para --since, -U para --until. As formas longas sao mais legiveis em scripts.

Como mostrar apenas erros

-p filtra por prioridade syslog. Especificar um nivel mostra esse nivel e acima (mais severo).

# err e acima (err, crit, alert, emerg)
journalctl -p err

# warning e acima
journalctl -p warning

# Apenas nivel exato (sintaxe de faixa)
journalctl -p err..err
Numero Palavra-chave Significado
0 emerg Sistema inutilizavel
1 alert Acao imediata necessaria
2 crit Condicao critica
3 err Erro
4 warning Aviso
5 notice Normal mas significativo
6 info Informativo
7 debug Mensagens de depuracao

Como acompanhar logs em tempo real

-f e o equivalente do tail -f. Novas entradas de log aparecem conforme chegam.

# Observar uma unidade apos deploy
journalctl -u myapp.service -f

# Acompanhar apenas erros
journalctl -u myapp.service -p err -f

Pressione Ctrl+C para parar. Use -n para comecar das ultimas N linhas.

# Comecar das ultimas 50 linhas, depois acompanhar
journalctl -u nginx -n 50 -f

Como filtrar por boot

-b mostra logs apenas do boot atual. Use --list-boots para ver boots anteriores antes de restringir a um especifico.

# Boot atual
journalctl -b

# Listar todos os boots anteriores com seus IDs
journalctl --list-boots

# Boot anterior
journalctl -b -1

# Dois boots atras
journalctl -b -2
-3 d7a3f8...  Mon 2026-05-27 09:00 UTC—Mon 2026-05-27 18:30 UTC
-2 a1b2c3...  Tue 2026-05-28 08:45 UTC—Tue 2026-05-28 20:00 UTC
-1 e5f6a7...  Wed 2026-05-29 09:10 UTC—Wed 2026-05-29 23:45 UTC
 0 b8c9d0...  Thu 2026-05-30 08:00 UTC—present

Como filtrar por campo ou processo

journalctl aceita pares chave-valor de campo diretamente como filtros. Consulte man systemd.journal-fields para a lista completa.

# Por PID
journalctl _PID=12345

# Por nome do comando
journalctl _COMM=sshd

# Por identificador syslog
journalctl SYSLOG_IDENTIFIER=nginx

# Logs dos processos de um usuario especifico
journalctl _UID=1000

journalctl -F _COMM lista todos os valores presentes no journal para o campo _COMM. Util quando voce nao tem certeza de quais identificadores existem.

Como combinar com grep

Use a opcao embutida --grep (v233+) ou redirecione para grep.

# grep embutido
journalctl -u nginx --grep "error"

# Padrao regex
journalctl -u nginx --grep "5[0-9][0-9]"

# Redirecionar para grep
journalctl -u nginx | grep -i "connection refused"

# Combinar faixa de tempo e grep
journalctl --since "2 hours ago" | grep "ERROR"

--grep busca apenas no campo MESSAGE. Redirecione para grep quando precisar buscar em todos os campos.

Como mudar o formato de saida

-o controla o formato de saida. Util para analise de logs e integracao com ferramentas.

# JSON (uma entrada de log por linha)
journalctl -u nginx -o json

# JSON formatado
journalctl -u nginx -o json-pretty

# Formato de timestamp curto
journalctl -o short

# Apenas mensagem (sem metadados)
journalctl -o cat

A saida JSON funciona bem com jq para processamento adicional.

# Extrair timestamp e mensagem dos erros
journalctl -u nginx -p err -o json | jq -r '.__REALTIME_TIMESTAMP + " " + .MESSAGE'

Sem --no-pager, journalctl abre em um paginador (como less). Sempre adicione-o em scripts.

journalctl -u nginx --no-pager | wc -l

Resumo: Tabela de Referencia Rapida

Os filtros podem ser combinados livremente. O ponto de partida padrao na pratica e limitar por unidade com -u, depois restringir a erros com -p err.

Objetivo Comando
Filtrar por unidade journalctl -u nginx
Faixa de tempo journalctl --since "1 hour ago"
Apenas erros journalctl -p err
Boot atual journalctl -b
Acompanhar journalctl -f
Filtrar por PID journalctl _PID=1234
Combinar com grep journalctl -u nginx --grep "error"
Saida JSON journalctl -o json
Desativar paginador journalctl --no-pager
# Combinacoes comuns no mundo real
journalctl -u nginx.service -p err --since "today" --no-pager

journalctl -b -p warning -u ssh.service -f

Proximas Leituras