Mit syslog-ng unerwünschte Meldungen herausfiltern

klaus

Active Member
Auf der console von einem Rechner sollen nur die wichtigen Meldungen der anderen Server erscheinen. Deswegen möchte ich z.B. dass die Meldung die Berta enthält nicht auf der console sehen, aber soll in die Logs geschrieben werden.

So sieht meine conf-Datei (Kurz-Version), wenn alle Meldungen gezeigt werden:
Code:
destination console { file("/dev/console"); };

filter f_auth { facility(auth); };
filter f_kern { facility(kern); };
filter f_mail { facility(mail); };

filter f_crit { level(crit..emerg); };
filter f_err { level(err..emerg); };
filter f_warning { level(warning..emerg); };

#
# *.err;kern.warning;auth.warning;mail.crit             /dev/console
#
log { source(src); filter(f_err); destination(console); };
log { source(src); filter(f_kern); filter(f_warning); destination(console); };
log { source(src); filter(f_auth); filter(f_warning); destination(console); };
log { source(src); filter(f_mail); filter(f_crit); destination(console); };

Jetzt füge ich den Filter ein, welche Meldungen er nicht zeigen soll. Wenn ich das Programm starte, läuft er dann irgendwie im Kreis und versucht viele Meldungen zu produzieren, obwohl keine Meldungen reinkommen. Ich weiß nicht, woran das liegen kann. Hier die Zeilen, die ich in die entsprechende Bereiche einfüge:

Code:
filter f_berta_deny {not match("Berta"); };


log { source(src); filter (f_berta_deny); destination(console); };

Hoffe, einer kann mir auf die Sprünge helfen ...
 
Gelöst

Manchmal ist doch alles einfach :)

Hier die Lösung
Die Fett markierten Einträge habe ich geändert

Code:
destination console { file("/dev/console"); };

filter f_auth { facility(auth); };
filter f_kern { facility(kern); };
filter f_mail { facility(mail); };

filter f_crit { level(crit..emerg); };
filter f_err { level(err..emerg); };
filter f_warning { level(warning..emerg); };

# Ab hier sollen die unerwünschten Meldungen herausgefiltert werden
[B]filter f_berta_deny {
        not match(".Berta.");
};

log { source(src); filter(f_berta_deny);  flags(final); };
[/B]
#
# *.err;kern.warning;auth.warning;mail.crit             /dev/console
#
log { source(src); filter(f_err); destination(console); };
log { source(src); filter(f_kern); filter(f_warning); destination(console); };
log { source(src); filter(f_auth); filter(f_warning); destination(console); };

Damit die Meldungen in die Logs und nicht auf der console erscheinen, muss man die Einträge von console ganz nach hinten verschieben und vor den Einträgen dann die unerwünschten Meldungen löschen lassen. Somit erscheinen die nicht mehr auf der console.
Ist doch einfach ;-)
 
Zurück
Oben