Logrotate не вращается автоматически, но работает с logrotate -d и logrotate -f.

Вопрос или проблема

Logrotate не выполняется автоматически, но работает с logrotate -d и logrotate -f без ошибок. Однако он не запускается автоматически каждый день. Ниже приведен вывод logrotate -d.

logrotate -d  /etc/logrotate.d/lumen 
чтение конфигурационного файла /etc/logrotate.d/lumen
Выделение хеш-таблицы для файла состояния, размер 15360 B

Обработка 1 логов

Паттерн вращения: /var/www/*/storage/logs/*.log после 1 дня (365 вращений)
пустые файлы логов вращаются, старые логи удаляются
переключение euid на 48 и egid на 48
рассмотрение лога /var/www/testdir/storage/logs/laravel.log
  лог требует вращения
вращение лога /var/www/testdir/storage/logs/laravel.log, log->rotateCount составляет 365
Преобразовано ' -%Y%m%d' -> '-%Y%m%d'
дата суффикс '-20190425'
шаблон глоба '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
сжатие лога с помощью: /bin/gzip
контекст fscreate установлен на unconfined_u:object_r:httpd_user_rw_content_t:s0
переименование /var/www/testdir/storage/logs/laravel.log в /var/www/testdir/storage/logs/laravel.log-20190425
переключение euid на 0 и egid на 0

Вы должны проверить, установлен ли Cron / запланирована ли задача Cron

Я не могу не заметить, что вы вращаете логи, находящиеся под /var/www, и logrotate выдает это сообщение, связанное с SELinux:

контекст fscreate установлен на unconfined_u:object_r:httpd_user_rw_content_t:s0

Когда вы запускаете logrotate вручную из вашей несвязанной сессии с привилегиями администратора, он, безусловно, может установить тип SELinux на httpd_user_rw_content_t.

Но logrotate, запущенный cron в более ограниченном контексте, может не иметь возможности сделать это, если вы не предприняли шаги для разрешения этого.

По крайней мере, в RHEL 7.9, с установленным пакетом selinux-policy-doc, man logrotate_selinux не перечисляет httpd_user_rw_content_t как относящийся к logrotate.

Если у вас есть законное веб-приложение, которое требует, чтобы вращаемые логи были доступны для записи через httpd, и они, по-видимому, также находятся под корневым каталогом веб-сервера, вы, безусловно, можете это сделать… но я не могу не считать такую конфигурацию несколько рискованной, в духе “приходите, взламывайте меня и удаляйте мои логи”.

Ответ или решение

Конечно, вы столкнулись с проблемой, когда Logrotate работает при запуске вручную, однако не выполняется автоматически. Давайте разберемся, в чем может быть причина этой проблемы и как ее решить.

Факт:

Logrotate эффективно выполняет свои функции при запуске с параметром -d или -f, что демонстрирует, что сама конфигурация Logrotate не содержит ошибок и данные успешно обрабатываются. Ручной запуск показывает, что программное обеспечение установлено и, по сути, работает корректно.

Ожидание:

Мы ожидаем, что Logrotate будет выполнять операции по ротации файлов автоматически через Cron, что обычно используется для периодического запуска задач на сервере.

Реальность:

  1. Проблема с Cron:

    • Убедитесь, что Cron установлен и работает должным образом. Чтобы это проверить, выполните команду: service cron status или systemctl status cron. Если Cron не работает, запустите его с помощью service cron start или systemctl start cron.
    • Проверьте, есть ли задача для Logrotate. Выполните команду crontab -l для просмотра списка запланированных задач. По умолчанию, Logrotate должен вызываться через файл настройки в каталоге /etc/cron.daily.
  2. Проблема c SELinux:

    • SELinux может ограничивать выполнение Logrotate при автоматическом запуске через Cron. Это может быть связано с контекстом httpd_user_rw_content_t, который Logrotate пытается установить.
    • Рассмотрите возможность изменения контекста файлов через chcon или модификацию политики SELinux для разрешения необходимых операций. Опцией может быть временная деактивация SELinux для тестирования с помощью setenforce 0, но помните, что это временное решение и в долгосрочной перспективе требует корректировки политики безопасности.

Эмоция:

Успешная автоматизация всего процесса управления логами поможет вам сократить ручные операции и минимизировать риски потери данных.

Стратегия:

Определите корень проблемы, проводя корректное тестирование через ручные операции и перенастройку соответствующих сервисов. Убедитесь в том, что ваши политики безопасности соответствуют требованиям и логически связаны с движением логов внутри системы.

Конечный результат:

Вы сможете автоматизировать ротацию логов Logrotate и обеспечить надежное обслуживание системы, минимизируя вмешательство человека и повышая устойчивость.

Следуя этим шагам, вы сможете устранить возникшую проблему и наладить корректную работу Logrotate в автоматическом режиме.

Оцените материал
Добавить комментарий

Капча загружается...