Journalald ile birim başına günlük depolama ilkesi nasıl yapılandırılır?


14

Nadir, ancak önemli bilgileri kaydeden belirli bir hizmetim var. Birkaç ay önce kurdum ve bugün journalctl -n 50 --unit=my-servicesadece giriş olmadığını bulmak için koşuyorum .

Çoğu birim için bu davranıştan çok memnunum - ya hemen (ya da en fazla birkaç gün önce) olan bir şeye ihtiyacım var ve aylık kayıtlarla ilgilenmiyorum.

Ancak, journaldbelirli bir birimin kayıtları için bağımsız bir depolama ve saklama politikasına sahip olmanın bir yolu var mı? 5 gün boyunca bu belirli günlükleri saklamak istiyorum - ne kadar büyük olursa olsun. Diğer birimlerin günlükleri bundan etkilenmemeli ve mevcut davranışlarını korumalıdır.

Ben bir tür kayıp anlayışım journald.conf(5)ve birim başına yapılandırma mümkün olduğunda anlayamıyorum . Kısa bir somut örneği takdir edersem, hangi dosyayı düzenlemem / oluşturmam ve ne yazmam gerekir. Ya da, kesinlikle yapamayacağından emin olursanız - bu da iyi bir cevap olacaktır.

NOT: Benim özel durumum Arch Linux ana bilgisayarını içeriyor, ama sanırım bu çok önemli değil.


Bu özelliği dergiye eklemekle ilgili bir soruna bu bağlantıyı eklemek için yukarıdaki cevaba yorum yapamam, bu yüzden burada başka bir cevap var: github.com/systemd/systemd/issues/4751
swoop81

Yanıtlar:


7

Görünüşe göre dergiyle şanssızım. Bağımsız bir "uzun süreli depolama" günlüğü oluşturmanın bir yolunu bulamadığım sürece (şu anda kullanıcı başına farklı dergiler var gibi), ancak bunun geçerli ve akılcı bir yaklaşım olduğundan emin değilim. Sanırım, bir syslogd (ve logrotate) oluşturmak daha kolay olurdu.

Özellik , Lennart'ın kendisinin onayladığı gibi 2014'ün sonlarında mevcut değildi .

Görünüşe göre henüz burada değil. En azından, "dergi: döndürme / vakumlama sırasında öncelik başına ve hizmet başına tutma sürelerine izin ver" satırı hala TODO dosyasında (2016-07-11'den revizyon bağlantısı).


3
Bu çok büyük bir tasarım hatası gibi görünüyor, neredeyse sakat. Özellikle kişi, günlükleri tıkayan çok konuşkan birimlerin alıkonmasını veya en azından günlük seviyesini azaltmak istiyorsa.
orion

1
Bu soru üzerine tökezleyen herkes için, TODO'daki referans çizgisi hala bu yorumdan itibaren mevcuttur (26.03.18): github.com/systemd/systemd/blob/…
timss 26:18

1
Üzerinde biraz çekiş denemek için projeyle ilgili bir sorun olarak ortaya çıkardım - github.com/systemd/systemd/issues/9519 .
slm

1

Günlük dosyasını oluşturmak oldukça basittir. Varsayılan olarak, dergi günlüğüne yapılan tüm günlük kaydı syslog dosyasına da gider ve bu varsayılan ayarın yerinde olması gerekir. Rsyslog.conf, syslog dosyasına iletilen girdilerin nasıl işleneceğini denetler. Buna ek olarak, SyslogFacilityvarsayılan olarak daemon, herhangi bir hizmetin günlük girişleri genellikle daemon.logdosyada bulunur /var/log.

Servis dosyanızda [servis] bölümüne ekleyin

SyslogFacility=local2

(sayı 0 ile 7 arasında olabilir) https://www.freedesktop.org/software/systemd/man/systemd.exec.html

/Etc/rsyslog.conf dosyasını değiştirin (değiştirilecek varolan satırları bulun), local2'nin belirli bir dosyaya (ilk satır) ve ideal olarak syslog'a local2.nonegösterildiği gibi ekleyerek (zaten günlükte) oturum açmayacak şekilde değiştirin .

local2.*                        /var/log/your-service-name.log
*.*;auth,authpriv.none,local2.none          -/var/log/syslog

[değiştir] ayrıca tüm yakalamayı değiştirmelisiniz

*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none,local2.none      -/var/log/messages

Tabii ki, gerçek elde tutma logrotate tarafından yapılmalıdır.

HTH

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.