VPN qo‘riqchisi jurnalini yozuvchini buzmasdan aylantirish
Avval manzilni tanlang, so‘ngra aylantirishni yozuvchi faylni qanday ochishiga moslang: qisqa tekshiruvlar uchun qayta nomlash, daemon uchun qayta ochish yoki copytruncate.
VPN salomatligini tekshirish har daqiqada bitta satr qo‘shib, jimgina ikkinchi vazifani yaratadi: bu satrlar diskdan qanday chiqishini hal qilish. Tunnelni tuzatish bu vazifaga hech narsa qilmaydi va fayl nomini o‘zgartirish hali eski deskriptorni ushlab turgan jarayonni qayta yo‘naltirmaydi. Avval manzil savoliga javob bering, so‘ngra aylantirishni yozuvchi uni qanday ochishiga moslang.
Aylantirish siyosatidan oldin manzilni tanlang
Chiqishini allaqachon jurnalga yuboradigan systemd birligi saqlashni bir joyda ushlab turadi. journald SystemMaxUse va MaxRetentionSec kabi cheklovlarni qo‘llaydi, shuning uchun u yerda log yuritadigan qo‘riqchi qo‘shimcha ishsiz chegara oladi. Uning yoniga ikkinchi cheksiz fayl qo‘shish foydasiz xizmat ko‘rsatishni ikki barobar oshiradi.
Ajratilgan fayl o‘z o‘rnini boshqa narsa uni o‘qiganda oladi: tahlilchi, audit eksporti yoki barqaror yo‘lni kutayotgan sahifa. Bu qaror qabul qilingandan so‘ng faylga egasi, rejimi va aylantirish siyosati birgalikda yozilishi kerak, chunki uchtasi faqat to‘plam sifatida to‘g‘ri. Har kim yaratishi mumkin bo‘lgan yo‘lni har kim almashtirishi ham mumkin, shuning uchun katalog ruxsatlari ham shu eslatmaga kiradi. Bularning barchasini tekshiruv yoniga yozing, keyingi tahrir shu faktlardan boshlanadi.
Blokni yozuvchiga moslab yozing
Har bir chaqiruvda yo‘lni ochadigan, bitta satr qo‘shadigan va chiqadigan yozuvchidan boshlang. Bu andoza jarayonning hech qanday ko‘magisiz aylantirishdan omon qoladi, chunki keyingi ishga tushirish o‘sha yo‘lda hozir turgan faylni ochadi. Quyidagi blok bir haftalik versiyalarni saqlaydi va faylni yozuvchiga kerak bo‘lgan egasi va rejimi bilan qayta yaratadi:
/var/log/vpn-watchdog.log {
daily
rotate 7
create 0600 root root
missingok
notifempty
}
logrotate qo‘llanmasi sonni saqlanadigan aylantirilgan versiyalar soni sifatida belgilaydi, yetti kunlik tarix kafolati sifatida emas, va daily kalit so‘zi o‘z rejalashtiruvchisi bo‘lib ishlash o‘rniga vazifa bajarilganda baholanadi. Aksariyat distributivlarda systemd taymeri yoki cron yozuvi bu chaqiruvga allaqachon ega, shuning uchun ikkinchisini qo‘shishdan oldin qaysi biri borligini tekshiring. Egalikni moslashtirish saqlash sonidan muhimroq. Faqat root uchun rejimni xizmat hisobi yozadigan faylga nusxalash keyingi aylantirishda log yozishni to‘xtatadi va nosozlik soatlardan keyin xato sifatida emas, eskirgan vaqt belgisi sifatida ko‘rinadi. Blokni boshqa joydan nusxalashdan oldin yozuvchining foydalanuvchisini tasdiqlang.
Hech qachon qayta ochmaydigan yozuvchi boshqa chora talab qiladi
Ochiq deskriptorni ushlab turgan uzoq muddatli jarayon qayta nomlangan inodega yozishda davom etadi. Joy bo‘shamaydi va ko‘rinadigan fayl o‘sishdan to‘xtaydi, bu inode ni tekshirmaguningizcha buzilgan aylantirish kabi ko‘rinadi. Yoki jarayonga qayta ochishni o‘rgating, yoki aylantirishni qayta nomlash o‘rniga nusxalab kesishga majbur qiling.
Qayta ochish yo‘li dasturiy ta‘minot qo‘llab-quvvatlagan joyda tozaroq: hujjatlashtirilgan signalni yuboring yoki hujjatlashtirilgan buyruqni bajaring, va jarayon yangi faylni o‘zi ochsin. Muqobil — copytruncate , u tarkibni aylantirilgan nomga nusxalaydi va keyin asl nusxani o‘z joyida kesadi, shuning uchun deskriptor haqiqiy qoladi, lekin nusxalash va kesish o‘rtasidagi yozuvlar yo‘qoladi.
systemd ishga tushirgan birliklar uchun StandardOutput ni jurnalga yoki faylga yo‘naltiring va hayot tsiklini birlikning o‘ziga qoldiring. Hajm chegarasisiz tee -a orqali qo‘shadigan shell sikli uzilish paytida bo‘limni to‘ldiradigan tuzilma, chunki muvaffaqiyatsiz tekshiruv sog‘lomidan ancha ko‘p yozadi.
Taymerni kutmasdan aylantirishni sinab ko‘ring
Nosozliklarni tuzatish rejimi nima bo‘lishini aytadi va hech narsaga tegmaydi, bu uni tahrirdan keyingi xavfsiz birinchi ishga tushirishga aylantiradi. Qanoatlansangiz haqiqiy aylantirishni majburlang, so‘ngra keyingi log satri qayta nomlangan faylga emas, yangi faylga tushishini tasdiqlang:
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
Chiqishni shu tartibda o‘qing. Nosozliklarni tuzatish bosqichi fayl va ko‘zda tutilgan amallarni nomlashi kerak; majburiy ishga tushirish kutilgan aylantirilgan nomni hosil qilishi kerak; tail yozuvchi qayta ishlagandan keyin yangi yozuvni ko‘rsatishi kerak. O‘sib borayotgan df qiymati va kichrayayotgan ko‘rinadigan fayl yuqorida tasvirlangan deskriptor muammosini bildiradi.
Versiyalar allaqachon mavjud bo‘lganda saqlash qanday ishlashini ko‘rish uchun majburiy ishga tushirishni ikki marta takrorlang. Eng eski faylni o‘chirish kutilgan natija, va o‘chirishning yo‘qligi odatda aylantirilgan nomdagi son yoki joker belgi logrotate yaratganiga mos kelmasligini bildiradi.
Orqaga qaytarish va yozma qaydni saqlang
Tahrirdan oldin oldingi blokni saqlang va uni qaysi rejalashtiruvchi ishga tushirishini qayd eting, chunki faylni qaytarib, taymerni qaytarmaydigan orqaga qaytarish asl muammoning yarmini takrorlaydi. Tiklashdan keyin bir marta qo‘lda aylantiring, so‘ngra yozuvchining hisobi log yo‘liga yozishi mumkinligini tasdiqlang. Agar xizmat systemd ostida ishlasa, uning chiqishini qayta yo‘naltirishdagi har qanday o‘zgarishdan keyin birlikni qayta yuklang, chunki ishlab turgan jarayon eski nishonga yozishda davom etadi. Birlik toza qaytdi deb ishonish o‘rniga keyingi bir necha log satrini o‘zingiz o‘qing.
Rejim, egasi, saqlash soni va kutilgan disk byudjetini tekshiruvning yoniga yozib qo‘ying. Keyinchalik tekshiruv bir martalik skriptdan daemonga aylanganda, aylantirish siyosati ham u bilan o‘zgarishi kerak, va o‘sha eslatma keyingi odamga qaysi taxmin buzilganini aytadi.
Nihoyat, log qarorini tiklash qaroridan alohida saqlang. Muvaffaqiyatsiz tekshiruv ulanishning o‘z tiklash siyosatiga amal qilishi kerak, logrotate ichida yashiringan qoidaga emas, va hech qanday log tartibi ishlab turgan tunnelni qayta ishga tushirish sababi bo‘lmasligi kerak.