Cylchdroi log gwyliwr VPN heb dorri’r ysgrifennwr
Penderfynwch ar y sinc yn gyntaf, yna gwnewch y cylchdroi’n cyd-fynd â’r ffordd y mae’r ysgrifennwr yn agor y ffeil: ailenwi ar gyfer gwiriadau byrhoedlog, ailagor neu copytruncate ar gyfer daemon.
Mae gwiriad iechyd VPN sy’n ychwanegu un llinell y funud yn creu ail ddyletswydd yn dawel: penderfynu sut mae’r llinellau hynny’n gadael y disg. Nid yw trwsio’r twnnel yn gwneud dim i’r ddyletswydd honno, ac nid yw ailenwi’r ffeil yn ailgyfeirio proses sy’n dal yr hen ddisgrifydd. Atebwch gwestiwn y sinc yn gyntaf, yna gwnewch y cylchdroi’n cyd-fynd â’r ffordd y mae’r ysgrifennwr yn ei agor.
Dewiswch y sinc cyn y polisi cylchdroi
Mae uned systemd sy’n anfon ei hallbwn i’r cylchgrawn yn barod yn cadw’r cadw mewn un man. Mae journald yn gorfodi terfynau fel SystemMaxUse a MaxRetentionSec , felly mae gwyliwr sy’n logio yno yn etifeddu terfyn heb unrhyw waith ychwanegol. Mae ychwanegu ail ffeil heb derfyn wrth ei hymyl yn dyblu’r cynnal a chadw heb unrhyw fudd.
Mae ffeil bwrpasol yn ennill ei lle pan fydd rhywbeth arall yn ei darllen: dosrannydd, allforiad archwilio, neu dudalen sy’n disgwyl llwybr sefydlog. Ar ôl gwneud y penderfyniad hwnnw, mae angen perchennog, modd a pholisi cylchdroi ar y ffeil wedi’u hysgrifennu gyda’i gilydd, oherwydd dim ond fel set y mae’r tri yn gywir. Mae llwybr y gall unrhyw un ei greu hefyd yn llwybr y gall unrhyw un ei ddisodli, felly mae caniatâd y cyfeiriadur yn perthyn i’r un nodyn. Ysgrifennwch y cyfan wrth ymyl y gwiriad a bydd y golygiad nesaf yn dechrau o’r un ffeithiau.
Ysgrifennwch y bloc i gyd-fynd â’r ysgrifennwr
Dechreuwch gydag ysgrifennwr sy’n agor y llwybr ar bob galwad, yn ychwanegu llinell ac yn gadael. Mae’r patrwm hwnnw’n goroesi cylchdroi heb unrhyw gydweithrediad gan y broses, oherwydd bydd y rhediad nesaf yn agor pa bynnag ffeil sydd ar y llwybr hwnnw ar hyn o bryd. Mae’r bloc isod yn cadw wythnos o fersiynau ac yn ail-greu’r ffeil gyda’r perchennog a’r modd sydd eu hangen ar yr ysgrifennwr:
/var/log/vpn-watchdog.log {
daily
rotate 7
create 0600 root root
missingok
notifempty
}
Mae llawlyfr logrotate yn diffinio’r cyfrif fel nifer y fersiynau cylchdroi a gedwir, nid fel gwarant o saith niwrnod o hanes, ac mae’r gair allweddol daily yn cael ei werthuso pan fydd’r swydd yn rhedeg yn hytrach nag actio fel ei drefnydd ei hun. Ar y rhan fwyaf o ddosbarthiadau mae amserydd systemd neu gofnod cron eisoes yn berchen ar y galwad honno, felly gwiriwch pa un sy’n bodoli cyn ychwanegu ail. Mae cyfateb perchnogaeth yn bwysicach na’r cyfrif cadw. Mae copïo modd ar gyfer root yn unig ar ffeil a ysgrifennwyd gan gyfrif gwasanaeth yn atal logio yn y cylchdro nesaf, ac mae’r methiant yn ymddangos oriau’n ddiweddarach fel stamp amser hen ffasiwn yn hytrach nag fel gwall. Cadarnhewch ddefnyddiwr yr ysgrifennwr cyn copïo bloc o rywle arall.
Mae angen trwsio gwahanol ar ysgrifennwr nad yw byth yn ailagor
Mae proses hir ei hoes sy’n dal disgrifydd agored yn parhau i ysgrifennu i’r inode a ail-enwyd. Nid yw lle’n cael ei ryddhau ac mae’r ffeil weladwy yn stopio tyfu, sy’n edrych fel cylchdroi wedi torri nes i chi wirio’r inode. Naill ai dysgwch y broses i ailagor, neu gwnewch i’r cylchdroi gopïo ac tocio yn lle ailenwi.
Y llwybr ailagor yw’r un glanach lle mae’r meddalwedd yn ei gefnogi: anfonwch y signal a gofnodwyd neu rhedegwch y gorchymyn a gofnodwyd, a gadewch i’r broses agor y ffeil newydd ei hun. Y dewis arall yw copytruncate , sy’n copïo’r cynnwys i’r enw cylchdroi ac yna’n tocio’r gwreiddiol yn ei le, felly mae’r disgrifydd yn parhau’n ddilys ond mae’r ysgrifau sy’n glanio rhwng y copi a’r tocio yn cael eu colli.
Ar gyfer unedau a gychwynnir gan systemd, pwyntiwch StandardOutput at y cylchgrawn neu at ffeil a gadewch i’r uned berchen ar y cylch bywyd. Dolen shell sy’n ychwanegu drwy tee -a heb unrhyw derfyn maint yw’r drefn sy’n llenwi rhaniad yn ystod diffyg, oherwydd mae gwiriad sy’n methu yn aml yn logio llawer mwy na gwiriad iach.
Profwch y cylchdroi heb aros am yr amserydd
Mae modd dadfygio’n adrodd beth fyddai’n digwydd ac yn cyffwrdd â dim, sy’n ei wneud yn rhediad cyntaf diogel ar ôl golygiad. Gorfodwch gylchdroi go iawn unwaith y byddwch yn fodlon, yna cadarnhewch fod y llinell log nesaf yn glanio yn y ffeil newydd yn hytrach na’r un a ail-enwyd:
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
Darllenwch yr allbwn yn y drefn honno. Dylai’r pas dadfygio enwi’r ffeil a’r gweithredoedd y mae’n bwriadu eu gwneud; dylai rhediad gorfodedig gynhyrchu’r enw cylchdroi roeddech yn ei ddisgwyl; dylai’r gynffon ddangos cofnod newydd ar ôl i’r ysgrifennwr redeg eto. Mae gwerth df sy’n tyfu gyda ffeil weladwy sy’n crebachu yn golygu’r broblem disgrifydd a ddisgrifiwyd uchod.
Ailadroddwch y rhediad gorfodedig ddwywaith i weld sut mae’r cadw’n ymddwyn pan fydd fersiynau eisoes yn bodoli. Dileu’r ffeil hynaf yw’r canlyniad disgwyliedig, ac mae dileu ar goll fel arfer yn golygu nad yw’r cyfrif na’r nod gwyllt yn yr enw cylchdroi yn cyfateb i’r hyn a grëwyd gan logrotate.
Cadwch ffordd yn ôl a chofnod ysgrifenedig
Cadwch y bloc blaenorol cyn golygu, a nodwch pa drefnydd sy’n ei redeg, oherwydd mae adferiad sy’n adfer y ffeil ond nid yr amserydd yn atgynhyrchu hanner y broblem wreiddiol. Cylchdrowch unwaith â llaw ar ôl adfer, yna cadarnhewch fod cyfrif yr ysgrifennwr yn gallu ysgrifennu i’r llwybr log. Os yw’r gwasanaeth yn rhedeg o dan systemd, ail-lwythwch yr uned ar ôl unrhyw newid i’w hailgyfeirio allbwn, oherwydd mae’r broses sy’n rhedeg yn parhau i ysgrifennu i’r hen darged. Darllenwch ychydig o’r llinellau log nesaf eich hun yn hytrach na dibynnu bod yr uned wedi dychwelyd yn lân.
Cofnodwch y modd, y perchennog, y cyfrif cadw a’r gyllideb disg a ddisgwylir wrth ymyl y gwiriad ei hun. Pan fydd y gwiriad yn newid yn ddiweddarach o sgript un-tro i ddaemon, mae’n rhaid i’r polisi cylchdroi newid gyda hi, a’r nodyn hwnnw sy’n dweud wrth y person nesaf pa dybiaeth a dorrwyd.
Yn olaf, cadwch y penderfyniad log ar wahân i’r penderfyniad adfer. Dylai gwiriad sydd wedi methu ddilyn polisi adfer y cysylltiad ei hun, nid rheol wedi’i chuddio y tu mewn i logrotate, ac ni ddylai unrhyw drefn logio fod yn rheswm dros ailgychwyn twnnel sy’n gweithio.