Un design de jurnal răspunde la trei întrebări: ce proces a produs o înregistrare, unde ajunge acea înregistrare și cât timp supraviețuiește. OpenVPN poate scrie într-un fișier, poate preda mesajele loggerului de sistem sau le poate lăsa în seama a ceea ce captează managerul de servicii, iar acestea nu sunt trei copii ale unui singur flux. Fiecare alegere schimbă cine deține rotația, ce utilizator poate citi rezultatul și ce se întâmplă la pornire. Stabiliți răspunsurile înainte de un incident, pentru că după aceea moșteniți ceea ce este configurat.

Ce face de fapt daemonul cu directiva

Directivele nu sunt abstracții; fiecare decide unde scrie procesul mesajele sale. log /path deschide acel fișier, log-append /path îl deschide pentru adăugare, iar syslog predă mesajele loggerului local de sistem prin socketul său. Fără niciuna dintre ele, ieșirea merge la ieșirea standard și managerul de servicii decide ce se întâmplă mai departe. Citiți unitatea efectivă și profilul împreună înainte de a concluziona că daemonul ignoră configurația dumneavoastră.

Ultimul caz este obișnuit la o instalare din pachet și explică de ce doi administratori nu sunt de acord unde locuiește jurnalul. Unul citește journalul unității, celălalt un fișier pe care daemonul nu l-a scris niciodată.

Verificați configurația aflată în execuție, nu fișierul de pe disc. O suprascriere de unitate de tip drop-in sau un fișier de mediu pot schimba directiva efectivă fără a atinge profilul pe care îl citiți.

log trunchiază, log-append nu

log trunchiază un fișier existent când directiva intră în vigoare, așa că o repornire șterge dovezile de dinainte. log-append păstrează ce există și adaugă. Niciuna dintre opțiuni nu rotește nimic și niciuna nu redeschide fișierul mai târziu de la sine, de aceea rotația are nevoie de cooperare.

Dacă rotația redenumește fișierul în timp ce daemonul scrie în continuare în descriptorul vechi, fișierul nou rămâne gol și utilizarea discului crește în cel redenumit. Semnalați procesului să redeschidă, sau rotiți cu o strategie copiază-și-trunchiază și acceptați fereastra de copiere.

Directorul, proprietatea și permisiunile fac parte din design. Daemonul poate rula ca utilizator fără privilegii după pornire, iar un director creat de root la instalare poate să nu fie inscriptibil atunci. Pregătiți-l prin ambalare sau prin procesul de implementare în loc să reparați permisiuni în timpul unui incident.

Managerul de servicii păstrează o a doua copie

systemd captează ieșirea standard și eroarea standard în mod implicit, așa că o unitate fără redirecționare explicită are deja un jurnal. Adăugarea unei directive de fișier oferă două fluxuri cu retenție, cititori și mărci de timp diferite.

Asta nu este automat greșit, dar trebuie să fie o decizie. Păstrați înregistrarea de pornire în journal, pentru că eșecurile dinainte ca fișierul configurat să existe nu apar în altă parte. Apoi faceți fișierul autoritativ pentru evenimentele din regimul stabil și spuneți asta în runbook. Două fluxuri autoritative înseamnă două răspunsuri la fiecare întrebare.

Confirmați alegerea cu un test care eșuează intenționat. Porniți daemonul cu un certificat ilizibil și verificați care flux înregistrează eroarea.

Verbozitatea nu este același lucru cu detaliul utilizabil

Un nivel verb mai ridicat adaugă mai multe linii și, după un punct, linii pe care nimeni nu le citește. Nivelul 3 este un regim stabil rezonabil pentru majoritatea implementărilor, iar nivelul 4 și peste se potrivește unei investigații limitate cu o întrebare cunoscută. Suprimarea repetărilor reduce zgomotul, dar nu trebuie să ascundă cât de des se repetă un eveniment. Stabiliți nivelul pe care îl puteți susține și ridicați-l doar pentru o investigație numită cu un sfârșit.

Păstrați identitatea instanței și mărcile de timp în înregistrare. O reconectare arată exact ca o primă conexiune când fișierul primește adăugiri de luni de zile și numele instanței lipsește.

Aveți grijă ce altceva ajunge în acel fișier. Ieșirea redirecționată poate include text din scripturi apelate, iar un program auxiliar care își tipărește mediul pune acreditări și căi de chei într-un jurnal lizibil. Tratați accesul la jurnal ca o decizie de securitate chiar și atunci când daemonul însuși nu tipărește nimic sensibil.

Rotație, retenție și semnalele care reîncarcă

Decideți retenția împreună cu persoana care deține discul și stabiliți-o înainte ca volumul să decidă pentru dumneavoastră. Un semnal de reîncărcare nu este o comandă de întreținere a jurnalului: trimiterea celui greșit repornește tunelul și deconectează fiecare utilizator. Scrieți procedura de redeschidere lângă regula de rotație, ca cele două să nu se îndepărteze.

Rezultatul ar trebui să fie un serviciu pe care un operator îl poate descrie: un flux autoritativ, fiecare eveniment plasat în ciclul de viață și o înregistrare obținută fără a colecta fiecare fișier care conține secrete de pe gazdă. Acea descriere este testul de acceptare al designului, iar verificarea ei înainte de următorul incident este ieftină.

Articole similare