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 журналга же файлга багыттаңыз жана жашоо циклин бирдикке калтырыңыз. Өлчөм чеги жок tee -a аркылуу кошкон shell цикл бузулуу учурунда бөлүмдү толтурган түзүлүш, анткени ийгиликсиз текшерүү соо текшерүүгө караганда көп жазат.

Таймерди күтпөстөн айландырууну текшериңиз

Мүчүлүштүктү оңдоо режими эмне болорун билдирет жана эч нерсеге тийбейт, бул аны оңдоодон кийинки коопсуз биринчи иштетүү кылат. Ыраазы болгондо чыныгы айландырууну мажбурлаңыз, анан кийинки журнал сабы кайра аталган файлга эмес, жаңы файлга түшөрүн ырастаңыз:

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 ичинде жашырылган эрежени эмес, жана эч кандай журнал түзүлүшү иштеп жаткан туннелди кайра иштетүүнүн себеби болбошу керек.

Тектеш макалалар