ФАЙЛИ В /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, просвіт удвічі товщий за нього й переживає будь-яке
округлення. Малюнок став блідішим — це правильний бік розміну: на
мінікарту дивляться, щоб побачити структуру, а не прочитати текст.
39 lines
2.1 KiB
Text
39 lines
2.1 KiB
Text
# Ротація журналів 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
|
||
}
|