Мой файл logrotate на ubuntu запускается ежедневно. Я хочу убедиться, что файлы журнала меняются каждый час, чтобы больше не возникало ошибок переполнения диска. Итак, мой файл logrotate находится в папке cron.daily, достаточно ли просто переместить его в cron.hourly?
Я также хочу сохранить максимальный размер файла журнала на 5 МБ, но я не уверен, что изменить в logrotate.cnf.
Содержимое logrotate.cnf (без разрывов строк):
еженедельная ротация 4 создать include /etc/logrotate.d
/ var / log / wtmp {missingok ежемесячно создавать 0664 root utmp rotate 1}
/ var / log / btmp {missingok ежемесячно создавать 0660 root utmp rotate 1}
Я знаю, что должен использовать размер 5M, а где мне это писать? Хорошо ли, что первая строка предназначена для всех файлов журналов, а вторая и третья - только для wtmp и btmp? Итак, если моя логика верна, я должен написать размер 5M по всей линии, я прав?
Чтобы это имело какой-либо эффект, сценарий cron должен запускаться по крайней мере так часто, как вы хотите вращать файлы. Несмотря на то, что в настоящее время вы запускаете сценарий один раз в день (из cron.daily), он будет изменять файлы только один раз в неделю ( weekly
ключевое слово в скрипте logrotate устанавливает значение по умолчанию, оно заменяется на ежемесячный в случае wtmp и btmp).
Версия logrotate на моем ближайшем Linux-сервере работает только с ежедневной продолжительностью (хотя установка ограничения размера заставит файлы вращаться чаще). При этом для большинства серверов ротация журналов нарушает работу; если ваша цель - сэкономить место, может быть целесообразнее хранить меньше файлов истории и сжимать их:
daily rotate 2 compress size 5M create include /etc/logrotate.d
/var/log/wtmp { missingok monthly create 0664 root utmp rotate 1 }
/var/log/btmp { missingok monthly create 0660 root utmp rotate 1 }
(Обратите внимание, что изменения в первой строке не будут иметь никакого эффекта, если они будут отменены в другом месте.)
Не элегантный способ, который сработал для меня - ежечасно запускать logrotate в зависимости от размера файла, сделайте следующее
1) Скопируйте скрипт Logrotate из папки cron.daily в папку cron.hourly
cp /etc/cron.daily/logrotate /etc/cron.hourly/
2) Обновите файл /etc/cron.hourly/logrotate; прокомментируйте и замените последнюю строку следующим образом
#/usr/sbin/logrotate /etc/logrotate.conf
/usr/sbin/logrotate /etc/logrotate.d/logstash
3) обновите соответствующую запись / etc / crontab следующим образом (при необходимости)
#17 * * * * root cd / && run-parts --report /etc/cron.hourly
59 * * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.hourly )
4) Наконец, напишите следующую логику в вашем файле конфигурации logrotate (обновите пути и размер папок в соответствии с вашими требованиями)
cat /etc/logrotate.d/logstash
/var/log/logstash/*.log /var/log/logstash/*.err {
hourly
size 10M
rotate 4
copytruncate
compress
#delaycompress
missingok
notifempty }