Wo ein OpenVPN-Server sein Protokoll schreiben sollte – und warum
log, log-append und syslog unterscheiden sich, und der Dienstmanager führt eine eigene Kopie. Wählen Sie einen maßgeblichen Strom, halten Sie den Lebenszyklus lesbar, legen Sie die Aufbewahrung fest.
Ein Log-Design beantwortet drei Fragen: Welcher Prozess hat einen Eintrag erzeugt, wo landet dieser Eintrag, und wie lange überlebt er? OpenVPN kann in eine Datei schreiben, Meldungen an den Systemlogger übergeben oder sie dem überlassen, was der Dienstmanager mitnimmt, und das sind nicht drei Kopien eines einzigen Stroms. Jede Wahl verändert, wer die Rotation besitzt, welcher Benutzer das Ergebnis lesen kann und was beim Start geschieht. Klären Sie die Antworten vor einem Vorfall, denn danach erben Sie, was konfiguriert wurde.
Was der Daemon mit der Anweisung tatsächlich macht
Die Anweisungen sind keine Abstraktionen; jede entscheidet, wohin der Prozess seine Meldungen schreibt. log /path öffnet diese Datei, log-append /path öffnet sie zum Anhängen, und syslog übergibt Meldungen über seinen Socket an den lokalen Systemlogger. Ohne all das geht die Ausgabe nach stdout, und der Dienstmanager entscheidet, was weiter passiert. Lesen Sie die wirksame Unit und das Profil zusammen, bevor Sie schließen, dass der Daemon Ihre Konfiguration ignoriert.
Der letzte Fall ist bei einer Paketinstallation der übliche und erklärt, warum zwei Administratoren sich über den Log-Ort uneinig sind. Der eine liest das Journal der Unit, der andere eine Datei, die der Daemon nie geschrieben hat.
Prüfen Sie die laufende Konfiguration statt der Datei auf der Platte. Ein Drop-in-Override der Unit oder eine Umgebungsdatei kann die wirksame Anweisung ändern, ohne das Profil anzutasten, das Sie gerade lesen.
log kürzt, log-append nicht
log kürzt eine vorhandene Datei, sobald die Anweisung greift, sodass ein Neustart die Beweise von davor auslöscht. log-append behält, was da ist, und fügt hinzu. Keine der beiden Optionen rotiert irgendetwas, und keine öffnet die Datei später von selbst neu, weshalb Rotation Zusammenarbeit braucht.
Wenn die Rotation die Datei umbenennt, während der Daemon weiter in den alten Deskriptor schreibt, bleibt die neue Datei leer, und der Plattenverbrauch steigt in der umbenannten weiter. Signalisieren Sie dem Prozess, neu zu öffnen, oder rotieren Sie mit einer Copy-Truncate-Strategie und akzeptieren Sie das Kopierfenster.
Verzeichnis, Eigentümer und Berechtigungen gehören zum Design. Der Daemon kann nach dem Start als unprivilegierter Benutzer laufen, und ein Verzeichnis, das root bei der Installation angelegt hat, ist dann vielleicht nicht beschreibbar. Bereiten Sie es über das Paket oder den Deployment-Prozess vor, statt Berechtigungen während eines Vorfalls zu reparieren.
Der Dienstmanager führt eine zweite Kopie
systemd fängt stdout und stderr standardmäßig ab, eine Unit ohne ausdrückliche Umleitung hat also bereits ein Log. Eine Dateianweisung hinzuzufügen ergibt zwei Ströme mit unterschiedlicher Aufbewahrung, unterschiedlichen Lesern und unterschiedlichen Zeitstempeln.
Das ist nicht automatisch falsch, aber es muss eine Entscheidung sein. Behalten Sie den Starteintrag im Journal, denn Fehler, bevor die konfigurierte Datei existiert, erscheinen nirgendwo sonst. Dann machen Sie die Datei für Ereignisse im Regelbetrieb maßgeblich und schreiben Sie das im Runbook. Zwei maßgebliche Ströme bedeuten zwei Antworten auf jede Frage.
Bestätigen Sie die Wahl mit einem Test, der absichtlich scheitert. Starten Sie den Daemon mit einem unlesbaren Zertifikat und prüfen Sie, welcher Strom den Fehler festhält.
Ausführlichkeit ist nicht dasselbe wie nutzbares Detail
Eine höhere verb-Stufe fügt mehr Zeilen hinzu, und ab einem Punkt Zeilen, die niemand liest. Stufe 3 ist für die meisten Installationen ein vernünftiger Regelzustand, während Stufe 4 und darüber zu einer begrenzten Untersuchung mit einer bekannten Frage passt. Wiederholungsunterdrückung verringert Rauschen, darf aber nicht verbergen, wie oft ein Ereignis wiederkehrt. Stellen Sie die Stufe ein, die Sie halten können, und erhöhen Sie sie nur für eine benannte Untersuchung mit einem Ende.
Behalten Sie Instanzidentität und Zeitstempel im Eintrag. Eine Wiederverbindung sieht genau wie eine erste Verbindung aus, wenn die Datei seit Monaten fortgeschrieben wird und der Instanzname fehlt.
Achten Sie darauf, was sonst noch in dieser Datei landet. Umgeleitete Ausgabe kann Text aus aufgerufenen Skripten enthalten, und ein Helfer, der seine Umgebung ausgibt, bringt Anmeldedaten und Schlüsselpfade in ein lesbares Log. Behandeln Sie den Log-Zugriff als Sicherheitsentscheidung, auch wenn der Daemon selbst nichts Sensibles ausgibt.
Rotation, Aufbewahrung und die Signale, die neu laden
Entscheiden Sie die Aufbewahrung mit der Person, der die Platte gehört, und legen Sie sie fest, bevor das Volume für Sie entscheidet. Ein Neuladesignal ist kein Befehl zur Log-Pflege: das falsche Signal startet den Tunnel neu und trennt jeden Benutzer. Schreiben Sie das Verfahren zum Wiederöffnen neben die Rotationsregel, damit die beiden nicht auseinanderdriften.
Das Ergebnis sollte ein Dienst sein, den ein Operator beschreiben kann: ein maßgeblicher Strom, jedes Ereignis im Lebenszyklus verortet, und ein Eintrag, den man erhält, ohne jede geheimnistragende Datei auf dem Host einzusammeln. Diese Beschreibung ist der Abnahmetest für das Design, und sie ist vor dem nächsten Vorfall billig zu prüfen.