Պտտել VPN հսկիչի մատյանը՝ չկոտրելով գրողին
Նախ որոշեք ստացողը, ապա պտտումը համապատասխանեցրեք նրան, թե ինչպես է գրողը բացում ֆայլը՝ վերանվանում կարճ ստուգումների համար, վերաբացում կամ copytruncate՝ դեմոնի համար։
VPN-ի առողջության ստուգումը, որը ամեն րոպե մեկ տող է ավելացնում, լուռ ստեղծում է երկրորդ պարտականություն՝ որոշել, թե ինչպես են այդ տողերը լքում սկավառակը։ Թունելը վերանորոգելը ոչինչ չի անում այդ պարտականության համար, իսկ ֆայլը վերանվանելը չի վերաուղղորդում գործընթացը, որը դեռ պահում է հին նկարագրիչը։ Նախ պատասխանեք ստացողի հարցին, ապա պտտումը համապատասխանեցրեք նրան, թե ինչպես է գրողը բացում այն։
Ստացողն ընտրեք պտտման քաղաքականությունից առաջ
systemd միավորը, որն արդեն իր ելքը ուղարկում է մատյան, պահպանումը պահում է մեկ տեղում։ journald-ը կիրառում է սահմաններ, ինչպիսիք են SystemMaxUse և MaxRetentionSec , ուստի այնտեղ գրանցող հսկիչը ժառանգում է սահման առանց լրացուցիչ աշխատանքի։ Կողքին երկրորդ անսահմանափակ ֆայլ ավելացնելը կրկնապատկում է պահպանումը՝ առանց օգուտի։
Առանձին ֆայլը վաստակում է իր տեղը, երբ ուրիշ բան կարդում է այն՝ վերլուծիչ, աուդիտի արտահանում կամ էջ, որը սպասում է կայուն ուղու։ Այդ որոշումից հետո ֆայլին պետք են տեր, ռեժիմ և պտտման քաղաքականություն, որոնք գրվում են միասին, որովհետև երեքը ճիշտ են միայն որպես հավաքածու։ Ուղին, որը կարող է ստեղծել ցանկացածը, նաև ուղի է, որը կարող է փոխարինել ցանկացածը, ուստի պանակի թույլտվությունները պատկանում են նույն նշումին։ Գրեք այդ ամենը ստուգման կողքին, և հաջորդ խմբագրումը կսկսվի նույն փաստերից։
Գրեք բլոկը գրողին համապատասխան
Սկսեք գրողից, որը բացում է ուղին ամեն կանչի ժամանակ, ավելացնում է տող և դուրս գալիս։ Այդ ձևը վերապրում է պտտումը առանց գործընթացի որևէ համագործակցության, որովհետև հաջորդ գործարկումը բացում է այն ֆայլը, որն այդ պահին գտնվում է այդ ուղու վրա։ Ստորև բլոկը պահում է մեկ շաբաթ տարբերակներ և վերստեղծում է ֆայլը գրողին անհրաժեշտ տիրոջ և ռեժիմի հետ:
/var/log/vpn-watchdog.log {
daily
rotate 7
create 0600 root root
missingok
notifempty
}
logrotate-ի ձեռնարկը քանակը սահմանում է որպես պահվող պտտված տարբերակների թիվ, այլ ոչ թե որպես յոթ օրվա պատմության երաշխիք, և daily բանալի բառը գնահատվում է աշխատանքի գործարկման պահին՝ փոխարենը ինքնուրույն պլանավորիչ լինելու։ Հետադարձումների մեծ մասում systemd ժամաչափը կամ cron գրառումը արդեն տիրում է այդ կանչին, ուստի ստուգեք, թե որն է գոյություն ունի, նախքան երկրորդը ավելացնելը։ Տիրապետության համընկնումը ավելի կարևոր է, քան պահպանման քանակը։ Միայն root-ի ռեժիմը ծառայության հաշվի գրած ֆայլի վրա պատճենելը դադարեցնում է գրանցումը հաջորդ պտտման ժամանակ, և ձախողումը երևում է ժամեր անց որպես հնացած ժամադրոշմ, այլ ոչ թե որպես սխալ։ Հաստատեք գրողի օգտատիրոջը, նախքան այլ տեղից բլոկ պատճենելը։
Գրողը, որը երբեք չի վերաբացվում, այլ լուծում է պահանջում
Երկար գործող գործընթացը, որը պահում է բաց նկարագրիչ, շարունակում է գրել վերանվանված inode-ին։ Տարածքը չի ազատվում, և տեսանելի ֆայլը դադարում է աճել, ինչը կոտրված պտտման տեսք ունի, մինչև չստուգեք inode-ը։ Կամ սովորեցրեք գործընթացին վերաբացվել, կամ ստիպեք պտտմանը պատճենել և կտրել՝ վերանվանելու փոխարեն։
Վերաբացման ուղին ավելի մաքուր է այնտեղ, որտեղ ծրագիրը դա աջակցում է՝ ուղարկեք փաստաթղթավորված ազդանշանը կամ գործարկեք փաստաթղթավորված հրամանը, և թող գործընթացն ինքը բացի նոր ֆայլը։ Այլընտրանքը copytruncate է, որը բովանդակությունը պատճենում է պտտված անվան վրա, ապա կտրում բնօրինակը տեղում, այնպես որ նկարագրիչը մնում է վավեր, բայց պատճենման և կտրման միջև ընկած գրառումները կորչում են։
systemd-ի կողմից սկսված միավորների համար StandardOutput-ը ուղղեք մատյանին կամ ֆայլին, և թող միավորը տիրի կյանքի ցիկլին։ Shell-ի հանգույցը, որն ավելացնում է tee -a-ի միջոցով առանց չափի սահմանի, այն դասավորությունն է, որը խափանման ժամանակ լցնում է բաժինը, որովհետև ձախողված ստուգումը հաճախ գրանցում է շատ ավելին, քան առողջը։
Փորձարկեք պտտումը՝ չսպասելով ժամաչափին
Վրիպազերծման ռեժիմը հաղորդում է, թե ինչ կլիներ, և ոչնչի չի դիպչում, ինչը դարձնում է այն խմբագրումից հետո առաջին անվտանգ գործարկումը։ Երբ գոհ եք, ստիպեք իրական պտտում, ապա հաստատեք, որ հաջորդ մատյանի տողը ընկնում է նոր ֆայլի մեջ, այլ ոչ վերանվանվածի:
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
Կարդացեք ելքը այդ հերթականությամբ։ Վրիպազերծման անցումը պետք է անվանի ֆայլը և նախատեսված գործողությունները. հարկադիր գործարկումը պետք է արտադրի ակնկալվող պտտված անունը. tail-ը պետք է ցույց տա թարմ գրառում այն բանից հետո, երբ գրողը նորից գործարկվի։ Աճող df արժեքը և նվազող տեսանելի ֆայլը նշանակում են վերը նկարագրված նկարագրիչի խնդիրը։
Կրկնեք հարկադիր գործարկումը երկու անգամ՝ տեսնելու, թե ինչպես է պահպանումը վարվում, երբ տարբերակներն արդեն գոյություն ունեն։ Ամենահին ֆայլը ջնջելը ակնկալվող արդյունքն է, և բացակայող ջնջումը սովորաբար նշանակում է, որ պտտված անվան մեջ քանակը կամ նիշը չեն համապատասխանում logrotate-ի ստեղծածին։
Պահպանեք հետադարձի հնարավորություն և գրավոր արձանագրություն
Խմբագրելուց առաջ պահպանեք նախորդ բլոկը և նշեք, թե որ պլանավորիչն է գործարկում այն, որովհետև ֆայլը վերականգնող, բայց ժամաչափը ոչ՝ հետադարձը վերարտադրում է սկզբնական խնդրի կեսը։ Վերականգնումից հետո մեկ անգամ ձեռքով պտտեք, ապա հաստատեք, որ գրողի հաշիվը կարող է գրել մատյանի ուղու վրա։ Եթե ծառայությունը գործում է systemd-ի ներքո, վերաբեռնեք միավորը դրա ելքի վերաուղղորդման ցանկացած փոփոխությունից հետո, որովհետև գործող գործընթացը շարունակում է գրել հին նպատակակետին։ Ինքներդ կարդացեք հաջորդ մի քանի մատյանի տողերը՝ փոխարենը վստահելու, որ միավորը մաքուր վերադարձավ։
Գրանցեք ռեժիմը, տերոջը, պահպանման քանակը և ակնկալվող սկավառակի բյուջեն հենց ստուգման կողքին։ Երբ հետագայում ստուգումը մեկանգամյա սկրիպտից դառնա դեմոն, պտտման քաղաքականությունը պետք է փոխվի նրա հետ, և այդ նշումն է, որ հաջորդ մարդուն ասում է, թե որ ենթադրությունը կոտրվեց։
Վերջապես, մատյանի որոշումը առանձին պահեք վերականգնման որոշումից։ Ձախողված ստուգումը պետք է հետևի կապի սեփական վերականգնման քաղաքականությանը, ոչ թե logrotate-ի մեջ թաքնված կանոնին, և ոչ մի գրանցման դասավորություն չպետք է լինի աշխատող թունելը վերագործարկելու պատճառ։