A resposta curta: o logrotate é o programa que, todos os dias, pega nos arquivos de log, guarda os antigos comprimidos e começa um novo, apagando os mais velhos. Os serviços do sistema já vêm configurados. Os seus (uma aplicação, um script, um contêiner) não, e é quase sempre um deles que enche o disco. Basta um arquivo de configuração de meia dúzia de linhas.
Num VPS com acesso root a manutenção dos logs é sua. Quando o disco enche, o site e o banco de dados deixam de escrever e começam os erros estranhos. O sintoma e o primeiro passo estão em Sem espaço no disco: ver o que o enche.
Primeiro, ver qual é o arquivo gordo
| 2 |
Veja o que o journal do sistema ocupa: journalctl --disk-usage. Para o encolher, sudo journalctl --vacuum-size=200M guarda só o mais recente até esse tamanho.
|
|
Como pôr um log seu a rodar
Crie um arquivo em /etc/logrotate.d/ com o nome da aplicação, por exemplo /etc/logrotate.d/minha-app, com este conteúdo (trocando o caminho pelo dos seus logs):
/var/log/minha-app/*.log {
weekly
rotate 4
compress
delaycompress
missingok
notifempty
copytruncate
}
| Linha |
O que faz |
| weekly |
Roda uma vez por semana. Também existem daily e monthly. Para rodar por tamanho, use size 50M. |
| rotate 4 |
Guarda quatro arquivos antigos e apaga o mais velho. |
| compress e delaycompress |
Comprime os antigos, deixando o último sem comprimir para o programa que ainda o possa estar lendo. |
| missingok e notifempty |
Não dá erro se o arquivo não existir e não roda um arquivo vazio. |
| copytruncate |
Copia o log e esvazia o original, em vez de o renomear. Serve para programas que mantêm o arquivo aberto e não sabem abrir outro. |
Testar antes de confiar
| 1 |
Ensaio sem mexer em nada: sudo logrotate -d /etc/logrotate.d/minha-app. O -d mostra o que faria, sem o fazer.
|
|
| 2 |
Forçar uma rotação agora: sudo logrotate -f /etc/logrotate.d/minha-app. Depois veja a pasta: deve haver um arquivo novo e um comprimido.
|
|
| 3 |
Deixe rodar: o sistema chama o logrotate uma vez por dia, sozinho. Não precisa de criar um cron para ele.
|
|
|
Não apague com rm um log que um programa tem aberto. O arquivo some da pasta, mas o espaço só volta quando o programa o fecha, e o disco continua cheio. Para esvaziar sem apagar use sudo truncate -s 0 /caminho/do/log.
|
|
Num contêiner, o limite certo está na própria configuração do Docker: o tamanho máximo e o número de arquivos do log de cada contêiner. Veja Docker num VPS com segurança. Os comandos deste artigo são seus: o nosso suporte não os escreve nem os repara (veja Até onde vai o nosso suporte).
|
|
O disco do VPS enche e não percebe de onde vem? Abra um pedido com o resultado do primeiro comando.
Abrir pedido de suporte
|
PRODUTO RECOMENDADO Servidor VPS com acesso root Recursos só seus, o sistema que escolher, reinstalação quando quiser. desde R$ 46,20/mês (plano de 3 anos, com cupom) Ver planos |