Ротація журналів ламається передбачувано: три компоненти кожен вважає, що володіє файлом, і результат — ротований журнал, який продовжує рости, поки новий залишається порожнім. Демон тримає дескриптор, logrotate перейменовує шлях, а rsyslog пише зовсім в іншому місці. Виберіть одного письменника й один ротатор, перш ніж додавати до купи ще одне правило. Контрольний список нижче йде саме в цьому порядку, бо кожен наступний крок залежить від нього.

Вирішіть, хто пише файл

Дві схеми законні. У першій процес VPN сам пише файл через власну опцію log або log-append. У другій він надсилає записи системному журналу, і rsyslog або journald вирішує, де вони опиняться.

Це альтернативи, а не шари. Хост, який увімкнув обидві, отримує два файли, що не збігаються, і той, який ви читаєте, часто застарілий. Виберіть шлях свідомо, а потім приберіть другого письменника.

Прочитайте чинну конфігурацію служби, перш ніж щось змінювати, включно з drop-in файлами, які можуть перекрити unit. Директива в профілі, який ви редагували, не доводить, що це та, яку завантажив робочий процес. Порівняйте unit з аргументами процесу, а далі з файлами, які він справді відкрив.

Назвіть демона, щоб фільтр був вузьким

На шляху syslog дайте демонові окрему ідентичність і фільтруйте за нею. Правило, що збігається з назвою програми цього примірника VPN, тримає його записи поза спільним файлом, політика зберігання якого належить чомусь іншому.

Вузькі правила роблять відповідальним і наступне питання: яка служба породила цей рядок? Фільтр, що збігається з усім, де є слово VPN, охоче збере трафік другого тунелю й розмиє обидва. Зіставляйте за точним ідентифікатором, який unit передає журналу.

Закрийте правило після дії, щоб записи не потрапляли ще й у призначення за замовчуванням. Дубльовані рядки в двох файлах виглядають як помилка журналювання, а насправді це відсутня зупинка. Один цей пропуск також подвоює дискові витрати політики зберігання.

Ротуйте, не втрачаючи дескриптор

Коли демон пише файл, logrotate перейменовує шлях, але процес зберігає свій відкритий дескриптор. Нові записи продовжують потрапляти в перейменований файл, доки щось не змусить процес знову відкрити початковий шлях; тому ротація може виглядати робочою, поки новий файл залишається порожнім.

Рішення — дія postrotate, яка запускає документовану поведінку служби під час перезавантаження або перезапуску. Надсилання сигналу журналу — зовсім інша дія й нічого не робить для демона, який тримає власний файл.

Там, де повторне відкриття неможливе, copytruncate — запасний варіант: скопіюйте файл, а потім обріжте його на місці. Дескриптор лишається чинним ціною втрати всього, що записано між копіюванням і обрізанням, тож це обмін, а не рішення. Під навантаженням цей проміжок може проковтнути саме той збій, який ви намагаєтеся зловити.

Виберіть один із двох для кожного файлу й запишіть вибір, бо їх змішування на одному шляху створює проміжки, які потім дуже важко до чогось віднести. Читач, який знайде обидва шаблони в одному каталозі, не може сказати, який із них головний.

Задайте зберігання від вікна інциденту

Зберігання, стиснення й максимальний розмір мають випливати з того, наскільки глибоко ви насправді досліджуєте. Вікно в сім днів зі стисненням і обмеженням розміру — розумна відправна точка для багатьох розгортань; число, скопійоване з посібника, — ні.

Тримайте політику в одному місці. Якщо logrotate ротує файл і rsyslog теж його ротує, перемагає друга ротація, а схема імен першої лишається як безлад. Виберіть власника, вимкніть іншу ротацію й запишіть це рішення поряд із політикою.

Документація rsyslog описує його модель маршрутизації та дій, а документація служби OpenVPN лишається авторитетною для власних параметрів журналювання демона. Жодна з них не вирішує вашу політику зберігання за вас.

Перевірте одну ротацію й одну нову подію

Примусово виконайте одну ротацію, а потім створіть одну нову подію, наприклад невдалу автентифікацію. Підтвердьте, що новий запис з'явився в новому файлі й що старий файл перестав рости.

Перевірте й права на новому файлі, бо ротація, яка перестворює його з іншим власником, ламає письменника під час наступного запису й створює проміжок, схожий на падіння. Порівняйте власника й режим з обліковим записом служби, перш ніж піти. Потім переконайтеся, що стиснений архів читається, адже архів, який ніхто не може відкрити, не є зберіганням. Швидке читання найновішого запису в старому файлі доводить і стиснення, і права.

Завершіть, записавши власника кожного кроку: який компонент пише, який ротує і де живе політика зберігання. Саме цей запис перетворює наступний інцидент із журналами на п'ятихвилинну перевірку замість півдня здогадів, який шар загубив рядок.

Схожі статті