Кому му припаѓаат OpenVPN дневниците: на демонот, на rsyslog или на logrotate?
Еден запишувач, еден ротатор, една политика за чување. Прво изберете ја патеката, именувајте го демонот за тесен филтер и докажете го повторното отворање со една ротирана датотека.
Ротацијата на дневниците се крши на предвидлив начин: три компоненти секоја мисли дека ја поседува датотеката, а резултатот е ротиран дневник што продолжува да расте додека новиот останува празен. Демонот држи дескриптор, logrotate ја преименува патеката, а rsyslog пишува сосема на друго место. Изберете еден запишувач и еден ротатор пред да додадете уште едно правило на купот. Списокот за проверка подолу се движи по тој редослед, бидејќи секој следен чекор зависи од него.
Одлучете кој ја пишува датотеката
Два нацрта се легитимни. Во првиот, VPN процесот сам пишува датотека преку својата опција log или log-append. Во вториот, испраќа записи до системскиот дневник, а rsyslog или journald одлучува каде ќе слетаат.
Тоа се алтернативи, не слоеви. Домаќин што ќе ги вклучи двете завршува со две датотеки што не се согласуваат, а таа што ја читате често е застарената. Изберете ја патеката намерно, потоа отстранете го другиот запишувач.
Прочитајте ја делотворната конфигурација на услугата пред да промените нешто, вклучително и drop-in датотеките што може да ја надминат unit датотеката. Директива присутна во профилот што го уредивте не е доказ дека е таа што ја вчитал процесот што работи. Споредете ја unit датотеката со аргументите на процесот, а потоа со датотеките што тој навистина ги отвори.
Именувајте го демонот за филтерот да биде тесен
На syslog патеката, дајте му на демонот посебен идентитет и филтрирајте по него. Правило што се совпаѓа со програмското име на оваа VPN инстанца ги држи нејзините записи надвор од заедничка датотека чија политика за чување му припаѓа на нешто друго.
Тесните правила го прават одговорливо и следното прашање: која услуга ја создаде оваа линија? Филтер што се совпаѓа со сѐ што го содржи зборот VPN со задоволство ќе го собере сообраќајот на вториот тунел и ќе ги замати двете. Совпаднете се со точниот идентификатор што unit датотеката му го предава на дневникот.
Затворете го правилото по дејството за записите да не паднат и во стандардното одредиште. Двојните линии во две датотеки изгледаат како грешка во логирањето, а всушност се недостасувачко запирање. Токму тоа едно пропуштање ја удвојува и диск-цената на политиката за чување.
Ротирајте без да го изгубите дескрипторот
Кога демонот ја пишува датотеката, logrotate ја преименува патеката, но процесот го задржува својот отворен дескриптор. Новите записи продолжуваат во преименуваната датотека сѐ додека нешто не го принуди процесот повторно да ја отвори оригиналната патека; затоа ротацијата може да изгледа дека работи додека новата датотека останува празна.
Решението е дејство postrotate што го активира документираното однесување за повторно вчитување или рестартирање на услугата. Испраќањето сигнал до дневникот е сосема друго дејство и не прави ништо за демон што држи сопствена датотека.
Каде што повторното отворање е невозможно, copytruncate е резервата: копирајте ја датотеката, потоа скратете ја на место. Го задржува дескрипторот валиден по цена на губење на сѐ што е напишано меѓу копирањето и скратувањето, па тоа е замена, а не решение. Под оптоварување таа празнина може да го проголта токму дефектот што се обидувате да го фатите.
Изберете едно од двете по датотека и запишете го изборот, бидејќи нивното мешање на иста патека создава празнини што подоцна е многу тешко да се припишат. Читателот што ќе ги најде двата шаблони во еден директориум не може да каже кој е меродавен.
Поставете го чувањето според прозорецот на инцидентот
Чувањето, компресијата и максималната големина треба да произлегуваат од тоа колку наназад навистина истражувате. Прозорец од седум дена со компресија и горна граница на големината е разумна почетна точка за многу распоредувања; број копиран од учебник не е.
Држете ја политиката на едно место. Ако logrotate ја ротира датотеката и rsyslog исто така ја ротира, победува втората ротација, а шемата за именување на првата опстанува како неред. Изберете го сопственикот, исклучете ја другата ротација и забележете ја таа одлука покрај политиката.
Документацијата на rsyslog го покрива неговиот модел за насочување и дејства, додека документацијата на услугата OpenVPN останува меродавна за сопствените опции за логирање на демонот. Ниту една од двете не ја одлучува вашата политика за чување наместо вас.
Тестирајте една ротација и еден нов настан
Присилете една ротација и потоа генерирајте еден нов настан, на пример неуспешна автентикација. Потврдете дека новиот запис се појавува во новата датотека и дека старата датотека престана да расте.
Проверете ги и дозволите на новата датотека, бидејќи ротација што ја пресоздава со друг сопственик го крши запишувачот при следното пишување и создава празнина што изгледа како пад. Споредете ги сопственикот и режимот со сметката на услугата пред да заминете. Потоа потврдете дека компресираната архива е читлива, бидејќи архива што никој не може да ја отвори не е чување. Брзо читање на најновиот запис во старата датотека ги докажува и компресијата и дозволите.
Завршете со запишување на сопственикот на секој чекор: која компонента пишува, која ротира и каде живее политиката за чување. Токму тој запис го претвора следниот инцидент со дневниците во петминутна проверка наместо попладне со погодување кој слој ја испуштил линијата.