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

From ArchWiki

Джерело 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
}

Дивіться також