En loggdesign besvarar tre frågor: vilken process som skapade en post, var posten hamnar och hur länge den överlever. OpenVPN kan skriva till en fil, lämna meddelanden till systemloggaren eller lämna dem till det tjänstehanteraren fångar, och det är inte tre kopior av en och samma ström. Varje val ändrar vem som äger rotationen, vilken användare som kan läsa resultatet och vad som händer vid start. Bestäm svaren före en incident, för efteråt ärver du det som är konfigurerat.

Vad daemonen faktiskt gör med direktivet

Direktiven är inga abstraktioner; var och en avgör var processen skriver sina meddelanden. log /path öppnar filen, log-append /path öppnar den för tillägg och syslog lämnar meddelanden till den lokala systemloggaren via sin socket. Utan något av dem går utdata till standardutdata och tjänstehanteraren avgör vad som händer sedan. Läs den effektiva uniten och profilen tillsammans innan du drar slutsatsen att daemonen ignorerar din konfiguration.

Det sista fallet är det vanliga vid en paketerad installation, och det förklarar varför två administratörer är oense om var loggen bor. Den ene läser unitens journal, den andre en fil som daemonen aldrig skrev.

Kontrollera den körande konfigurationen i stället för filen på disk. En drop-in-override för uniten eller en miljöfil kan ändra det effektiva direktivet utan att röra profilen du läser.

log trunkerar, log-append gör det inte

log trunkerar en befintlig fil när direktivet träder i kraft, så en omstart raderar bevisen från tiden före. log-append behåller det som finns och lägger till. Ingen av dem roterar något, och ingen av dem öppnar filen igen på egen hand senare, vilket är därför rotation behöver samarbete.

Om rotationen byter namn på filen medan daemonen fortsätter skriva till den gamla deskriptorn, förblir den nya filen tom och diskanvändningen fortsätter växa i den omdöpta. Signala processen att öppna igen, eller rotera med en kopiera-och-trunkera-strategi och acceptera kopieringsfönstret.

Katalogen, ägandet och behörigheterna är en del av designen. Daemonen kan köra som oprivilegierad användare efter starten, och en katalog som root skapade vid installationen är då kanske inte skrivbar. Förbered den via paketeringen eller distributionsprocessen i stället för att laga behörigheter under en incident.

Tjänstehanteraren har en andra kopia

systemd fångar standardutdata och standardfel som standard, så en unit utan explicit omdirigering har redan en logg. Att lägga till ett fildirektiv ger två strömmar med olika retention, läsare och tidsstämplar.

Det är inte automatiskt fel, men det måste vara ett beslut. Behåll startposten i journalen, för fel innan den konfigurerade filen finns syns ingen annanstans. Gör sedan filen auktoritativ för händelser i drift och skriv det i runbooken. Två auktoritativa strömmar betyder två svar på varje fråga.

Bekräfta valet med ett test som misslyckas med flit. Starta daemonen med ett oläsbart certifikat och kontrollera vilken ström som registrerar felet.

Utförlighet är inte samma sak som användbar detalj

En högre verb-nivå lägger till fler rader, och efter en punkt rader som ingen läser. Nivå 3 är ett rimligt normalläge för de flesta installationer, medan nivå 4 och högre passar en avgränsad undersökning med en känd fråga. Repetitionsdämpning minskar brus, men får inte dölja hur ofta en händelse återkommer. Sätt den nivå du kan hålla, och höj den bara för en namngiven undersökning med ett slut.

Behåll instansidentitet och tidsstämplar i posten. En återanslutning ser exakt ut som en första anslutning när filen har fyllts på i månader och instansnamnet saknas.

Var försiktig med vad mer som hamnar i filen. Omdirigerad utdata kan innehålla text från anropade skript, och ett hjälpprogram som skriver ut sin miljö sätter autentiseringsuppgifter och nyckelsökvägar i en läsbar logg. Behandla loggåtkomst som ett säkerhetsbeslut även när daemonen själv inte skriver ut något känsligt.

Rotation, retention och signalerna som laddar om

Bestäm retentionen med den som äger disken, och sätt den innan volymen bestämmer åt dig. En omladdningssignal är inte ett loggunderhållskommando: fel signal startar om tunneln och kopplar från varje användare. Skriv återöppningsproceduren bredvid rotationsregeln så att de två inte glider isär.

Resultatet bör vara en tjänst som en operatör kan beskriva: en auktoritativ ström, varje händelse placerad i livscykeln och en post som går att få utan att samla in varje hemlighetsbärande fil på värden. Den beskrivningen är acceptanstestet för designen, och den är billig att kontrollera före nästa incident.

Relaterade artiklar