Linux'ta genel loglama / logrotasyon hakkında bilgi edinme?


13

Apache web sunucusu günlüklerinin yanında, herhangi bir işletim sisteminde herhangi bir (profesyonel) günlükle hiç iletişimim olmadığını varsayalım. Dolayısıyla, Logging, bazı temel bilgileri anlasam da, hep birlikte oldukça yeni bir konudur. Şu anda bu konuyu tam olarak öğrenmeye yönelik yatırım oldukça büyük görünüyor, ancak en soyut kavramlardan daha fazlasını bilmeye değer olsa bile henüz bilmiyorum.

Günlük tutma hakkında bilgi edinmek için bu durumdaki birisinin (öğreticiler, man sayfaları, kitaplar) tüketmesi gereken hangi kaynakları önerirsiniz?

Normal bir Linux kullanıcısı günlük / aylık olarak hangi günlükleri okumalıdır? İnsanların okunabilirliği için yazıldıkları varsayımı doğru mu yoksa genel olarak başka araçlar tarafından değerlendirilip kullanılıyor mu?

Normal * nix kullanıcısı ve yazılım geliştiricisi bu günlükler hakkında ne bilmelidir?

Çok sayıda etkinlik içeren profesyonel web sunucularını yönetmeniz beklenmiyorsa, günlük döndürme hakkında bilmeniz gerekenler nelerdir?


Ben (ya da siz) başlığını, aslında aynı soru olduğu için “ubuntu” yerine “linux üzerinde” okumak için düzenler miyim? Bu şekilde , "kemer üzerinde öğrenme günlüğü", "centOS üzerinde öğrenme günlüğü" vb. Hakkında kapalı yinelenen sorularla sonuçlanma ihtimalimiz daha düşüktür
goldilocks

Cevaplar iyi olduğu sürece bu tür değişiklikleri umursamıyorum :)
erikbwork

Yanıtlar:


18

