De qui són els registres d'OpenVPN: del dimoni, de rsyslog o de logrotate?
Un escriptor, un rotador, una política de retenció. Trieu primer el camí, anomeneu el dimoni per a un filtre estret i demostreu la reobertura amb un sol fitxer rotat.
La rotació de registres es trenca d'una manera previsible: tres components creuen cadascun que posseeix el fitxer, i el resultat és un registre rotat que continua creixent mentre el nou queda buit. El dimoni manté un descriptor, logrotate reanomena el camí i rsyslog escriu en un lloc completament diferent. Trieu un escriptor i un rotador abans d'afegir una altra regla a la pila. La llista de comprovació següent avança en aquest ordre perquè cada pas posterior en depèn.
Decidiu qui escriu el fitxer
Hi ha dos dissenys legítims. En el primer, el procés VPN escriu ell mateix un fitxer mitjançant la seva pròpia opció log o log-append. En el segon, envia els registres al registre del sistema i rsyslog o journald decideix on acaben.
Són alternatives, no capes. Un amfitrió que activa totes dues acaba amb dos fitxers que no coincideixen, i el que esteu llegint sovint és el desactualitzat. Trieu el camí deliberadament i després elimineu l'altre escriptor.
Llegiu la configuració efectiva del servei abans de canviar res, inclosos els fitxers drop-in que poden substituir el fitxer d'unitat. Una directiva present al perfil que heu editat no és prova que sigui la que va carregar el procés en execució. Compareu la unitat amb els arguments del procés i després amb els fitxers que realment va obrir.
Anomeneu el dimoni perquè el filtre pugui ser estret
Al camí de syslog, doneu al dimoni una identitat diferent i filtreu per ella. Una regla que coincideix amb el nom de programa d'aquesta instància VPN manté els seus registres fora d'un fitxer compartit la política de retenció del qual pertany a una altra cosa.
Les regles estretes també fan que la pregunta següent sigui contestable: quin servei va produir aquesta línia? Un filtre que coincideix amb tot el que conté la paraula VPN recollirà de bon grat el trànsit d'un segon túnel i difuminarà tots dos. Coincidiu amb l'identificador exacte que la unitat passa al registre.
Tanqueu la regla després de l'acció perquè els registres no caiguin també a la destinació predeterminada. Les línies duplicades en dos fitxers semblen un error de registre i en realitat són una parada absent. Aquesta única omissió també duplica el cost de disc de la política de retenció.
Roteu sense perdre el descriptor
Quan el dimoni escriu el fitxer, logrotate reanomena el camí però el procés conserva el seu descriptor obert. Els registres nous continuen anant al fitxer reanomenat fins que alguna cosa fa que el procés reobri el camí original, i per això una rotació pot semblar que funciona mentre el fitxer nou queda buit.
La solució és una acció postrotate que desencadena el comportament documentat de recàrrega o reinici del servei. Senyalitzar el registre és una acció completament diferent i no fa res per a un dimoni que té el seu propi fitxer.
Quan la reobertura és impossible, copytruncate és el recurs: copieu el fitxer i després trunqueu-lo al mateix lloc. Manté el descriptor vàlid a costa de perdre tot el que s'ha escrit entre la còpia i el truncament, així que és un intercanvi i no una solució. Sota càrrega, aquest buit es pot empassar just la fallada que intenteu capturar.
Trieu una de les dues per fitxer i deixeu l'elecció per escrit, perquè barrejar-les al mateix camí produeix buits molt difícils d'atribuir després. Un lector que troba tots dos patrons en un directori no pot dir quin és l'autoritatiu.
Fixeu la retenció segons la finestra de l'incident
La retenció, la compressió i la mida màxima haurien de derivar-se de fins on investigueu realment. Una finestra de set dies amb compressió i un límit de mida és un punt de partida raonable per a molts desplegaments; un número copiat d'un tutorial, no.
Mantingueu la política en un sol lloc. Si logrotate rota el fitxer i rsyslog també el rota, guanya la segona rotació i l'esquema de noms de la primera sobreviu com a desordre. Trieu el propietari, desactiveu l'altra rotació i anoteu aquesta decisió al costat de la política.
La documentació de rsyslog cobreix el seu model d'encaminament i accions, mentre que la documentació del servei OpenVPN continua sent l'autoritat per a les opcions de registre del propi dimoni. Cap de les dues decideix la vostra política de retenció per vosaltres.
Proveu una rotació i un esdeveniment nou
Forceu una única rotació i després genereu un esdeveniment nou, com una autenticació fallida. Confirmeu que el registre nou apareix al fitxer nou i que el fitxer vell ha deixat de créixer.
Reviseu també els permisos del fitxer nou, perquè una rotació que el recrea amb un propietari diferent trenca l'escriptor a la propera escriptura i produeix un buit que sembla una caiguda. Compareu el propietari i el mode amb el compte del servei abans d'anar-vos-en. Després confirmeu que l'arxiu comprimit és llegible, ja que un arxiu que ningú pot obrir no és retenció. Una lectura ràpida del registre més recent al fitxer vell demostra tant la compressió com els permisos.
Acabeu anotant el propietari de cada pas: quin component escriu, quin rota i on viu la política de retenció. Aquest registre és el que converteix el proper incident de registre en una comprovació de cinc minuts en lloc d'una tarda endevinant quina capa va perdre la línia.