Skip to content

Настройка ротации логов Apache HTTPD с помощью logrotate

Данная статья описывает настройку индивидуальных параметров ротации логов Apache HTTPD через logrotate для предотвращения переполнения диска и обеспечения стабильной работы управляющей машины.

При высокой нагрузке на веб-сервер размер журналов Apache может стремительно расти, создавая риск полного заполнения дискового пространства и нестабильной работы управляющей машины. Стандартная утилита logrotate позволяет автоматизировать управление жизненным циклом логов, оптимизировать занимаемое место и предотвратить аварийные остановки сервисов.

Проверка глобальных настроек по умолчанию

Глобальная конфигурация logrotate задаётся в файле /etc/logrotate.conf. Чтобы быстро оценить текущие параметры ротации по умолчанию, выполните:

grep -E '^(daily|weekly|monthly|size|rotate|compress)' /etc/logrotate.conf

Базовые правила рассчитаны на умеренную активность системы. Для критичных сервисов вроде Apache HTTPD безопаснее задать индивидуальный профиль ротации.

Конфигурация ротации для Apache HTTPD

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

Создайте резервную копию текущей конфигурации:

cp /etc/logrotate.d/httpd /etc/logrotate.d/httpd.bak.$(date +%F)

Откройте или создайте файл /etc/logrotate.d/httpd:

sudo nano /etc/logrotate.d/httpd

Внесите следующую конфигурацию:

/var/log/httpd/*log {
    daily
    maxsize 50M
    dateext
    dateformat -%Y%m%d-%s
    rotate 14
    compress
    delaycompress
    missingok
    notifempty
    create 640 root root
    sharedscripts
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>&1 || true
    endscript
}

Описание используемых параметров

  • daily — запускает плановую ротацию каждые сутки.
  • maxsize 50M — форсирует ротацию лога при достижении 50 МБ, даже если сутки ещё не прошли (барьер от переполнения диска при спайках трафика или ошибках).
  • dateext и dateformat -%Y%m%d-%s — добавляют к архивам читаемый суффикс с датой и Unix-таймстемпом вместо простой цифровой нумерации.
  • rotate 14 — глубина архива: сохраняются последние 14 копий (при объёме файла 100 МБ один тип лога займёт суммарно не более 1,4 ГБ).
  • compress и delaycompress — архивация старых логов с помощью gzip; сжатие самого последнего архива откладывается до следующего цикла, что упрощает оперативный траблшутинг.
  • missingok — предотвращает аварийное завершение утилиты при временном отсутствии какого-либо лог-файла.
  • notifempty — запрещает ротацию пустых файлов, исключая создание пустых архивов.
  • create 640 root root — создаёт новый лог-файл взамен перемещённого с безопасными правами доступа 640 (чтение/запись для root, чтение для группы).
  • sharedscripts и блок postrotate ... endscript — выполняет systemctl reload httpd однократно для всей группы файлов логов, благодаря чему веб-сервер корректно переоткрывает файловые дескрипторы без перезапуска рабочих процессов.

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

Перед сохранением изменений проверьте конфигурацию:

logrotate -d /etc/logrotate.d/httpd

Ключ -d выведет детальный лог планируемых операций без физического изменения файлов и перезагрузки сервиса. При необходимости принудительно запустить ротацию вне расписания используйте:

logrotate -f /etc/logrotate.d/httpd

Параметры maxsize и rotate можно скорректировать под доступную ёмкость файловой системы и корпоративные требования к глубине аудита.