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