jak filtrować wiadomości rsyslog według znaczników


12

Mam kilka aplikacji i skryptów, które chcę przekierować dane wyjściowe do plików niestandardowych.

Uruchamiam te aplikacje za pomocą

command | logger -t TAG

Chciałbym filtrować te wiadomości na podstawie ich tagów i przekierowywać je do różnych plików. Nie chcę używać przekierowania bash, ponieważ te aplikacje są głównie procesem długotrwałym i wymagają odpowiedniej rotacji logów.

Próbowałem dodać niestandardowy filtr w /etc/rsyslog.d/60-myfilter.conf;

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

Co ja robię źle ? Jaki jest właściwy sposób filtrowania na podstawie tagu lub czy jest lepsza opcja, aby uzyskać podobny wynik?

Odpowiedzi:


21

Nie użyłem, jeśli tak (lub syslogtag), ale użyłem :<blah>,<condition> ...(w szczególności: msg, zawiera, ...), ale spróbuj

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

& stop(Lub, & ~w rsyslog v6 i starszych (takich jak na RHEL6)) powoduje dopasowaną wiadomość do wyrzucenia po zalogowaniu inaczej to będzie dalej analizowany przez innych reguł.


Aktualizacja: przetestowana i

Syslogtag zawiera a :i powinien być ""raczej zamknięty niż''


Dzięki za twoją odpowiedź. Właśnie próbowałem tego, co zaproponujesz, rzeczywiście wiadomość zostaje odrzucona, ale nigdy nie jest zapisywana na /var/log/giomanager.log
adres

@mistyrouge: zobacz moją aktualizację
użytkownik9517

2
Dziękuję bardzo, teraz mój dziennik został przekierowany do, /var/log/giomanager.log ale nadal jest zapisywany w / var / log / syslog. Czy masz pomysł, dlaczego tak się dzieje i jak temu zapobiec?
mistyrouge

1
akcja discard (~ wskaźnik) jest przestarzała: została zastąpiona (lepszą) alternatywną instrukcją „stop”: kb.monitorware.com/kbeventdb-detail-id-7171.html
Ivan Rave

7

W końcu znalazłem rozwiązanie mojego problemu.

Bardzo dziękuję @lain za prowadzenie mnie.

Rozwiązaniem, jak wspomniano wcześniej, jest umieszczenie „:” w nazwie znacznika. Jest to również bardzo ważne, nazwa pliku musi być wcześniej 50-default.confw kolejności alfabetycznej.

Aby wznowić, wprowadź następujące dane 30-giomanager.conf:

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

Zauważ, że plik /var/log/giomanager.logpowinien być zapisywalny przez użytkownika „syslog”.


Dzięki @mistyrouge. Mam ten sam problem co ty. Po zalogowaniu się do poprawnego pliku moje logi są przekierowywane do / var / log / syslog. Czy masz pomysł, dlaczego tak się dzieje i jak temu zapobiec?
Mayank Patel

Nie mogłem tego uruchomić do filtrowania dzienników bind9. Zamiast tego działa „: nazwa programu, isequal”, „nazwany” /var/log/named/named.log ”. Prawdopodobnie dlatego, że znacznik jest podobny do „o nazwie [32193]”.
Rennex

Możesz użyć startswithzamiast, isequaljeśli na przykład tag zawiera PID. Lub w regexprzypadku złożonych dopasowań.
Tim Sylvester,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.