Настройка ротации логов

Ротация логов — это процесс управления лог-файлами путем их архивирования, удаления или замены, чтобы предотвратить переполнение дискового пространства и облегчить управление логами. В НАЙС ОС, как и в других дистрибутивах Linux, для этого часто используется утилита logrotate. В этом руководстве мы рассмотрим, как настроить ротацию логов с помощью logrotate.

Установка logrotate

В большинстве современных дистрибутивов Linux logrotate установлен по умолчанию. Чтобы убедиться в наличии logrotate или установить его, выполните следующую команду:

sudo tdnf install logrotate

Основная конфигурация logrotate

Основной файл конфигурации для logrotate находится в /etc/logrotate.conf. Дополнительные конфигурационные файлы могут быть размещены в каталоге /etc/logrotate.d/.

Пример базовой конфигурации

Откройте файл /etc/logrotate.conf для редактирования:

sudo nano /etc/logrotate.conf

Пример содержимого файла:

# Включение ротации для всех логов в /var/log
/var/log/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 root utmp
    sharedscripts
    postrotate
        /usr/bin/killall -HUP syslogd
    endscript
}

Параметры конфигурации:

  • daily: Ротация логов ежедневно.
  • missingok: Игнорировать ошибку, если файл лога отсутствует.
  • rotate 7: Хранить 7 архивных логов перед удалением.
  • compress: Сжимать старые файлы логов.
  • delaycompress: Откладывать сжатие до следующего цикла ротации.
  • notifempty: Не ротировать пустые файлы логов.
  • create 0640 root utmp: Создавать новые файлы логов с указанными правами доступа и владельцем.
  • sharedscripts: Использовать общий скрипт для всех файлов в блоке конфигурации.
  • postrotate: Выполнять скрипт после ротации (в данном случае, перезапуск демона syslog).

Настройка ротации для конкретных логов

Для настройки ротации логов конкретных приложений или служб используйте конфигурационные файлы в каталоге /etc/logrotate.d/. Рассмотрим пример настройки ротации логов для веб-сервера Nginx.

Пример конфигурации для Nginx

Создайте файл /etc/logrotate.d/nginx:

sudo nano /etc/logrotate.d/nginx

Добавьте следующий контент:

/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

Объяснение параметров

  • /var/log/nginx/*.log: Применение настроек ротации ко всем логам в указанном каталоге.
  • daily: Ротация логов ежедневно.
  • missingok: Игнорировать ошибку, если файл лога отсутствует.
  • rotate 14: Хранить 14 архивных логов перед удалением.
  • compress: Сжимать старые файлы логов.
  • delaycompress: Откладывать сжатие до следующего цикла ротации.
  • notifempty: Не ротировать пустые файлы логов.
  • create 0640 www-data adm: Создавать новые файлы логов с указанными правами доступа и владельцем.
  • sharedscripts: Использовать общий скрипт для всех файлов в блоке конфигурации.
  • postrotate: Выполнять скрипт после ротации (в данном случае, посылка сигнала USR1 для перезапуска Nginx).

Тестирование конфигурации logrotate

Для тестирования конфигурации logrotate используйте команду:

sudo logrotate -d /etc/logrotate.conf

Флаг -d (debug) позволяет выполнить пробный запуск без реальных изменений, что помогает проверить правильность конфигурации.

Запуск logrotate вручную

Для выполнения ротации вручную используйте команду:

sudo logrotate -f /etc/logrotate.conf

Флаг -f (force) заставляет logrotate выполнить ротацию независимо от настроек расписания.

Автоматизация ротации логов

Ротация логов обычно автоматизируется с помощью задания cron. В большинстве случаев, задание logrotate уже настроено в /etc/cron.daily/logrotate. Это задание выполняется ежедневно и управляется системой cron.

Заключение

Настройка ротации логов с помощью logrotate в НАЙС ОС позволяет эффективно управлять лог-файлами, предотвращая их переполнение и обеспечивая легкость в их управлении. Следование изложенным выше шагам поможет вам настроить ротацию логов для различных приложений и служб, что повысит общую стабильность и управляемость вашей системы.