Syslog ng Filter Konfiguration

P

Prefix

Grünschnabel
hallo zusammen,

ich habe hier ein kleines Problem, denn ich soll eine vorhandene syslog.conf so anpassen, dass bestimmte Meldungen eines Proxies herausgefiltert und verworfen werden.
Hintergrund ist, dass die Nachrichten in eine Datenbank geschrieben werden und dieser Proxy ungefähr 200k Einträge am Tag mit Fehlermeldungen (die keine sind) vollbläst. Bevor jetzt jemand sagt, dass man sich damit an den Hersteller des Proxies wenden soll, der kennt den Support von Bluecoat nicht ;-)

Momentan sieht das Ganze so aus:

Code:
Code:
source s_sys { sun-streams ("/dev/log" door("/etc/.syslog_door")); internal(); };

filter f_rasproxy1_deny { host("123.123.123.123") and match(".*290006.Assertion.failed.*");};

log { source(s_sys); filter(f_rasproxy1_deny); flags(final); };

Es ist keine Destination angegeben, weil laut Manual ein "flags(final)" das Ganze sowieso verwirft. Mal davon abgesehen hab ich´s auf die Art auch schonmal probiert:

Code:
Code:
source s_sys { sun-streams ("/dev/log" door("/etc/.syslog_door")); internal(); };

destination d_devnull {file("/dev/null"); }; 

filter f_rasproxy1_deny { host("123.123.123.123") and match(".*290006.Assertion.failed.*");};

log { source(s_sys); filter(f_rasproxy1_deny); destination(d_devnull); };

Die Fehlermeldung die gefiltert werden soll lautet exakt:
ProxySG: 290006 Assertion failed: "false" ""(2686982) SEVERE_ERROR ../TE_Transaction.cpp 808

Kann mir jemand erklären, warum der Filter nicht zieht?

Danke schonmal
Grüße
Roland
 
syslogd neu gestartet?
Die regexpr mal abgewandelt?
Funktioniert dein Ausdruck bei einem grep auf die /var/log/massages?
 
Eine Frage:

Müßte nicht, wenn ich aus einem Netzwerk filtern will, dieses Netzwerk unter source stehen? Und nicht in den Filtern??

Weil ich dachte immer das die Filter bei syslog-ng immer nach Faciltity oder Priotrity (level) arbeiten. Und ein host müsste man dort glaube ich selber definieren? Da nicht als Grundeinstellung mit dabei ist.

Oder ist das nur bei SUSE so??
 
Zuletzt bearbeitet:
Hier mal das ganze File:

Code:
# syslog-ng configuration file.
#
# This should behave pretty much like the original syslog on SunOS. But
# it could be configured a lot smarter.
#
# See syslog-ng(8) and syslog-ng.conf(5) for more information.
#
# 20000925 gb@sysfive.com

options { sync (0);
          time_reopen (10);
          log_fifo_size (1000);
          long_hostnames (off);
          use_dns (no);
          use_fqdn (no);
          create_dirs (no);
          keep_hostname (yes);
          perm(0644);
        };

####################################
source s_udp_514 { udp( ); };
####################################

source s_sys { sun-streams ("/dev/log" door("/etc/.syslog_door")); internal(); };

### DARUM GEHTS ######################
#destination d_devnull {file("/dev/null"); }; 
####################################

destination d_cons { file("/dev/console"); };
destination d_mesg { file("/var/adm/messages"); };
destination d_mail { file("/var/log/syslog"); };
destination d_s-msg1 { file("/vol1/syslog-files/messages.log" perm(0644) ); };
destination d_auth { file("/var/log/authlog"); };

...

