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