Баг в ротации логов /etc/nginx/vhost_logs

Все остальные вопросы
Ответить
pakager
Сообщения: 1
Зарегистрирован: Вт июл 18, 2023 11:13 am

Баг в ротации логов /etc/nginx/vhost_logs

Сообщение pakager » Сб июл 22, 2023 10:38 pm

Нашел баг в ротации логов:

AlmaLinux release 9.1 (Lime Lynx)
BrainyCP 1.0955.20230718

Суть бага:
Не ротируются логи в /etc/nginx/vhost_logs, в journalcrl -u logrotate:

Код: Выделить всё

error: failed to rename /etc/httpd/vhost_logs/xxx.com_access to /etc/httpd/vhost_logs/xxx.com_access-20230723: Read-only file system
Из-за этого лог nginx растет до неприличных размеров

Баг присутствует и на /etc/httpd/vhost_logs, но т.к. BrainyCP переносит логи сам, это не так критично. Подозреваю, что в других современных дистрибутивах баг тоже будет воспроизводиться.

Причина:
В logrotate.service указано ProtectSystem=full, чтобы systemd предотвратил изменение системных файлов, в т.ч. /etc, и, естественно, не может изменить /etc.

Workaround:
  • Вариант 1:

    Код: Выделить всё

    systemctl edit logrotate.service
    
    Добавить:

    Код: Выделить всё

    [Service]
    ReadWritePaths=/etc/nginx/vhost_logs
  • Вариант 2:
    Сделать /etc/nginx/vhost_logs симлинком на директорию в /var
Важное замечание:
Т.к. логи из /etc/(http|nginx)/vhost_logs переносятся периодически в пользовательские директории, после исправления этого бага logrotate может начать "уводить" лог из под средств BrainyCP. Думаю нужно продумать этот момент.

Заключение:
Лично я бы предложил пересмотреть хранение логов в /etc - все-таки это не место для логов - и вынести логи в /var/log

Аватара пользователя
alenka
Сообщения: 2012
Зарегистрирован: Ср сен 27, 2017 11:10 am

Re: Баг в ротации логов /etc/nginx/vhost_logs

Сообщение alenka » Пн июл 24, 2023 7:05 am

Проверим.

Аватара пользователя
sbury
Сообщения: 1362
Зарегистрирован: Вт фев 06, 2018 7:51 am

Re: Баг в ротации логов /etc/nginx/vhost_logs

Сообщение sbury » Вт авг 01, 2023 12:09 pm

переустановите пакеты с консоли

Код: Выделить всё

logrotate
rsyslog
brainy-nginx
перезапустите сервисы

Код: Выделить всё

systemctl restart logrotate
systemctl restart rsyslog
systemctl restart nginxb
systemctl enable nginxb
systemctl enable logrotate

Ответить