A resposta curta: o logrotate é o programa que, todos os dias, pega nos ficheiros 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 contentor) não, e é quase sempre um deles que enche o disco. Basta um ficheiro 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 a base 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 ficheiro 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 ficheiro 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 ficheiros 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 a ler. |
| missingok e notifempty |
Não dá erro se o ficheiro não existir e não roda um ficheiro vazio. |
| copytruncate |
Copia o log e esvazia o original, em vez de o renomear. Serve para programas que mantêm o ficheiro 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 ficheiro novo e um comprimido.
|
|
| 3 |
Deixe correr: 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 ficheiro 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 contentor, o limite certo está na própria configuração do Docker: o tamanho máximo e o número de ficheiros do log de cada contentor. 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 7.560,00 Kz/mês (plano de 3 anos, com cupão) Ver planos |