Cronolog ve Logrotate Karşılaştırması


Yanıtlar:


14

Deneyimlerime göre, logrotate harika. Çok esnektir ve çoğu yazılımla iyi çalışır.

Bununla birlikte, bazı sorunlar var ve kronolog öncelikle bir web günlüğü rotasyon tesisi olduğundan, logrotate + apache ile yaşadığım problemi yazacağım:

Günlükleri döndürürken, logrotate access.log.1 olarak yeniden adlandırsa bile, apache inode'a yazarken access.log.1'e yazmaya devam edecek gibi bir günlüğün döndürüldüğünü bildirmeliyiz ve dosyayı yeniden adlandırmak inode numarasını etkilemez.

Debian etch (ve muhtemelen diğer birçok dağıtımda), apache günlüklerini döndürmek için logrotate kullanılıyor. Şimdi, apache'nin mevcut bağlantıları sunmayı bitirdikten sonra apache alt işlemlerinin çıkmasını öneren zarif bir yeniden başlatmaya sahip, apache daha sonra yapılandırmasını yeniden okuyor, yeni bir günlük dosyasına yazmaya başlayan yeni alt işlemleri ortaya çıkarıyor (Önceki döndürülmüş).

Bu harika bir çözüm gibi görünür, ancak zarif yeniden başlatma her zaman belirli koşullarda (ağır yük gibi) çalışmaz, bu yüzden debian geliştiricileri apache logrotate yapılandırmasında zarif bir yeniden başlatma yerine apache yeniden başlatmayı kullanmaya karar verdiler. Ne yazık ki bu, tüm bağlantıların bir kerede düşmesine neden olur, bu da yoğun yüklü siteler için çok kötüdür. Ayrıca, apache'nin yeniden başlatılması apache'nin durdurulması ve başlamaması gibi sorunlara da neden olabilir (bazı yük durumlarında da), ayrıntılar için aşağıdaki hata bağlantılarına bakın.

Sonuç olarak, logrotate harika, ancak belirli programlar için belirli sorunlara yol açabilir. Cronolog ile pek fazla deneyimim yok, ancak günlükleri bir borudan yazarken, günlük dosyalarını döndürürken herhangi bir apache yeniden yüklemesi gerektirmez, bu temelde yukarıda açıklananları çözer.

İlgili logrotate / apache debian hataları:

  1. Debian hata # 301702
  2. Debian hatası # 400455

1
Yukarıdaki çözüm kesik kullanmaktır! yaptığı şey, access.log içeriğini access.log.1'e kopyalamak ve sonra access.log dosyasını boşaltmaktır (gördüğünüz gibi access_log inode kalıntılarını aynı kalır). Genellikle birkaç GB'den (en kötü durumda) daha büyük günlükleriniz yoktur, bu nedenle tüm süreç uzun sürmez!
Nikolaidis Fotis

3

Kronolog tercih ederim, ama gerçekten güçlü bir tercih değil.

cron tarafından başlatıldığı yerde logrotate ve döndürme işlemi olması gereken bir sistem bir nedenle kapalıysa, günlük dosyalarınız döndürülmez.

Ayrıca günlük dosyalarının (% Y% m.combined.access.log) tarihine sahip olmasını seviyorum çünkü bu günlükleri uzun süre saklıyorum. Çoğu sistemde, varsayılan olarak apache logrotate, access.log, access.log.1 vb. Dosyalara isim verir. Logftate'de logrotate ile bir tarih kullanmak mümkün olabilir, ancak son baktığımda nasıl yapacağımı anlayamadım.


2
Cron zamanı geçtiğinde logrotate'in çalışmadığı sorun "anacron" paketi kurularak giderilebilir.
andrewd18

veya daha da iyisi, günlüklerinizi istediğiniz biçimde kaydedebilirsiniz -bu rsyslog'daki şablonlarla yapılabilir - (% yıl% -% ay% -% gün% _lala.log). bu durumda, günlükleri döndürmek zorunda bile değilsiniz, çünkü her gün bu isim değişiyor!
Nikolaidis Fotis

2

Sadece hiç kullanılmamış logrotate. Debian'ın varsayılan olarak kullandığı şeydir ve hiç şikayet etmedim.


2

Ben neredeyse sadece kullanmak cronologüzerine logrotate. logrotateDebian ile birlikte gelir ve posta sunucusu günlükleri gibi sistem hizmetleri için çalışmaya devam etmesine izin veririm. Ancak Apache ve lighttpdgünlük dosyaları için hepsi bu cronolog.

Kullanmamın nedenlerinden cronologbiri, tüm yapılandırmanın web sunucusu yapılandırmasının günlük dosyası satırında gerçekleşmesidir

örneğin bir lighttpdyapılandırma dosyasına şunları koyabilirsiniz:

accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%W-access.log"

Ve tüm diğer yapılandırma olmadan her hafta yeni bir günlük dosyası olsun. Veya yaratıcı olabilir ve şöyle bir şey yapabilirsiniz:

accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%m/%a-access.log"

Ve haftanın gününe göre trafiği gösteren bir günlük dosyası alın. örneğin tüm Pazarlar, tüm Salı günleri.

Daha da iyisi, sunucu herhangi bir süre kapalı kalsa bile, yeniden başlatma sırasında doğru günlük dosyasının kullanılacağıdır.


1
Bu svlogd'a çok benziyor (runit ve daemontools soyundan).
Tobu
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.