You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
optimize: уступив маски чужой стансе, тулкит не создаёт свою и рапортует зелёным — diagnose показывает ✔ ротацию, которой нет #40
При конфликте масок с чужой стансой optimizeотдаёт ей все свои пути, не создаёт na-node-logs
вообще — и после этого рапортует об успехе. na-logrotate.timer включается, na-diagnose печатает
зелёное ✔ ротация логов: часовой таймер активен, optimize.conf хранит NA_LOG_PATHS, как будто
они в силе. Фактически тулкит не ротирует ничего, а оператор видит здоровую фичу.
Отдельно: уступая маску, модуль печатает проверь, что там задан maxsize — но сам не проверяет.
Именно у победившей стансы maxsize чаще всего и нет: у пакетной стансы rsyslog на Debian/Ubuntu
стоит weekly вообще без maxsize, то есть после уступки размер не ограничен ничем.
Наблюдалось
2026-09-02, апгрейд v4.0.0 → v4.0.1 (install.sh optimize, NA_REF=v4.0.1) на четырёх боевых
Remnawave-нодах. На трёх из них с 28.07 лежала созданная руками станса /etc/logrotate.d/vpn-node-logs
с теми же масками, что у дефолта тулкита:
[*] все заданные пути уже покрыты другими стансами — свою не создаю
[!] маска /var/log/nginx/*.log уже покрыта чужой стансой в /etc/logrotate.d — отдана ей; проверь, что там задан maxsize
[!] маска /var/log/remnanode/*.log уже покрыта чужой стансой в /etc/logrotate.d — отдана ей; проверь, что там задан maxsize
То есть все три ноды показывают полностью зелёную диагностику при отсутствующей стансе.
(На четвёртой ноде, где чужой стансы не было, всё корректно: na-node-logs создана, ✔ 38 ✘ 0.)
Само поведение «отдать чужому» правильное — спор решает logrotate, и в v4.0.1 он решается честно.
Дефект в том, что уступка не доводится до оператора там, где он смотрит: в diagnose и в
итоговом статусе прогона.
Предлагаемый фикс
diagnose: разделить «таймер активен» и «станса существует». Сейчас сенсор смотрит только на
таймер. Если ENABLE_LOGROTATE=1, а /etc/logrotate.d/na-node-logs отсутствует или пуст — это ▲, а не ✔, с текстом «маски отданы чужим стансам: <список>».
Проверять то, о чём предупреждаем. Найдя победившую стансу (файл, который logrotate назвал
владельцем пути), грепнуть в ней maxsize; нет maxsize — warn с именем файла и его периодом
(weekly без maxsize = кап не работает), а не совет «проверь сам».
Записывать факт уступки в состояние ($STATE_DIR/logrotate.ceded) и показывать его в na-diagnose --json полем вида logrotate_owned_masks / logrotate_ceded_masks, чтобы
флот-мониторинг видел ноды, где фича выключилась сама.
Activity
Merge pull request #43 from jestivald/v4.1.1-cede-and-boots
jestivald commentedon Sep 2, 2026
Исправлено в v4.1.1 (PR #43, merge 6473b53): https://github.com/jestivald/node-accelerator/releases/tag/v4.1.1 — разбор в CHANGELOG, секция v4.1.1.
v4.1.1: уступка масок logrotate видна (владелец/maxsize/состояние, di…