OpenVPN günlükleri kime ait: daemon'a mı, rsyslog'a mı yoksa logrotate'e mi?
Tek yazar, tek döndürücü, tek saklama ilkesi. Önce yolu seçin, dar bir filtre için daemon'ı adlandırın ve yeniden açılışı tek bir döndürülmüş dosyayla kanıtlayın.
Günlük döndürme öngörülebilir bir biçimde bozulur: üç bileşenin her biri dosyayı kendisinin sandığını düşünür ve sonuç, yeni dosya boş kalırken büyümeye devam eden döndürülmüş bir günlüktür. Daemon bir tanıtıcı tutar, logrotate yolu yeniden adlandırır ve rsyslog bambaşka bir yere yazar. Yığına bir kural daha eklemeden önce bir yazar ve bir döndürücü seçin. Aşağıdaki kontrol listesi bu sırayla ilerler çünkü sonraki her adım ona bağlıdır.
Dosyayı kimin yazdığına karar verin
İki tasarım meşrudur. Birincisinde VPN süreci kendi log veya log-append seçeneğiyle dosyayı kendisi yazar. İkincisinde kayıtları sistem günlükçüsüne gönderir ve rsyslog ya da journald nereye düşeceklerine karar verir.
Bunlar katman değil alternatiftir. İkisini de açan bir ana makine birbiriyle uyuşmayan iki dosyayla kalır ve okuduğunuz genellikle eskimiş olandır. Yolu bilinçli seçin, ardından diğer yazarı kaldırın.
Herhangi bir şeyi değiştirmeden önce hizmetin geçerli yapılandırmasını okuyun; unit dosyasını geçersiz kılabilecek drop-in dosyaları da buna dahildir. Düzenlediğiniz profilde bulunan bir yönerge, onun çalışan sürecin yüklediği yönerge olduğunu kanıtlamaz. Uniti sürecin bağımsız değişkenleriyle, sonra gerçekte açtığı dosyalarla karşılaştırın.
Filtre dar kalabilsin diye daemon'ı adlandırın
syslog yolunda daemon'a ayrı bir kimlik verin ve ona göre filtreleyin. Bu VPN örneğinin program adıyla eşleşen bir kural, kayıtlarını saklama ilkesi başka bir şeye ait olan paylaşılan dosyanın dışında tutar.
Dar kurallar bir sonraki soruyu da yanıtlanabilir kılar: bu satırı hangi hizmet üretti? VPN sözcüğü geçen her şeyle eşleşen bir filtre ikinci tünelin trafiğini de seve seve toplar ve ikisini de bulanıklaştırır. Unitin günlükçüye verdiği tam tanımlayıcıyla eşleştirin.
Kayıtlar varsayılan hedefe de düşmesin diye kuralı eylemden sonra kapatın. İki dosyada yinelenen satırlar günlükleme hatası gibi görünür, aslında eksik bir durdurmadır. O tek eksiklik, saklama ilkesinin disk maliyetini de ikiye katlar.
Tanıtıcıyı kaybetmeden döndürün
Daemon dosyayı yazdığında logrotate yolu yeniden adlandırır ama süreç açık tanıtıcısını korur. Yeni kayıtlar bir şey süreci özgün yolu yeniden açmaya zorlayana kadar yeniden adlandırılmış dosyaya akmaya devam eder; bu yüzden döndürme çalışıyor gibi görünürken yeni dosya boş kalır.
Çözüm, hizmetin belgelenmiş yeniden yükleme veya yeniden başlatma davranışını tetikleyen bir postrotate eylemidir. Günlükçüye sinyal göndermek tamamen başka bir eylemdir ve kendi dosyasını tutan bir daemon için hiçbir şey yapmaz.
Yeniden açmanın olanaksız olduğu yerde copytruncate yedektir: dosyayı kopyalayın, sonra yerinde kesin. Tanıtıcıyı geçerli tutar ama kopya ile kesme arasında yazılan her şeyi kaybeder, yani çözüm değil takastır. Yük altında o boşluk tam da yakalamaya çalıştığınız arızayı yutabilir.
Her dosya için ikisinden birini seçin ve seçimi yazın, çünkü aynı yolda karıştırmak sonradan suçlaması çok zor boşluklar üretir. Tek bir dizinde iki deseni de bulan bir okur hangisinin yetkili olduğunu söyleyemez.
Saklamayı olay penceresinden belirleyin
Saklama, sıkıştırma ve en büyük boyut gerçekte ne kadar geriye baktığınızdan türetilmelidir. Sıkıştırma ve boyut sınırı olan yedi günlük bir pencere birçok kurulum için makul başlangıçtır; bir eğitimden kopyalanmış sayı değil.
İlkeyi tek yerde tutun. logrotate dosyayı döndürür ve rsyslog da döndürürse ikinci döndürme kazanır ve ilkinin adlandırma şeması dağınıklık olarak kalır. Sahibini seçin, diğer döndürmeyi kapatın ve bu kararı ilkenin yanına not edin.
rsyslog belgeleri yönlendirme ve eylem modelini kapsar, OpenVPN hizmeti belgeleri ise daemon'ın kendi günlükleme seçenekleri için yetkili kalır. İkisi de saklama ilkenizi sizin yerinize belirlemez.
Tek bir döndürmeyi ve tek bir yeni olayı sınayın
Tek bir döndürmeyi zorlayın ve ardından yeni bir olay üretin, örneğin başarısız bir kimlik doğrulama. Yeni kaydın yeni dosyada göründüğünü ve eski dosyanın büyümeyi kestiğini doğrulayın.
Yeni dosyanın izinlerine de bakın, çünkü onu başka bir sahiple yeniden oluşturan bir döndürme, sonraki yazmada yazarı kırar ve çökme gibi görünen bir boşluk üretir. Ayrılmadan önce sahibi ve kipi hizmet hesabıyla karşılaştırın. Sonra sıkıştırılmış arşivin okunabildiğini doğrulayın, çünkü kimsenin açamadığı arşiv saklama değildir. Eski dosyadaki en yeni kaydın hızlıca okunması hem sıkıştırmayı hem izinleri kanıtlar.
Her adımın sahibini yazarak bitirin: hangi bileşen yazıyor, hangisi döndürüyor ve saklama ilkesi nerede yaşıyor. Bu not, sonraki günlükleme olayını hangi katmanın satırı düşürdüğünü tahmin ederek geçirilen bir öğleden sonra yerine beş dakikalık bir kontrole dönüştürür.