Di chi sono i log di OpenVPN: del demone, di rsyslog o di logrotate?
Un solo scrittore, un solo rotatore, una sola politica di conservazione. Scegliete prima il percorso, nominate il demone per un filtro stretto e dimostrate la riapertura con un solo file ruotato.
La rotazione dei log si rompe in modo prevedibile: tre componenti credono ciascuno di possedere il file, e il risultato è un log ruotato che continua a crescere mentre il nuovo resta vuoto. Il demone tiene un descrittore, logrotate rinomina il percorso e rsyslog scrive altrove. Scegliete uno scrittore e un rotatore prima di aggiungere un'altra regola alla pila. La lista di controllo qui sotto procede in quest'ordine perché ogni passo successivo ne dipende.
Decidete chi scrive il file
Due progetti sono legittimi. Nel primo, il processo VPN scrive da sé un file tramite la propria opzione log o log-append. Nel secondo, invia i record al logger di sistema e rsyslog o journald decide dove finiscono.
Sono alternative, non livelli. Un host che attiva entrambi finisce con due file che non concordano, e quello che state leggendo è spesso quello obsoleto. Scegliete il percorso di proposito, poi rimuovete l'altro scrittore.
Leggete la configurazione effettiva del servizio prima di cambiare qualcosa, compresi i file drop-in che possono sovrascrivere il file unit. Una direttiva presente nel profilo che avete modificato non prova che sia quella caricata dal processo in esecuzione. Confrontate l'unit con gli argomenti del processo, poi con i file che ha davvero aperto.
Nominate il demone perché il filtro sia stretto
Sul percorso syslog, date al demone un'identità distinta e filtrate su quella. Una regola che corrisponde al nome del programma di questa istanza VPN tiene i suoi record fuori da un file condiviso la cui politica di conservazione appartiene a qualcos'altro.
Regole strette rendono anche rispondibile la domanda successiva: quale servizio ha prodotto questa riga? Un filtro che corrisponde a tutto ciò che contiene la parola VPN raccoglierà volentieri il traffico di un secondo tunnel e confonderà entrambi. Fate corrispondere l'identificatore esatto che l'unit passa al logger.
Chiudete la regola dopo l'azione perché i record non cadano anche nella destinazione predefinita. Righe duplicate in due file sembrano un difetto di logging e in realtà sono un arresto mancante. Quella singola omissione raddoppia anche il costo su disco della politica di conservazione.
Ruotate senza perdere il descrittore
Quando il demone scrive il file, logrotate rinomina il percorso ma il processo mantiene il proprio descrittore aperto. I nuovi record continuano nel file rinominato finché qualcosa non costringe il processo a riaprire il percorso originale; per questo una rotazione può sembrare funzionante mentre il nuovo file resta vuoto.
La soluzione è un'azione postrotate che attiva il comportamento documentato di ricaricamento o riavvio del servizio. Inviare un segnale al logger è un'azione del tutto diversa e non fa nulla per un demone che tiene il proprio file.
Dove la riapertura è impossibile, copytruncate è il ripiego: copiate il file, poi troncatelo sul posto. Mantiene valido il descrittore al costo di perdere tutto ciò che viene scritto tra la copia e il troncamento, quindi è uno scambio e non una soluzione. Sotto carico quella lacuna può inghiottire proprio il guasto che state cercando di catturare.
Scegliete una delle due per file e mettete per iscritto la scelta, perché mescolarle sullo stesso percorso produce lacune molto difficili da attribuire in seguito. Chi trova entrambi i modelli in una directory non riesce a dire quale sia quello autorevole.
Fissate la conservazione dalla finestra dell'incidente
Conservazione, compressione e dimensione massima dovrebbero derivare da quanto indietro indagate davvero. Una finestra di sette giorni con compressione e un tetto di dimensione è un punto di partenza ragionevole per molti dispiegamenti; un numero copiato da un tutorial no.
Tenete la politica in un solo posto. Se logrotate ruota il file e anche rsyslog lo ruota, vince la seconda rotazione e lo schema di denominazione della prima sopravvive come disordine. Scegliete il proprietario, disattivate l'altra rotazione e annotate quella decisione accanto alla politica.
La documentazione di rsyslog copre il suo modello di instradamento e azioni, mentre la documentazione del servizio OpenVPN resta autorevole per le opzioni di logging del demone stesso. Nessuna delle due decide la vostra politica di conservazione al posto vostro.
Provate una rotazione e un evento nuovo
Forzate una sola rotazione e poi generate un evento nuovo, come un'autenticazione fallita. Confermate che il nuovo record compare nel nuovo file e che il vecchio file ha smesso di crescere.
Controllate anche i permessi del nuovo file, perché una rotazione che lo ricrea con un altro proprietario rompe lo scrittore alla scrittura successiva e produce una lacuna che sembra un crash. Confrontate proprietario e modalità con l'account del servizio prima di andarvene. Poi confermate che l'archivio compresso è leggibile, dato che un archivio che nessuno può aprire non è conservazione. Una lettura rapida del record più recente nel vecchio file dimostra sia la compressione sia i permessi.
Concludete annotando il proprietario di ogni passo: quale componente scrive, quale ruota e dove vive la politica di conservazione. È quella nota che trasforma il prossimo incidente di logging in un controllo di cinque minuti invece di un pomeriggio a indovinare quale livello abbia perso la riga.