CodeGym /Cursos /Docker SELF /Log e visualização de logs do sistema: comando `journalct...

Log e visualização de logs do sistema: comando `journalctl`

Docker SELF
Nível 3 , Lição 1
Disponível

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:

  1. Diagnosticar problemas. Quando algo dá errado, dá pra encontrar o erro ou aviso nos logs.
  2. Monitorar serviços. Tipo descobrir por que o banco de dados PostgreSQL parou ou quando o servidor web foi atualizado pela última vez.
  3. Coletar análises. Monitorar performance e métricas dos serviços.
  4. 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

  1. Encontrando erros do serviço SSH.

    Você quer descobrir por que o SSH está se recusando a conectar. Use:

    journalctl -u ssh | grep "ERROR"
    
  2. 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"
    
  3. 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

  1. Encontre os logs de erros para o serviço SSH das últimas 24 horas.
  2. Usando journalctl, exiba os logs para o CRON apenas pela manhã. Certifique-se de que o comando funciona com o intervalo de tempo correto.
  3. 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.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION