Log e visualização de logs do sistema: comando journalctl
1. Por que trabalhar com logs?
Logs — ou registros, se preferir — são tipo um "detetive" particular que anota cada operação importante no sistema. Eles registram ações do kernel, aplicativos, serviços e outros componentes do sistema. Logs são ferramentas essenciais pra diagnosticar problemas e monitorar o funcionamento do sistema.
Imagina que seu servidor parou de responder do nada. Ao invés de ficar tentando adivinhar como um Sherlock Holmes o que deu errado, você pode só olhar os logs — tá tudo lá. Tipo: "O serviço ssh
caiu", "Disco cheio", "O gato passou correndo no teclado e parou um serviço importante". Os logs contam tudo.
Trabalhar com logs do sistema ajuda a:
- Diagnosticar problemas. Quando algo dá errado, dá pra encontrar o erro ou aviso nos logs.
- Monitorar serviços. Tipo descobrir por que o banco de dados PostgreSQL parou ou quando o servidor web foi atualizado pela última vez.
- Coletar análises. Monitorar performance e métricas dos serviços.
- Melhorar a segurança. Logs podem mostrar tentativas de invasão via SSH ou acessos não autorizados.
2. Introdução ao journalctl
journalctl
é um comando poderoso para visualizar e filtrar logs do sistema no Linux. Ele trabalha junto com o systemd-journald
— o sistema de coleta e armazenamento de logs gerenciado pelo systemd
.
Ações básicas com journalctl
Primeiro, bora ver como usar essa ferramenta. Abre o terminal e digita:
journalctl
Esse comando vai te mostrar todos os logs do sistema, organizados em ordem cronológica. Se você espera algo discreto, se prepara: geralmente os logs ocupam várias telas. Sem pânico, logo a gente vai aprender a filtrá-los.
Agora, pra sair da visualização dos logs, aperta q
(você já percebeu a semelhança entre less
e journalctl
, né?).
Filtrando logs por tempo
Agora é hora de reduzir os logs a um intervalo mais conveniente.
Veja os logs da última hora
journalctl --since "1 hour ago"
Veja os logs de um dia específico
journalctl --since "2023-10-31"
Definindo um intervalo de tempo
Quer ver os eventos das 8h às 9h? Fácil:
journalctl --since "2023-10-31 08:00:00" --until "2023-10-31 09:00:00"
Filtrar por tempo é útil, por exemplo, se você sabe que o problema começou em um momento específico. Analogia: você não lê o livro inteiro pra saber quem é o assassino — só dá uma olhada nas últimas páginas.
Trabalhando com logs de um serviço específico
Ao invés de analisar o sistema inteiro, você pode focar em um único serviço. Por exemplo, quer ver como o servidor web nginx
tá funcionando:
journalctl -u nginx
Se você quer ver registros só da última hora (todo mundo gosta de dados fresquinhos):
journalctl -u nginx --since "1 hour ago"
Lista rápida de exemplos:
-u ssh
: Logs do serviço SSH.-u cron
: Logs das tarefas do CRON.-u mysql
: Logs do banco de dados MySQL.
Lendo logs em tempo real
Quando você tá resolvendo algo na hora, pode ser útil observar os logs em tempo real — tipo assistir um jogo de futebol. Pra isso, use o comando:
journalctl -f
A opção -f
funciona de forma parecida com o tail -f
, mostrando os novos logs conforme eles aparecem.
Por exemplo, tente executar o comando e reiniciar algum serviço ao mesmo tempo:
sudo systemctl restart ssh
Você verá as mudanças — um registro informando o reinício vai aparecer nos logs.
Buscando erros nos logs
Geralmente os logs são enormes, e procurar informações manualmente é quase como procurar uma agulha no palheiro. Então, dá pra usar um filtro por palavras-chave.
Uso simples:
journalctl | grep "ERROR"
Esse exemplo vai mostrar só as linhas que contêm a palavra ERROR
. Você pode trocar ERROR
por qualquer outra coisa, tipo WARNING
, failed
ou panic
.
3. Opções especiais para journalctl
Ver registros apenas após a reinicialização
Quer saber o que aconteceu depois que o sistema foi iniciado pela última vez? Curioso? É só fazer o seguinte:
journalctl -b
Cada reinicialização do sistema é registrada como um "bloco" separado. Se você quiser ver os registros após a penúltima inicialização (sim, às vezes isso é útil):
journalctl -b -1
Filtrando por usuário ou PID
Às vezes você precisa rastrear as ações de um usuário ou processo específico. Por exemplo:
journalctl _UID=1000
Substitua 1000
pelo ID do usuário (você pode descobrir o ID usando o comando id
).
Para filtrar pelo PID (identificador de processo):
journalctl _PID=1234
4. Exemplos práticos
Encontrando erros do serviço SSH.
Você quer descobrir por que o SSH está se recusando a conectar. Use:
journalctl -u ssh | grep "ERROR"
Análise de logs das últimas 24 horas para o CRON.
Digamos que você quer verificar por que seu script diário não foi executado:
journalctl -u cron --since "yesterday"
Monitoramento em tempo real do servidor web.
O servidor web está sobrecarregado? Confira os logs para erros:
journalctl -u nginx -f
Exercício para prática individual
- Encontre os logs de erros para o serviço SSH das últimas 24 horas.
- Usando
journalctl
, exiba os logs para o CRON apenas pela manhã. Certifique-se de que o comando funciona com o intervalo de tempo correto. - Organize o monitoramento dos logs do
systemd
em tempo real e inicie alguns serviços do sistema para ver o status deles nos logs.
Os logs não são apenas sobre encontrar erros ou diagnosticar problemas. Eles são como um agente secreto que ajuda você a monitorar todo o sistema operacional. Assim que você dominar o comando journalctl
, você terá uma ferramenta poderosa para análise, otimização e garantir o funcionamento estável do sistema Linux em qualquer condição.
GO TO FULL VERSION