Tempo de leitura: 3 minutos
Um dos motivos mais comuns de VPS parada por falta de espaço é um arquivo de log que cresceu sem parar. O logrotate existe justamente para isso: ele gira os logs (renomeia, compacta e apaga os antigos) em intervalos que você define, sem precisar de intervenção manual.
Mesmo com bons hábitos de log, vale começar com uma VPS de disco generoso e rápido. Se você ainda não tem onde rodar isso, a Cloud VPS Brasil já entrega o servidor pronto.
Como o logrotate funciona
Todo dia, o sistema roda o logrotate (pelo cron ou por um timer do systemd). Ele lê as regras e, para cada log que atingiu o critério (por exemplo, passou um dia ou chegou a 100 MB), faz o rodízio:
- O arquivo atual vira
arquivo.log.1. - Os anteriores sobem de número (
.1vira.2, e assim por diante). - Os mais velhos são compactados ou apagados, conforme a regra.
Onde ficam as regras
/etc/logrotate.conf: configuração geral./etc/logrotate.d/: um arquivo por aplicação (Nginx, Apache, MariaDB e outros já trazem o seu).
Como criar uma regra para a sua aplicação
Suponha que a sua aplicação grava em /var/log/meuapp/app.log. Crie /etc/logrotate.d/meuapp:
/var/log/meuapp/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
copytruncate
}
O que cada diretiva faz:
- daily: gira todo dia (também existem
weeklyemonthly). - rotate 14: guarda 14 arquivos antigos e apaga o resto.
- compress: compacta os arquivos antigos com gzip.
- delaycompress: deixa o arquivo mais recente sem compactar, útil se algum programa ainda escreve nele.
- missingok: não dá erro se o arquivo não existir.
- notifempty: não gira log vazio.
- copytruncate: copia o log e zera o original, sem precisar reiniciar a aplicação.
Girar por tamanho
Se o log cresce rápido, use size em vez de tempo:
/var/log/meuapp/*.log {
size 100M
rotate 7
compress
missingok
notifempty
copytruncate
}
Quando a aplicação precisa ser avisada
Alguns serviços mantêm o arquivo aberto e precisam recarregar depois do rodízio. Para isso, use postrotate:
/var/log/nginx/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
sharedscripts
postrotate
systemctl reload nginx > /dev/null 2>&1 || true
endscript
}
Como testar a regra
Antes de confiar, simule sem alterar nada:
sudo logrotate -d /etc/logrotate.d/meuapp
O -d (debug) mostra o que seria feito. Para forçar o rodízio agora:
sudo logrotate -f /etc/logrotate.d/meuapp
O estado de cada log (data da última rotação) fica em /var/lib/logrotate/status.
Erros comuns
- Erro de permissão: se o diretório do log pertence a outro usuário, use a diretiva
su usuario grupodentro da regra. - O log continua crescendo: a aplicação mantém o arquivo aberto. Use
copytruncateoupostrotatecom reload. - Regra duplicada: o mesmo arquivo em dois blocos gera erro. Mantenha uma única regra por arquivo.
Complementos úteis
O logrotate cuida dos arquivos de log. Para o log do systemd, veja o Journalctl, e para achar o que está ocupando espaço, Disco cheio na VPS Linux.
Disco com folga é servidor sem susto
Rotinas de limpeza evitam o pior, e um bom plano dá margem. Na Cloud VPS Brasil você conta com Intel Xeon Gold, SSD NVMe, baixa latência, tráfego ilimitado, preço fixo em reais e suporte humano via WhatsApp e ticket. Fale com a equipe pelo WhatsApp e escolha o plano ideal para o seu projeto.