Netpulse_SasS/deploy/logrotate-netpulse
byrsapty 04e1242c52
All checks were successful
CI / hygiene (push) Successful in 8s
CI / web (push) Successful in 1m10s
CI / server (push) Successful in 1m41s
CI / agent (push) Successful in 59s
Журнали файлами, тонший штрих мінікарти
ФАЙЛИ В /var/log/netpulse. rsyslog читає journald і розкладає по файлах
на службу. Драйвер docker лишається journald, а не syslog: syslog
віддав би рядки назовні й нічого не лишив докеру, тож `docker logs`
замовк би назавжди — і мовчання виглядало б як «служба нічого не пише».
Тепер працюють усі три шляхи: docker logs, journalctl, файли.

Дорогою три власні помилки, кожна виглядала як «rsyslog не працює»:

  1. Умова матчила $!CONTAINER_NAME — метадані журналу. journalctl їх
     бачить, а до правил rsyslog вони доходять не завжди. Каталог
     створювався й лишався порожнім.
  2. Тег «netpulse/{{.Name}}» здавався охайнішим, але rsyslog обриває
     programname на скісній: для ВСІХ контейнерів вона ставала просто
     «netpulse». Тег тепер — саме ім'я контейнера, воно й так має
     префікс проєкту.
  3. Шаблон `%msg:::sp-if-no-1st-sp,drop-last-lf%` давав ПОРОЖНІЙ
     текст: файли були, рядки були, слів не було. Журнал виглядав
     робочим і не містив нічого — найгірший різновид поломки.

Конфігурації в deploy/, щоб їхали клієнтам, а не лишались разовим
налаштуванням одного сервера.

МІНІКАРТА. Штрих рядка був 2 px при 3 px на рядок — просвіт в один
піксель. На дробовому масштабі екрана (1.25, 1.5 — тобто на більшості
ноутбуків) він губився при округленні, і рядки злипались у суцільну
пляму: мінікарта показувала не форму конфігу, а сірий прямокутник.

Тепер штрих 1 px, просвіт удвічі товщий за нього й переживає будь-яке
округлення. Малюнок став блідішим — це правильний бік розміну: на
мінікарту дивляться, щоб побачити структуру, а не прочитати текст.
2026-08-27 22:55:29 +03:00

39 lines
2.1 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Ротація журналів NetPulse. Ставиться в /etc/logrotate.d/netpulse.
#
# Без цього файла попередній стає нескінченним: rsyslog пише й пише, а
# диск закінчується мовчки. Саме так уже було з json-file докера —
# драйвер стояв без max-size і не крутив нічого.
/var/log/netpulse/*.log {
# Щодня, і 14 копій — два тижні історії.
#
# Не «за розміром»: розмір ротації відповідає на питання «скільки
# місця», а на питання «що було в ніч на вівторок» відповідає дата.
# Друге питання ставлять частіше.
daily
rotate 14
# Стеля на випадок шторму. Два тижні звичайних журналів — десятки
# мегабайтів, але трап-шторм або цикл перезапусків дає гігабайти за
# години, і тоді ротація за датою не встигає.
maxsize 50M
compress
# Найсвіжіший стиснутий файл лишається як є: `zgrep` по вчорашньому
# потрібен частіше за економію кількох мегабайтів.
delaycompress
missingok
notifempty
# Файл створює rsyslog; без create після ротації він писав би у
# видалений inode, і журнал зникав би до перезапуску демона.
create 0640 root adm
sharedscripts
postrotate
# HUP, а не restart: перезапуск демона губить рядки, які
# надійшли в мить перезапуску, — тобто рівно під час події, яка
# найімовірніше й спричинила ріст журналу.
/usr/lib/rsyslog/rsyslog-rotate 2>/dev/null || systemctl kill -s HUP rsyslog.service 2>/dev/null || true
endscript
}