Я пытаюсь уменьшить количество файлов журнала, хранящихся для Apache, уменьшив «поворот 52» в /etc/logrotate.d/apache2 до «повернуть 8». При еженедельной ротации журналы должны храниться за 2 месяца вместо полного года.
Я развернул новую конфигурацию через Puppet на наших десятках серверов и заметил, что она работает не так, как я ожидал. Я ожидал, что он удалит ошибку Apache и получит доступ к журналам журналов старше 8 недель, т.е. 9-52. Вместо этого он сохранил все старые журналы и просто не создает никаких новый те, которые превышают этот 8-недельный лимит! Поворот 9 сейчас отсутствует, но 10-52 все еще существуют.
Поиск в архиве показал мне, что это известное поведение, например Logrotate не удаляет старые журналы
Как легко избавиться от старых журналов? Я хочу избежать их ручного удаления на каждом сервере. У меня еще нет развернутого программного обеспечения для оркестровки, так что Puppet придется делать.
Мой файл /etc/logrotate.d/apache2 гласит:
/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
}
Вы можете добавить скрипт postrotate в свой текущий блок, чтобы удалить файлы старше n
дней со следующим:
find /var/log/apache2 -maxdepth 1 -mtime +<n> -name "*.log.*.gz" -delete &>/dev/null
Дождитесь следующего поворота, затем удалите его и позвольте logrotate снова выполнить свою обычную работу.