rsyslog mesajlarını etiketlere göre filtreleme


12

Çıktıyı özel dosyalara yönlendirmek istediğim birkaç uygulama ve komut dosyası var.

Bu uygulamaları kullanarak başlatırım

command | logger -t TAG

Bu iletileri etiketlerine göre filtrelemek ve farklı dosyalara yönlendirmek istiyorum. Ben bash yeniden yönlendirme kullanmak istemiyorum çünkü bu uygulamalar çoğunlukla uzun çalışan bir süreçtir ve uygun günlük rotasyonu gerekir.

/Etc/rsyslog.d/60-myfilter.conf içinde özel bir filtre eklemeye çalıştım;

if $syslogtag == 'giomanager' then /var/log/giomanager.log

Neyi yanlış yapıyorum ? Etikete dayalı olarak filtrelemenin uygun yolu nedir veya benzer sonuç elde etmek için daha iyi bir seçenek var mı?

Yanıtlar:


21

Eğer böyle (veya syslogtag) kullanmadım ama kullandım :<blah>,<condition> ...(özellikle: msg, içerir, ...) ama deneyin

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

& stop(Veya & ~rsyslog v6 ve daha yaşlı (Bu tür RHEL6 olduğu gibi) olarak) daha da diğer kurallar tarafından ayrıştırılır aksi yaptıktan sonra atılmak üzere eşleştirilmiş mesajı neden olur.


Güncelleme: test edildi ve

Syslogtag bir içeriyor :ve içine alınması gerektiğini ""ziyade''


Yanıtınız için teşekkürler. Ben sadece ne teklif denedim, gerçekten mesaj atılır ama asla yazılır/var/log/giomanager.log
mistyrouge

@mistyrouge: benim güncellememe bak
user9517

2
Çok teşekkür ederim, artık günlüğüme yönlendirildim, /var/log/giomanager.log ancak yine de / var / log / syslog yazılıyor. Bunun neden olduğu ve nasıl önleneceği hakkında bir fikriniz var mı?
13'te

1
silme eylemi (~ göstergesi) kullanımdan kaldırıldı: (daha iyi) alternatif "durdurma" ifadesi ile değiştirildi: kb.monitorware.com/kbeventdb-detail-id-7171.html
Ivan Rave

7

Sonunda sorunuma bir çözüm buldum.

Yolumu yönlendirdiğim için @lain'e çok teşekkür ederim.

Daha önce belirtildiği gibi çözüm, etiket adına bir ':' eklemektir. Ayrıca, bu çok önemlidir, dosya adı daha önce 50-default.confalfabetik sırada olmalıdır.

Devam etmek için aşağıdakileri yerleştirin 30-giomanager.conf:

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

Dosyanın /var/log/giomanager.log'syslog' kullanıcısı tarafından yazılabilir olması gerektiğini unutmayın .


Teşekkürler mistyrouge. Seninle aynı problemim var. Doğru dosyaya giriş yaptıktan sonra günlüklerim / var / log / syslog klasörüne yönlendiriliyor. Bunun neden olduğu ve nasıl önleneceği hakkında bir fikriniz var mı?
Mayank Patel

Bunu bind9 günlüklerini filtrelemek için çalıştıramadım. Bunun yerine ': programname, isequal, "adlı" /var/log/named/named.log' çalışır. Muhtemelen etiketi "[32193] adlı" olduğu için.
Rennex

Örneğin, etiket bir PID içeriyorsa, startswithyerine kullanabilirsiniz isequal. Veya regexkarmaşık eşleşmeler için.
Tim Sylvester
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.