Estou tentando reduzir o número de arquivos de log mantidos para o Apache reduzindo 'rotate 52' em /etc/logrotate.d/apache2 para 'rotate 8'. Com a rotação semanal, isso deve manter 2 meses de registros em vez de um ano inteiro.
Implantei a nova configuração por meio do Puppet em nossos doze servidores e notei que ela funciona de maneira diferente do que eu esperava. Eu esperava que ele removesse o erro do Apache e os logs de acesso com mais de 8 semanas, ou seja, 9-52. Em vez disso, manteve todos os logs antigos e simplesmente não criou nenhum novo que exceda o limite de 8 semanas! A rotação 9 agora está faltando, mas a 10-52 ainda existe.
A pesquisa no arquivo me mostrou que esse é um comportamento conhecido, por exemplo, Logrotate não remove logs antigos
Como faço para me livrar dos logs antigos facilmente? Quero evitar excluí-los manualmente em cada servidor. Ainda não tenho nenhum software de orquestração implantado, então o Puppet terá que servir.
Meu arquivo /etc/logrotate.d/apache2 lê:
/var/log/apache2/*.log {
weekly
missingok
rotate 8
compress
delaycompress
notifempty
create 644 root adm
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null
endscript
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi; \
endscript
}
Você pode adicionar um script postrotate ao seu bloco atual para excluir arquivos com mais de
n
dias com o seguinte:Aguarde a próxima rotação, remova-a e deixe o logrotate fazer seu trabalho normal novamente.