Product SiteDocumentation Site

54.3. Настройка ротации журналов

Ротация журналов — это процесс архивирования и очистки старых лог-файлов для предотвращения их чрезмерного роста.

Примечание

Настройка ротации файлов системного журнала (systemd-journald) рассмотрены в разделе Что происходит в системе.
Утилита logrotate предназначена для автоматизации обработки журналов. Она может выполнять необходимые действия в зависимости от определенных условий и правил соответствия.
Все основные настройки программы находятся в файле /etc/logrotate.conf. Для дополнительных настроек используются файлы из каталога /etc/logrotate.d. В этих файлах содержатся правила обработки отдельных журналов.
Настройки по умолчанию (файл /etc/logrotate.conf):
  • weekly — ротация осуществляется еженедельно;
  • rotate 4 — хранить четыре архивные копии логов (если количество равно нулю, прежние версии удаляются, а не ротируются);
  • create — создать новый файл журнала после ротации. Здесь же можно указать режим, владельца и группу файла (по умолчанию используются атрибуты исходного файла журнала);
  • compress — сжимать старые файлы журнала;
  • notifempty — не ротировать, если файл журнала пуст.
Для ознакомления с прочими возможностями, читайте руководство по logrotate. Для этого используйте команду man logrotate.
Пример настройки ротации журнала для службы usbguard. Создать файл /etc/logrotate.d/usbguard:
/var/log/usbguard/*log {
        daily                   # Ротация ежедневно
        missingok               # Пропустить, если файл отсутствует
        notifempty              # Не ротировать, если файл пуст
        rotate 7                # Хранить 7 архивов
        compress                # Сжимать архивы
        create 0600 root root   # Создать новый файл с указанными правами
        delaycompress           # Отложить сжатие до следующей ротации
}

Примечание

После настройки какого-либо файла конфигурации logrotate следует проверить его корректность, запустив утилиту logrotate с опцией -d, например:
# logrotate -d /etc/logrotate.d/usbguard
Для выполнения logrotate по расписанию можно использовать планировщик заданий KCron.
Настройка выполнения logrotate по расписанию:
  1. Запустить планировщик заданий KCron, выбрав в Параметрах системы панель управления Сеанс и затем раздел Планировщик заданий или выполнив команду:
    $ kcmshell6 kcm_cron
  2. В поле Показывать задания выбрать системные и нажать кнопку Добавить задание…:
    Планировщик заданий
  3. В окне Создание нового задания выполнить следующие настройки:
    • в поле Команда указать команду для запуска ротации логов usbguard:
      /usr/sbin/logrotate /etc/logrotate.d/usbguard
      или команду для запуска ротации всех логов:
      /usr/sbin/logrotate /etc/logrotate.conf
    • в поле Запустить как выбрать пользователя root;
    • активировать задание, установив отметку в поле Активировать это задание;
    • установить расписание (например, ежедневно в 18:10).
    Создание нового задания
  4. Нажать кнопку ОК. Созданное задание появится в планировщике заданий:
    Созданное задание
  5. Сохранить изменения, нажав кнопку Ок или Применить. Так как задание будет записано в системный файл crontab, будет запрошен пароль администратора системы (root):
    Запрос пароля администратора системы

Примечание

Системный файл crontab (/etc/crontab) доступен для чтения только системному администратору. Для того чтобы системные задания отображались в KCron, необходимо добавить права на чтение этого файла всем пользователям, например, выполнив команду (потребуется ввести пароль root):
$ su -l -c 'chmod a+r /etc/crontab'