Veja como ver logs no Linux com journalctl e /var/log, descobrir por que o servidor reiniciou, limitar o journal e usar o logrotate sem encher o disco.
Para que serve
Quando algo dá errado no servidor, a resposta quase sempre está nos logs. No Debian e no Proxmox atuais, o registro principal é o journal do systemd, consultado com journalctl. Aplicações como Nginx, Apache e bancos de dados continuam gravando seus próprios arquivos em /var/log, que são girados pelo logrotate. Este artigo mostra como ver logs no Linux pelos dois caminhos e como impedir que eles encham o disco.
Pré-requisitos
- Acesso root ou usuário no grupo
admousystemd-journal(podem ler os logs semsudo). - Debian 12/13, Ubuntu 24.04 ou Proxmox VE 8/9.
/var/log/syslog? Desde o Debian 12, o rsyslog não é mais instalado por padrão em instalações novas, então arquivos como /var/log/syslog e /var/log/auth.log podem não existir. As mesmas informações estão no journal. Se você depende desses arquivos (para alguma ferramenta antiga, por exemplo), instale com apt install rsyslog.Passo a passo para ver logs no Linux
1. Consultas essenciais com journalctl
| Objetivo | Comando |
|---|---|
| Últimas 100 linhas, sem paginação | journalctl -n 100 --no-pager |
| Acompanhar em tempo real | journalctl -f |
| Somente um serviço | journalctl -u nginx |
| Desde o boot atual / o anterior | journalctl -b / journalctl -b -1 |
| Listar os boots registrados | journalctl --list-boots |
| Somente erros e piores | journalctl -p err -b |
| Intervalo de tempo | journalctl --since "2026-10-01 08:00" --until "2026-10-01 09:00" |
| Mensagens do kernel (disco, rede, OOM) | journalctl -k |
| Logins SSH | journalctl -u ssh --since today |
| Uso de sudo | journalctl _COMM=sudo |
As opções podem ser combinadas, por exemplo journalctl -u pveproxy -p warning --since "1 hour ago". Para descobrir por que o servidor reiniciou, olhe o fim do boot anterior: journalctl -b -1 -n 50. Se o log termina de repente, sem mensagens de desligamento, a parada foi abrupta (energia, travamento ou reset pelo console).
2. Garantir que o journal sobreviva ao reinício
Em instalações atuais o journal já é gravado em disco em /var/log/journal. Em sistemas antigos atualizados, ele pode estar apenas na memória e se perder a cada reinício. Para conferir e ativar:
journalctl --header | grep -i 'file path'
mkdir -p /var/log/journal
systemd-tmpfiles --create --prefix /var/log/journal
systemctl restart systemd-journald
3. Limitar o tamanho do journal
Por padrão, o journal pode usar até 10% do sistema de arquivos (limitado a 4 GB). Para definir seu próprio limite e tempo de retenção, crie um arquivo complementar:
mkdir -p /etc/systemd/journald.conf.d
cat > /etc/systemd/journald.conf.d/retencao.conf <<'EOF'
[Journal]
Storage=persistent
SystemMaxUse=2G
MaxRetentionSec=3month
EOF
systemctl restart systemd-journald
Para liberar espaço imediatamente:
journalctl --disk-usage
journalctl --vacuum-size=1G
journalctl --vacuum-time=30d
4. Os arquivos em /var/log
| Arquivo ou pasta | Conteúdo |
|---|---|
/var/log/apt/ | Histórico de instalações e atualizações de pacotes |
/var/log/nginx/, /var/log/apache2/ | Acessos e erros do servidor web |
/var/log/mysql/, /var/log/postgresql/ | Logs do banco de dados |
/var/log/pve/tasks/ | Proxmox: tarefas (backups, migrações, criação de VMs) |
/var/log/fail2ban.log | Bloqueios do fail2ban, se instalado |
Ferramentas úteis: tail -f arquivo para acompanhar, less +G arquivo para abrir no fim, zgrep termo arquivo.gz para buscar em logs antigos compactados.
5. Configurar o logrotate para a sua aplicação
O logrotate roda uma vez por dia (pelo logrotate.timer) e gira os arquivos conforme as regras em /etc/logrotate.d/. Se a sua aplicação grava em /var/log/minhaapp/, crie /etc/logrotate.d/minhaapp:
/var/log/minhaapp/*.log {
daily
rotate 14
maxsize 500M
missingok
notifempty
compress
delaycompress
copytruncate
}
rotate 14: mantém 14 arquivos antigos.maxsize 500M: gira antes do prazo se o arquivo passar desse tamanho.copytruncate: copia e esvazia o arquivo original, para aplicações que não reabrem o log. Se a aplicação aceita um sinal para reabrir os logs, prefiracreatecom um blocopostrotatechamando, por exemplo,systemctl reload minhaapp.
Teste sem alterar nada e, depois, force uma rotação:
logrotate -d /etc/logrotate.d/minhaapp
logrotate -f /etc/logrotate.d/minhaapp
Como saber se funcionou
journalctl --list-bootsmostra boots anteriores (o journal é persistente).journalctl --disk-usagefica abaixo do limite configurado.- Em
/var/log/minhaapp/aparecem arquivos.1e.gzapós a rotação;systemctl list-timers logrotate.timermostra a próxima execução.
Problemas comuns
No journal files were foundcom-b -1: o journal não era persistente antes; ative conforme o passo 2.- logrotate reclama de permissões (
insecure permissions): adicione a linhasu usuario grupona regra, com o dono da pasta de logs. - Log girou, mas a aplicação continua escrevendo no arquivo antigo: faltou
copytruncateou opostrotatepara a aplicação reabrir o arquivo. - Horários dos logs estranhos: confira o fuso horário e a sincronização NTP do servidor.
Se os logs revelarem tentativas de acesso suspeitas, veja também o artigo «Detecção de intrusão no servidor Linux: como usar Wazuh, AIDE e auditd» e «Como proteger o SSH: chaves ed25519, sem senha, sem root e com fail2ban ou CrowdSec».
Perguntas frequentes
Onde ficam os logs no Linux?
O journal do systemd fica em /var/log/journal e é lido com journalctl. Os logs próprios das aplicações (Nginx, Apache, bancos de dados) ficam em /var/log.
Como ver os logs de um serviço específico?
Use journalctl -u nome-do-servico, por exemplo journalctl -u nginx --since today. Para acompanhar em tempo real, acrescente -f.
Como descobrir por que o servidor reiniciou?
Veja o fim do boot anterior com journalctl -b -1 -n 50. Se o log termina sem mensagens de desligamento, a parada foi abrupta.
Posso apagar os logs do journal?
Sim, de forma controlada: journalctl --vacuum-size=1G ou --vacuum-time=30d removem os mais antigos. Não apague os arquivos à mão.
Leitura complementar
Precisa de ajuda?
Se precisar de ajuda para interpretar um erro, abra um ticket anexando o trecho relevante do log (com data e hora) e descrevendo o que estava acontecendo no momento.
