Logrotate (Українська)

Джерело
https://github.com/logrotate/logrotate
:
Утиліта logrotate призначена для спрощення адміністрування файлів журналу в системі, яка створює багато файлів журналу.  Logrotate дозволяє здійснювати автоматичну ротацію зі стисненням, видаленням та надсиланням файлів журналу. Logrotate можна налаштувати на обробку файлу журналу щодня, щотижня, щомісяця або коли файл журналу досягає певного розміру.
За замовчуванням ротація logrotate складається з перейменування існуючих файлів журналу з числовим суфіксом, а потім відновлення оригінального порожнього файлу журналу. Наприклад,
/var/log/syslog.log
є перейменованим
/var/log/syslog.log.1
. Якщо
/var/log/syslog.log.1
вже існує з попередньої ротації, його буде спочатку перейменовано на
/var/log/syslog.log.2
. (Можна налаштувати кількість резервів для зберігання.)
Встановлення
Logrotate можна встановити за допомогою пакета
logrotate
.
За замовчуванням logrotate запускається щодня за допомогою таймера
systemd timer
:
logrotate.timer
.
Налаштування
Основним файлом конфігурації logrotate, який встановлює параметри за замовчуванням, є
/etc/logrotate.conf
;  додаткові конфігураційні файли специфічних програм включено з каталогу
/etc/logrotate.d
. Значення, встановлені у файлах конфігурації для конкретної програми, замінюють ті самі параметри в основному файлі конфігурації.  Перегляньте
logrotate.conf(5)
для прикладів конфігурації та посилання на доступні директиви.
Щоб перевірити, чи logrotate працює правильно, запустіть його в режимі налагодження, у цьому режимі він не робить нічого, крім виведення налагоджувального виводу:
$ logrotate --debug /etc/logrotate.conf
Стиснення журналів
Logrotate може стискати журнали за допомогою спеціальної команди, наприклад
zstd
.
/etc/logrotate.conf
compress
compresscmd /usr/bin/zstd
compressext .zst
compressoptions -T0 --long
uncompresscmd /usr/bin/unzstd
Дивіться
logrotate.conf(5)
та
zstd(1)
для більш детальної інформації.
Використання
logrotate зазвичай запускається через службу
systemd
:
logrotate.service
.
Щоб запустити logrotate вручну:
# logrotate /etc/logrotate.conf
Для ротації одного файлу журналу:
# logrotate /etc/logrotate.d/mylog
Щоб імітувати запуск файлу конфігурації (
сухий запуск
):
# logrotate --debug /etc/logrotate.d/mylog
Щоб примусово виконувати ротацію, навіть якщо умови не виконуються, виконайте:
# logrotate -vf /etc/logrotate.d/mylog
Дивіться
logrotate(8)
для більш детальної інформації.
Вирішення проблем
exim log not rotated
Якщо ви встановили змінну
olddir
у
/etc/logrotate.conf
,, ви отримаєте таке повідомлення:
error: failed to rename /var/log/exim/mainlog to /var/log/old/mainlog.1: Permission denied
Щоб виправити це, додайте користувача
exim
до журналу групи
log
. Потім змініть групу
olddir
, як правило,
/var/log/old
, на
log
замість стандартної
root
.
Перевірка статусу logrotate
Ротації Logrotate зазвичай реєструються в
/var/lib/logrotate.status
(Параметр
-s
дозволяє вказати інший файл стану):
/var/lib/logrotate.status
"/var/log/mysql/query.log" 2016-3-20-5:0:0
"/var/log/samba/samba-smbd.log" 2016-3-21-5:0:0
"/var/log/httpd/access_log" 2016-3-20-5:0:0
...
Skipping log because parent directory has insecure permission
Налаштуйте, який користувач і яка група має виконувати завдання
/etc/logrotate.d/job
:
file-to-be-rotated {
    su user group
    rotate 4
}
Дивіться також
Gentoo:Logrotate
logrotate(8)
manual page
logrotate.conf(5)
manual page