Rotacii protokolon de VPN-gardisto sen rompi la skribanton
Unue decidi la celon, poste agordi la rotacion al la maniero, kiel la skribanto malfermas la dosieron: renomi por mallongaj kontroloj, remalfermi aŭ copytruncate por daemono.
VPN-sana kontrolo, kiu aldonas unu linion ĉiuminute, kviete kreas duan devon: decidi, kiel tiuj linioj forlasas la diskon. Ripari la tunelon faras nenion por tiu devo, kaj renomi la dosieron ne plusendadas procezon, kiu ankoraŭ tenas la malnovan priskribilon. Unue respondu la demandon pri la celo, poste agordu la rotacion al la maniero, kiel la skribanto malfermas ĝin.
Elektu la celon antaŭ la rotacia politiko
systemd-unuo, kiu jam sendas sian eligon al la ĵurnalo, tenas la retenadon en unu loko. journald trudas limojn kiel SystemMaxUse kaj MaxRetentionSec , do gardisto, kiu protokolas tie, heredas limon sen iu ajn plia laboro. Aldoni duan nelimigitan dosieron apude duobligas la prizorgadon sen gajno.
Dedikita dosiero gajnas sian lokon, kiam io alia legas ĝin: sintaksa analizilo, revizia eksporto aŭ paĝo, kiu atendas stabilan vojon. Post kiam tiu decido estas farita, la dosiero bezonas posedanton, reĝimon kaj rotacian politikon skribitajn kune, ĉar la tri estas ĝustaj nur kiel aro. Vojo, kiun iu ajn povas krei, estas ankaŭ vojo, kiun iu ajn povas anstataŭigi, do la permesoj de la dosierujo apartenas al la sama noto. Skribu ĉion tion apud la kontrolo kaj la sekva redakto komenciĝos de la samaj faktoj.
Skribu la blokon por kongrui kun la skribanto
Komencu de skribanto, kiu malfermas la vojon ĉe ĉiu voko, aldonas linion kaj eliras. Tiu ŝablono postvivas rotacion sen iu ajn kunlaboro de la procezo, ĉar la sekva rulado malfermas la dosieron, kiu nun troviĝas sur tiu vojo. La suba bloko konservas unu semajnon da versioj kaj rekreas la dosieron kun la posedanto kaj reĝimo, kiujn la skribanto bezonas:
/var/log/vpn-watchdog.log {
daily
rotate 7
create 0600 root root
missingok
notifempty
}
La manlibro de logrotate difinas la nombron kiel la nombron de konservitaj rotaciitaj versioj, ne kiel garantion de sep tagoj da historio, kaj la ŝlosilvorto daily estas taksata kiam la tasko ruliĝas, anstataŭ agi kiel propra planilo. En la plej multaj distribuaĵoj, systemd-tajmilo aŭ cron-enskribo jam posedas tiun vokon, do kontrolu, kiu ekzistas antaŭ ol aldoni duan. Kongrui la posedrajton pli gravas ol la retenada nombro. Kopii reĝimon nur por root sur dosieron skribatan de serva konto haltigas protokoladon ĉe la sekva rotacio, kaj la malsukceso aperas horojn poste kiel kaduka tempindiko anstataŭ kiel eraro. Konfirmu la uzanton de la skribanto antaŭ ol kopii blokon de aliloke.
Skribanto, kiu neniam remalfermas, bezonas alian riparon
Longdaŭra procezo, kiu tenas malfermitan priskribilon, daŭre skribas al la renomita inodo. Spaco ne liberiĝas kaj la videbla dosiero ĉesas kreski, kio aspektas kiel rompita rotacio ĝis vi kontrolos la inodon. Aŭ instruu la procezon remalfermi, aŭ igi la rotacion kopii kaj tranĉi anstataŭ renomi.
La remalferma vojo estas la pli pura, kie la programaro subtenas ĝin: sendu la dokumentitan signalon aŭ rulu la dokumentitan komandon, kaj lasu la procezon malfermi la novan dosieron mem. La alternativo estas copytruncate , kiu kopias la enhavon al la rotaciita nomo kaj poste tranĉas la originalon surloke, do la priskribilo restas valida sed skriboj, kiuj falas inter la kopio kaj la tranĉo, perdiĝas.
Por unuoj komencitaj de systemd, direktu StandardOutput al la ĵurnalo aŭ al dosiero kaj lasu la unuon posedi la vivciklon. Ŝela buklo, kiu aldonas per tee -a sen grando-limo, estas la aranĝo, kiu plenigas dividon dum paneo, ĉar malsukcesa kontrolo ofte protokolas multe pli ol sana.
Testu la rotacion sen atendi la tajmilon
Sencimiga reĝimo raportas, kio okazus, kaj tuŝas nenion, kio igas ĝin la sekura unua rulado post redakto. Devigu realan rotacion, kiam vi kontentas, poste konfirmu, ke la sekva protokola linio alteriĝas en la nova dosiero anstataŭ en la renomita:
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
Legu la eligon laŭ tiu ordo. La sencimiga paso devus nomi la dosieron kaj la agojn, kiujn ĝi intencas; devigita rulado devus produkti la atenditan rotaciitan nomon; la vosto devus montri freŝan enskribon post kiam la skribanto denove ruliĝas. Kreskanta df-valoro kun malgrandiĝanta videbla dosiero signifas la priskribilan problemon priskribitan supre.
Ripetu la devigitan ruladon dufoje por vidi, kiel la retenado kondutas, kiam versioj jam ekzistas. Forigi la plej malnovan dosieron estas la atendata rezulto, kaj mankanta forigo kutime signifas, ke la nombro aŭ la ĵokera signo en la rotaciita nomo ne kongruas kun tio, kion logrotate kreis.
Konservu restarigon kaj skriban registron
Konservu la antaŭan blokon antaŭ redakto, kaj notu, kiu planilo rulas ĝin, ĉar restarigo, kiu riparas la dosieron sed ne la tajmilon, reproduktas duonon de la origina problemo. Rotaciu unufoje permane post la restarigo, poste konfirmu, ke la konto de la skribanto povas skribi al la protokola vojo. Se la servo ruliĝas sub systemd, reŝargu la unuon post iu ajn ŝanĝo de ĝia eliga plusendado, ĉar la kuranta procezo daŭre skribas al la malnova celo. Legu vi mem la sekvajn kelkajn protokolajn liniojn anstataŭ fidi, ke la unuo revenis pure.
Notu la reĝimon, la posedanton, la retenadan nombron kaj la atendantan diskbuĝeton apud la kontrolo mem. Kiam la kontrolo poste ŝanĝiĝos de unufoja skripto al daemono, la rotacia politiko devas ŝanĝiĝi kun ĝi, kaj tiu noto diras al la sekva persono, kiu supozo rompiĝis.
Fine, tenu la protokolan decidon aparte de la ripara decido. Malsukcesa sondado devus sekvi la propran ripan politikon de la konekto, ne regulon kaŝitan en logrotate, kaj neniu protokola aranĝo devus esti la kialo, ke funkcianta tunelo estos restartigita.