E VPN-Watchdog-Log rotéieren, ouni de Schreiber ze briechen
Bestëmmt als éischt den Zil, a passt dann d'Rotatioun un, wéi de Schreiber d'Datei opmécht: Ëmbenennen fir kuerz Kontrollen, Reoppen oder copytruncate fir en Daemon.
E VPN-Gesondheetscheck, dee mengemol eng Linn derbäi setzt, schaaft roueg eng zweet Flicht: ze entscheeden, wéi dës Linne vum Disk fortginn. Den Tunnel ze reparéieren ännert näischt un dëser Flicht, an d'Datei ëmzeennen leet net e Prozess ëm, deen nach den ale Deskriptor hält. Äntwert als éischt op d'Fro vum Zil, a passt dann d'Rotatioun un, wéi de Schreiber se opmécht.
Wielt den Zil virun der Rotatiounspolitik
Eng systemd-Eenheet, déi hir Ausgab schonn un de Journal schéckt, hält d'Aufbewahrung op enger Plaz. journald forcéiert Grenzen wéi SystemMaxUse an MaxRetentionSec , sou datt en Watchdog, deen do logt, eng Grenz ouni zousätzlech Aarbecht ierft. eng zweet onbegrenzt Datei derbäi ze setzen verduebelt d'Ënnerhalt ouni Gewënn.
Eng dedicéiert Datei verdéngt hir Plaz, wann eppes anescht se liest: e Parser, en Audit-Export oder eng Säit, déi en stabile Pad erwaart. Soubal dës Entscheedung gefall ass, brauch d'Datei en Eegentemer, e Modus an eng Rotatiounspolitik, déi zesummen opgeschriwwe gëtt, well déi dräi nëmmen als Saz richteg sinn. En Pad, deen ee jiddwereen uleeë kann, ass och en Pad, deen ee jiddwereen ersetze kann, dofir gehéieren d'Verzeechnesrechter an déiselwecht Notiz. Schreift dat alles nieft dem Check an déi nächst Ännerung fänkt mat deene selwechte Fakten un.
Schreift de Block passend zum Schreiber
Fänkt mat engem Schreiber un, deen de Pad bei all Opruff opmécht, eng Linn derbäi setzt an erausgeet. Dëst Muster iwwerlieft d'Rotatioun ouni all Zesummenaarbecht vum Prozess, well de nächste Laf déi Datei opmécht, déi just elo op deem Pad läit. De Block hei drënner hält eng Woch Versionen a mécht d'Datei mam Eegentemer an dem Modus nei, déi de Schreiber brauch:
/var/log/vpn-watchdog.log {
daily
rotate 7
create 0600 root root
missingok
notifempty
}
D'logrotate-Handbuch definéiert d'Zuel als d'Zuel vun de behaltene rotéierten Versiounen, net als Garantie vu siwen Deeg Geschicht, an d'Schlësselwuert daily gëtt ausgewäert, wann den Job leeft, amplaz als eegenen Zeitplanger ze handelen. Op de meeschte Verdeelungen huet en systemd-Timer oder en cron-Antrag schonn dësen Opruff, also préift, wéi en existéiert, ier dir en zweeten derbäi setzt. D'Eegentum richteg ze treffen ass méi wichteg wéi d'Aufbewahrungszuel. En nëmmen-root-Modus op eng Datei ze kopéieren, déi e Servicekont schreift, stoppt d'Loggen bei der nächster Rotatioun, an de Feeler erschéngt Stonnen méi spéit als veralteten Zäitstempel an net als Feeler. Bestätegt de Benotzer vum Schreiber, ier dir e Block soss uewe kopéiert.
E Schreiber, deen ni nees opmécht, brauch eng aner Léisung
En laang lafende Prozess, deen en oppenen Deskriptor hält, schreift weider an den ëmbenannten Inode. Plaz gëtt net fräi an déi sichtbar Datei hält op ze wuessen, wat wéi eng futti Rotatioun ausgesäit, bis dir den Inode préift. Entweder léiert dem Prozess d'Reoppen, oder maacht datt d'Rotatioun kopéiert an ofschneit amplaz ëmzeennen.
De Wee vum Reoppen ass deen propperen, wou d'Software en ënnerstëtzt: schéckt dat dokumentéiert Signal oder laaft den dokumentéierten Uerder, a loosst de Prozess déi nei Datei selwer opmaachen. D'Alternativ ass copytruncate , dat den Inhalt op den ëmbenannten Numm kopéiert an dann den Original op der Plaz ofschneit, sou datt den Deskriptor valabel bleift, awer Schreiwen tëscht der Kopie an dem Ofschneiden verluer geet.
Fir Eenheeten, déi vu systemd gestart ginn, richt StandardOutput op de Journal oder op eng Datei a loosst d'Eenheet de Liewenszyklus besëtzen. Eng Shell-Schleif, déi iwwer tee -a ouni Gréisstegrenz derbäi setzt, ass d'Anrichtung, déi eng Partition wärend enger Stéierung fëllt, well e feelenden Check dacks vill méi logt wéi en gesonden.
Test d'Rotatioun ouni op den Timer ze waarden
Den Debug-Modus mellt, wat geschitt, a beréiert näischt, wat en zum séchere éischte Laf no enger Ännerung mécht. Erzwéngt eng richteg Rotatioun, wann dir zefridde sidd, a bestätegt dann, datt déi nächst Loglinn an der neier Datei lant an net an der ëmbenannter:
logrotate -d /etc/logrotate.d/vpn-watchdog logrotate -f /etc/logrotate.d/vpn-watchdog ls -l /var/log/vpn-watchdog.log* tail -n 3 /var/log/vpn-watchdog.log df -h /var/log
Liest d'Ausgab an där Reihenfolg. Den Debug-Laf soll d'Datei an déi virgesinn Aktiounen nennen; en erzwongene Laf soll den erwaarten ëmbenannten Numm produzéieren; den Tail soll en neien Antrag weisen, nodeems de Schreiber nees leeft. En wuessende df-Wäert mat enger schrumpfender sichtbarer Datei bedeit de uewe beschriwwenen Deskriptorproblem.
Widderhëlt den erzwongene Laf zweemol, fir ze gesinn, wéi d'Aufbewahrung sech verhält, wann et schonn Versioune gëtt. Déi eelst Datei ze läschen ass dat erwaart Resultat, an eng feelend Läschung bedeit normalerweis, datt d'Zuel oder de Jokerzeechen am ëmbenannten Numm net mat deem iwwereneenstemmt, wat logrotate erstallt huet.
Halt eng Ëmkeer an eng schrëftlech Opzeechnung
Späichert de virege Block virum Änneren, a notéiert, wéi en Zeitplanger en ausféiert, well eng Ëmkeer, déi d'Datei, awer net den Timer restauréiert, d'Halschent vum urspréngleche Problem reproduzéiert. Rotéiert eemol vun Hand no der Restauratioun, a bestätegt dann, datt de Kont vum Schreiber op de Logpad schreiwe kann. Wann de Service ënner systemd leeft, luet d'Eenheet no all Ännerung un hirer Ausgabsëmleitung nei, well de lafende Prozess weider an den alen Zil schreift. Liest déi nächst Loglinne selwer, amplaz ze vertrauen, datt d'Eenheet propper zréckkomm ass.
Notéiert de Modus, den Eegentemer, d'Aufbewahrungszuel an de erwaarten Diskbudget nieft dem Check selwer. Wann de Check méi spéit vun engem eemolege Skript zu engem Daemon gëtt, muss d'Rotatiounspolitik mat him änneren, an déi Notiz ass et, déi der nächster Persoun seet, wéi eng Virgab gebrach ass.
Zum Schluss haalt d'Log-Entscheedung getrennt vun der Restauratiounsentscheedung. En feelenden Check soll der eegener Restauratiounspolitik vun der Verbindung follegen, net enger Reegel, déi am logrotate verstoppt ass, an keng Log-Anrichtung soll de Grond sinn, fir en funktionéierenden Tunnel nei ze starten.