Como Ler Arquivos de Log - Introdução a Análise de Logs do Sistema

Como Ler Arquivos de Log - Introdução a Análise de Logs do Sistema

O que você vai conseguir fazer

  • Escolher o arquivo certo em /var/log para o sintoma observado
  • Usar tail, less e grep conforme a tarefa de cada um
  • Ler a origem e o horário de um evento em uma linha do syslog

Pré-requisitos (leia estes primeiro)

O Que Você Vai Aprender

  • Você entende como o diretório /var/log/ é organizado.
  • Você usa tail -f, grep e less para ler logs com eficiência.
  • Você conhece os papéis dos principais arquivos de log: syslog, auth.log, kern.log.
  • Você interpreta o formato syslog (timestamp, nome do processo, PID, mensagem).
  • Você aplica padrões práticos de investigação de logs em troubleshooting real.

Resumo Rápido (Fluxo de Investigação de Logs)

  1. Execute ls /var/log/ para identificar o arquivo alvo
  2. Use tail -n 100 para começar do final; tail -f para monitoramento ao vivo
  3. Refine com grep usando palavras-chave de erro
  4. Use less para rolar pelo contexto ao redor dos achados

Todos os comandos deste artigo apenas leem

ls / tail / less / cat / grep exibem o conteúdo dos arquivos e nunca o reescrevem. São seguros para executar em um servidor de produção. Apagar ou truncar um arquivo de log é outra história. Esses riscos estão sinalizados ao longo do texto.

O Que É o /var/log?

Conclusão: Os logs do sistema Linux ficam em /var/log, então a investigação começa ali.

Quase todos os logs do sistema Linux são armazenados em /var/log/. Este diretório contém registros escritos pelo kernel, subsistema de autenticação e aplicações -- sendo o ponto de partida para qualquer sessão de troubleshooting.

Antes de tudo, os termos.

Termo Significado em uma linha Outros nomes que você verá
log Registro do que um programa fez e quando Também "arquivo de log" ou "histórico"
daemon Programa que roda em segundo plano, sem interface Também "processo residente" ou "serviço"
syslog O mecanismo que centraliza logs e também o formato das linhas Diferente do arquivo /var/log/syslog
rsyslog O daemon que cumpre o papel do syslog no Ubuntu atual syslog-ng é uma implementação alternativa
PID O número que o SO atribui a um processo em execução Também "ID do processo"
rotação de log Divisão e compressão automáticas para o log não crescer sem fim Rotacionado como .1, gerações antigas .2.gz
ls /var/log/
auth.log   dpkg.log  kern.log  syslog    ubuntu-advantage.log
boot.log   faillog   lastlog   ufw.log   wtmp

Os escritores de log se dividem em duas categorias: o daemon syslog (rsyslog ou syslog-ng) e aplicações que escrevem seus próprios arquivos de log diretamente.

Quais São os Arquivos de Log Comuns e Seus Papéis?

Conclusão: Os arquivos são divididos por finalidade; decida primeiro qual o sintoma indica.

Os arquivos em /var/log/ são organizados por finalidade. Saber qual arquivo cobre qual área permite ir direto ao log relevante em vez de buscar às cegas.

Arquivo Conteúdo Caso de Uso
syslog Mensagens gerais do sistema Eventos inexplicados do sistema
auth.log Auth, sudo, SSH Falhas de login, escalação de privilégio
kern.log Mensagens do kernel Erros de hardware, OOM kills
dpkg.log Gerenciamento de pacotes Histórico de instalação/atualização
ufw.log Firewall UFW Conexões bloqueadas
boot.log Mensagens de inicialização Diagnóstico de falha de boot

Arquivos terminados em .1 ou .gz são dados antigos separados pela rotação. Investigar um evento de dias atrás exige ler esses também.

ls /var/log/syslog*
/var/log/syslog  /var/log/syslog.1  /var/log/syslog.2.gz

Arquivos comprimidos podem ser lidos com zgrep / zless sem descompactar.

zgrep -i "error" /var/log/syslog.2.gz

No Ubuntu 20.04+, syslog pode não existir em algumas configurações. Use journalctl para visualizar logs do sistema nesse caso.

Quais São os Comandos Básicos para Ler Logs?

Conclusão: Use tail para o final, less para o contexto e cat só em arquivos curtos.

Três comandos cobrem a maioria dos cenários de leitura de logs: tail, less e cat. Escolha com base em se você precisa do final do arquivo, rolagem interativa ou dump completo.

tail -- Ler do final

# Mostrar ultimas 50 linhas
tail -n 50 /var/log/syslog

# Acompanhar em tempo real (Ctrl+C para parar)
tail -f /var/log/syslog

-f (follow) mantém a saída aberta e transmite novas linhas conforme são adicionadas -- essencial ao monitorar um incidente ao vivo. Com -f o prompt nunca volta; pressione Ctrl+C para sair. Você está apenas lendo, então sair não afeta o log nem o serviço.

less -- Rolar interativamente

less /var/log/auth.log

