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,grepelesspara 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)
- Execute
ls /var/log/para identificar o arquivo alvo - Use
tail -n 100para começar do final;tail -fpara monitoramento ao vivo - Refine com
grepusando palavras-chave de erro - Use
lesspara 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 finalg: Ir para o início/keyword: Buscar para frenten: Próxima correspondênciaq: 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.
Nunca apague arquivos de log para liberar espaço em disco
Quando o disco enche, rm /var/log/syslog parece tentador. É perigoso por dois motivos.
- O processo que escreve ainda mantém o arquivo aberto, então apagar não libera espaço algum.
- Um log apagado não pode ser recuperado, e a evidencia do incidente se perde.
Para recuperar espaço, descubra primeiro o que o ocupa. Os dois comandos abaixo apenas exibem; nenhum apaga nada.
du -sh /var/log/* | sort -hr | head sudo lsof +L1
A correção duradoura é a configuração do logrotate. Se precisar limpar um arquivo na mão, use truncate -s 0 <file> (que esvazia o conteúdo) em vez de rm, e confira o nome do arquivo alvo antes de executar.
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.logpara 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