Eu tenho tido alguns problemas com o logrotate, aparentemente não faz o que estou dizendo para fazer.
Ambiente:
- Centos 6.4
- logrotate 3.7.8
Meu arquivo /etc/logrotate.conf tem o seguinte:
# rotate log files weekly
daily
# keep 4 weeks worth of backlogs
rotate 30
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
# dateext
# uncomment this if you want your log files compressed
compress
compresscmd /usr/bin/bzip2
uncompresscmd /usr/bin/bunzip2
compressext .bz2
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
E o arquivo logrotate que estou tendo problemas é o seguinte (para o elasticsearch, localizado em /etc/logrotate.d/elasticsearch):
/var/log/elasticsearch/*.log {
missingok
notifempty
copytruncate
postrotate
rm -rf /var/log/elasticsearch/*.log.$(date +%Y)*
size 1k
rotate 7
daily
}
Primeiro, não está respeitando minha configuração rotate 7
, quando executo logrotate -d /etc/logrotate.conf
, recebo uma linha dizendo:
rotating log /var/log/elasticsearch/gravity-es-prod02.log, log->rotateCount is 30
... e um monte de declarações dizendo que está girando 30 arquivos * .bz2 diferentes.
Em segundo lugar, continuo terminando com um arquivo de log chamado gravity-es-prod02.log.2015-12-01
(e todas as datas anteriores desde a minha última limpeza manual), apesar de não ter o dateext ativado. Eles também não são limpos, então adicionei a linha pós-rotação para limpá-la manualmente, mas aparentemente isso também não funciona corretamente.
EDITAR
O arquivo cron que executa o script logrotate é bastante padrão:
#> cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0