destination d_mysql {
pipe("/tmp/mysql.pipe"
template("INSERT INTO logs (host, facility, priority, level, tag, datetime, program, msg)
VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL','$TAG',
'$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC', '$PROGRAM', '$MSG' );\n") template-escape(yes));
};

### DARUM GEHTS ##########################
filter f_rasproxy1_deny { match("ProxySG: 290006 Assertion failed:");};
filter f_rasproxy2_deny { match(".*290006.Assertion.failed.*");};
#######################################

filter f_filter1   { level(err) or
		     (level(notice) and facility (auth, kern)); };
filter f_filter2   { level(err) or
                     (facility(kern) and level(notice)) or
                     (facility(daemon) and level(notice)) or
                     (facility(mail) and level(crit)); };
filter f_filter3   { level(alert) or
                     (facility(kern) and level(err)) or
                     (facility(daemon) and level(err)); };
filter f_filter4   { level(alert); };
filter f_filter5   { level(emerg); };
filter f_filter6   { facility(kern) and level(notice); };
filter f_filter7   { facility(mail) and level(debug); };
filter f_filter8   { facility(user) and level(err); };
filter f_filter9   { facility(user) and level(alert); };

#### DARUM GEHT GEHTS ####
log { source(s_sys); filter(f_rasproxy1_deny); flags(final); };
log { source(s_sys); filter(f_rasproxy2_deny); flags(final); };
#######################

log { source(s_sys); filter(f_filter1); destination(d_cons); };
log { source(s_sys); filter(f_filter2); destination(d_s-msg1); };
log { source(s_sys); filter(f_filter3); destination(d_mlop); };
log { source(s_sys); filter(f_filter4); destination(d_mlrt); };
log { source(s_sys); filter(f_filter5); destination(d_mlal); };
log { source(s_sys); filter(f_filter6); destination(d_auth); };
log { source(s_sys); filter(f_filter7); destination(d_mail); };
log { source(s_sys); filter(f_filter8); destination(d_cons);
	                                destination(d_s-msg1); };
log { source(s_sys); filter(f_filter9); destination(d_mlop);
                                        destination(d_mlrt); };
# (tb 071121) Eintrag in Datenbank:
log { source(s_udp_514); destination(d_mysql); };
#


Quote NoXqs:
syslogd neu gestartet?

Das Problem ist, dass ich keinen direkten Zugriff auf den Server habe. Ich ändere nur die .conf ab und geb es dann dem Zuständigen. Allerdings geh ich davon aus, dass der syslog jedes mal neu startet, da er mir auch schon Fehler geschickt hat, falls die Regex fehlerhaft war.

Die regexpr mal abgewandelt?

Ich hab schon verschiedene Versionen probiert, unter anderem auch die Suche nach nur einem Begriff wie "Assertion".

Funktioniert dein Ausdruck bei einem grep auf die /var/log/massages?
Das kann ich nicht probieren, da ich ja wie oben erwähnt keinen Zugriff auf den Server habe.


@iced.empire:
Danke für den Hinweis, ich werde das mal nachlesen und probieren.
Allerdings habe ich es auch schon ohne das Host-Feld probiert, wie man oben sieht :-/
 
Ich habe noch ein bisschen rumprobiert und stelle mir jetzt die Frage, wie Syslog eigentlich genau vorgeht.

Sagt mir, wenn ich falsch liege:

Alle Nachrichten des Netzwerks kommen über diese Quelle:
source s_udp_514 { udp( ); };
Also alles über Port 514...

Als Zielobjekt wird das hier genommen:
destination d_mysql {
pipe("/tmp/mysql.pipe"
template("INSERT INTO logs (host, facility, priority, level, tag, datetime, program, msg)
VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL','$TAG',
'$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC', '$PROGRAM', '$MSG' );\n") template-escape(yes));
};


und der definierte Filter ist:
filter f_rasproxy_deny {not match("ProxySG: 290006 Assertion failed:");};

-------------
Das waren die Definitionen. Ausgeführt wird erst mit log().

Ich nehme also alle Meldungen aus der Quelle s_udp_514 auf die der Filter f_rasproxy_deny zutrifft und sende sie an die Destination d_mysql.

Folglich müsste es so aussehen:
log { source(s_udp_514); filter (f_rasproxy_deny); destination(d_mysql); };


Was mache ich falsch, dass ich immer noch diese Meldungen in meiner Datenbank finde?
 
Na, keiner nen Tipp oder Hinweis darauf, was ich falsch mache?

*schieb*
 
Nur zur Info, falls es irgendjemanden interessiert. Auf diese Art funktionierts:

filter f_rasproxy2_deny { not match(".*290006.Assertion.failed.*"); };

log { source(s_udp_514); filter (f_rasproxy2_deny); destination(d_mysql); };
 

Ähnliche Themen

dovecot und postfix Konfiguration Problem

syslog-ng und iptables Problem

Routing Problematik

XFCE freezes at startup

HP PSC 2175 - CUPS druckt nicht

Zurück
Oben