Atalhos dentro do less:

  • G: Ir para o final
  • g: Ir para o início
  • /keyword: Buscar para frente
  • n: Próxima correspondência
  • q: Sair

cat -- Despejar o arquivo inteiro (apenas para arquivos curtos)

cat /var/log/boot.log

Para logs grandes, cat produz um muro de texto. Prefira less ou tail a menos que o arquivo seja curto.

Como Filtrar Logs com grep

Conclusão: Reduza logs longos com grep e acrescente -i e -A / -B para manter o contexto.

grep transforma um muro de texto de log em resultados direcionados. Funciona melhor encadeado com tail ou como filtro direto em um arquivo de log.

Extrair linhas de erro

grep -i "error" /var/log/syslog

-i torna a correspondência insensível a maiúsculas/minúsculas.

Corresponder múltiplas palavras-chave

grep -E "error|warn|failed" /var/log/syslog

O -E seleciona expressões regulares estendidas, que é o que habilita o | (ou).

grep em tempo real

tail -f /var/log/syslog | grep "error"

Filtrar por data

grep "May 31" /var/log/auth.log

Mostrar contexto ao redor

grep -A 5 -B 5 "Failed password" /var/log/auth.log

-A 5 mostra 5 linhas após cada correspondência; -B 5 mostra 5 linhas antes.

Alguns arquivos de log requerem sudo para leitura. Se você vir Permission denied, prefixe o comando com sudo: sudo less /var/log/kern.log.

Como Interpretar o Formato Syslog

Conclusão: O layout do syslog é fixo: leia hora, host, processo e PID nessa ordem.

Entradas no formato syslog seguem uma estrutura consistente. Reconhecer cada campo acelera significativamente a análise.

May 31 10:23:45 myserver sshd[12345]: Failed password for root from 192.168.1.100 port 22 ssh2
Campo Valor Significado
Timestamp May 31 10:23:45 Quando o evento foi registrado
Hostname myserver Host que gerou a mensagem
Nome do processo sshd Processo que escreveu a entrada de log
PID [12345] ID do processo (útil para correlação)
Mensagem Failed password... O conteúdo real do log

Com o PID em mãos, você acompanha apenas as linhas que aquele processo escreveu.

grep "sshd\[12345\]" /var/log/auth.log

Os timestamps dos logs refletem o horário local do servidor. Se o servidor estiver configurado para UTC, os horários exibidos podem diferir do seu fuso horário local. Confira a configuração atual com timedatectl (outro comando somente de exibição).

Padrões Comuns de Investigação de Logs

Conclusão: Cada sintoma aponta para um arquivo e um termo de busca conhecidos; memorize os pares.

Estes padrões cobrem os cenários de troubleshooting mais frequentes encontrados em ambientes de produção.

Sintoma Arquivo a ler Termo a buscar
Não consegue entrar por SSH auth.log Failed password
Precisa saber quem executou o que auth.log COMMAND
Servidor instável ou travando kern.log error / oops / panic
Quebrou logo após uma atualização dpkg.log install
Falha na inicialização boot.log (leia tudo com less)

Verificar falhas de login SSH

sudo grep "Failed password" /var/log/auth.log | tail -20

Revisar histórico de comandos sudo

sudo grep "sudo" /var/log/auth.log | grep "COMMAND"

Verificar erros do kernel

sudo grep -iE "error|oops|panic" /var/log/kern.log | tail -30

Listar histórico de instalação de pacotes

grep " install " /var/log/dpkg.log

Revisar erros de inicialização

sudo less /var/log/boot.log

journalctl vs. Arquivos de Log -- Quando Usar Cada Um?

Conclusão: Leia logs sob o systemd com journalctl e logs em arquivo direto de /var/log.

Desde o Ubuntu 16.04, o systemd introduziu o journalctl como o visualizador de logs principal para serviços. Os arquivos de /var/log/ e o journal do systemd coexistem; saber qual usar evita perda de tempo.

Cenário Ferramenta a Usar
Logs de serviços systemd journalctl -u nginx
Mensagens do kernel journalctl -k
Mensagens de inicialização journalctl -b
App legado escrevendo em arquivo próprio tail -f /var/log/app.log
Conteúdo de /var/log/auth.log Ambos funcionam
# Acompanhar todos os logs em tempo real
journalctl -f

# Acompanhar um servico especifico
journalctl -u nginx -f

journalctl lê do armazenamento binário do journal do systemd, não dos arquivos de texto em /var/log/. Dependendo da configuração do rsyslog, ambos podem receber os mesmos eventos -- ou podem conter subconjuntos diferentes.

Checklist de Investigação

Conclusão: Com horário, origem e reprodutibilidade definidos, a investigação pode avançar.

  • [ ] Você identificou quando o evento ocorreu e leu os logs daquele período
  • [ ] O arquivo lido corresponde ao sintoma (auth.log para autenticação, e assim por diante)
  • [ ] Você verificou os arquivos rotacionados (.1 / .gz) quando a janela exigiu
  • [ ] Você confirmou o fuso horário por trás dos timestamps
  • [ ] Você encerrou a investigação sem apagar nem truncar nenhum log

Próximas Leituras