[Bu, dergi sistemd sistemleri üzerinde yaygın olarak benimsenmesinden birkaç yıl önce yazılmıştır ve buna dokunmaz. Şu anda (geç 2018) , her iki aşağıda tarif journald ve (r) syslog, Debian gibi dağıtımlar kullanılır. Diğerlerinde, birlikte kullanmak istiyorsanız rsyslog'u yüklemeniz gerekebilir, ancak journal ile entegrasyon basittir.]

Konu genel olarak linux için standartlaştırıldığı için ubuntu ile ilgili olarak günlük kaydını tartışmayacağım (ve söylemek istediğim şeylerin çoğunun veya hepsinin genel olarak herhangi bir lezzet * nix için de doğru olduğuna inanıyorum, ama yapma bunun için sözümü al). Ayrıca, bu soruyu cevaplamanın ötesinde "günlüklerin nasıl okunacağı" hakkında fazla bir şey söylemeyeceğim:

İnsanların okunabilirliği için yazıldıkları varsayımı doğru mu yoksa genel olarak başka araçlar tarafından değerlendirilip kullanılıyor mu?

Sanırım bu uygulamaya bağlıdır, ancak genel olarak, en azından sistem günlüğüne (aşağıya bakınız) girenlere ilişkin olarak, insanlar tarafından okunabilir olmalıdır. "Benim için anlamlı" başka bir konu, lol. Bununla birlikte, belirli amaçlarla standart araçlarla (grep, awk, vb.) Ayrıştırmayı kolaylaştıracak şekilde yapılandırılabilirler.

Her şeyden önce, kendi günlük kaydını yapan uygulamalar ile sistem kaydedicisini kullanan uygulamalar arasında bir ayrım vardır. Apache varsayılan olarak eskidir, ancak daha sonra yapmak üzere yapılandırılabilir (ki çoğu insanın istenmeyen olduğunu düşünürüm). Kendi günlük kaydını yapan uygulamalar, dosya (lar) için herhangi bir konum kullanarak herhangi bir şekilde yapabilir, bu nedenle söylenecek çok şey yoktur. Sistem günlüğü genellikle olarak adlandırılır syslog.

syslog

"Syslog" gerçekten genel olarak syslogd adı verilen bir daemon işlemi ile uygulanan bir standarttır (d daemon için!). Ubuntu da dahil olmak üzere linux üzerinde şu anda kullanılan baskın syslog arka plan programıdır . Rsyslogd çok şey yapabilir, ancak çoğu dağıtımda kutunun dışında yapılandırıldığı gibi, öğeleri düz metin dosyalarına ayıran geleneksel bir syslog öykünür . Bunun için dokümantasyon bulabilirsiniz (dikkat edin, bir de vardır , ancak bu sadece ve gibi kaynak paketinden bildirimler ). Oradaysa, html'dir, ancak Stack Exchange yerel dosya bağlantılarının yerleştirilmesine izin vermez:rsyslogd/var/log/usr/share/doc/rsyslog-doc-[version]/usr/share/doc/rsyslog-[version]NEWSChangeLog

file://usr/share/doc/rsyslog-doc/index.html

Böylece kopyalamayı yapıştırabilirsiniz. Eğer orada değilse, kurulu olmayan ayrı bir paketin parçası olabilir. Paketleme sisteminizi sorgulayın (örn apt-cache search rsyslog | grep doc.).

Yapılandırma olduğu /etc/rsyslog.confbir manuel sayfası vardır ki, man rsyslog.confmanuel sayfa ince gönderme yapıyor iken rağmen, bir giriş olarak daha az nüfuz olabilir. Neyse ki, stok rsyslog.conf'un temelleri, etrafında birçok tanıtım ve öğretici bulunan geleneksel syslog.conf'unkilerle uyumludur. Bu , örneğin; Ne yerel rsyslog.conf de bakan ederken, bunların birinden götürmek isteyen bir anlayış tesisler ve öncelikler ( "öncelik" bazen olarak anılır loglevel), çünkü bunlar yukarıda belirtilen sistem günlüğü standardının bir parçasıdır. Bu standardın önemli olmasının nedeni, rsyslog'un eşyalarını çekirdek yoluyla alması ve çekirdeğin uyguladığı standarttır.

$Rsyslog.conf dosyasındaki yönergelerle ilgili olarak , bunlar rsyslog'a özgüdür ve bu isteğe bağlı doc paketini yüklerseniz, onlara bir kılavuz bulacaksınız rsyslog_conf_global.html.

İyi eğlenceler ... Uygulamaların sistem kaydedicisini nasıl kullandığını merak ediyorsanız, man loggerve bölümüne bakın man 3 syslog.

Kütük Dönüşü

Günlükleri döndüren normatif araçlar, logrotate(ve a man logrotate) adında bir araç aracılığıyla yapılır . Logrotate kullanmanın normatif yöntemi, bu şekilde yapılması gerekmese de cron artalan sürecidir (örneğin, masaüstünüzü her gün kapatma eğilimindeyseniz, sistem günlüğü başlamadan önce bir kez önyüklemede de yapabilirsiniz , ancak, açıkçası, dosya sistemi rw monte edildikten sonra).

Burada logrotasyon yapmak için iyi bir giriş var . Not logrotate sadece syslog şeyler için değil , hiç herhangi bir dosya ile kullanılabilir. Temel yapılandırma dosyasıdır /etc/logrotate.conf, ancak yapılandırma bir "include" yönergesine sahip olduğundan, çoğu şey /etc/logrotate.ddizindeki tek tek dosyalara girer (burada d dizin içindir, daemon değil; logrotate bir daemon değildir).

Logrotate kullanırken göz önünde bulundurulması gereken önemli bir şey, bir uygulama, günlük dosyası "döndürüldüğünde", başka bir deyişle, uygulama çalışırken - nasıl hareket edeceğidir. WRT (r) syslogd, bu günlüğe yazmayı durduracaktır (bunun için bir güvenlik gerekçesi olduğunu düşünüyorum). Bununla baş etmenin genel yolu, syslog'a yeniden başlamasını (ve tüm dosyalarını yeniden açmasını) söylemektir, bu yüzden postrotateSysUP daemon'a SIGHUP gönderen log dosyalarındaki bir yönerge göreceksiniz .


2
Siz de bahsederseniz syslog-ng, linux-logging hakkında söylenecek her şeyi yazmış olacaksınız. Mükemmel cevap.
Nils

Çok şey öğrendim ve okumak için daha fazla kaynağım var. Teşekkürler! Btw. Apache için sistem günlüğünü kullanmak neden kötü olur? Hangi günlükleri okumak istemeliyim?
erikbwork

@ erikb85 1) Çoğunlukla apache çok fazla çıktı ürettiği için. Apache'yi uzun süre yapılandırmak zorunda kalmadım, bu yüzden syslog'a belirli şeyler göndermenin WRT'nin ne kadar esnek olduğunu hatırlayamıyorum (ama çok esnek olduğunu tahmin ediyorum) 2) Okumak istediğiniz WRT günlükleri, bir göz atın mantığında /etc/rsyslog.conf. Örneğin: genellikle belirli bir önceliğin üzerindeki/var/log/messages şeyler girilecek ve altındaki şeyler geçecektir /var/log/notice. Ayrıca, her şeyi içeren bir günlüğe sahip olmayı seviyorum, bu da çift ve üçlü üst üste binme için yapar, ancak onları döndürürseniz büyük bir sorun olmaz.
goldilocks

Sadece onaylamak için rsyslogetrafta bir daemon sarmalayıcısı logrotatedeğil mi? Neden öyle ?
Thomas

@Thomas Farklı amaçlar için çalışırlar, ancak (r) syslog logrotat ihtiyacını karşılamak için rotasyon uygulayabilir. Ancak, ayrı olması, syslog dosyaları dışındaki şeylerde logrotate kullanabileceğiniz anlamına gelir.
goldilocks
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.