Montag, 6. April 2009
Die /var/log/syslog füllt sich unter Debian Linux sehr schnell mit viel nichtssagendem Ballast, weshalb ich mich heute dazu entschied, mal ein wenig aufzuräumen. Die Meldungen von cron (läuft bei mir jede Minute mit irgendwelchen Befehlen), dhcpd (im Netzwerk gibt es ein Gerät, dass jede Sekunde einen DHCP-Request sendet) sowie snmpd (cacti frägt den Systemzustand in jeder Minute ab) sollten neu aus der /var/log/syslog in eigene Log-Dateien ausgelagert werden.
Folgende Anpassungen an /etc/syslog-ng/syslog-ng.conf taten den Trick.
Als erstes legt man neue Destinationen fest:
destination df_cron { file("/var/log/cron.log"); };
destination df_dhcpd { file("/var/log/dhcpd.log"); };
destination df_snmpd { file("/var/log/snmpd.log"); };
Anschliessend legt man vier neue Filter fest:
filter f_cron { facility(cron); };
filter f_dhcpd { program(dhcpd); };
filter f_snmpd { program(snmpd); };
filter f_noise { not filter(f_snmpd) and not filter(f_dhcpd) and not filter(f_cron); };
Schlussendlich baut man diese als Log-Anweisungen zusammen:
log {
source(s_all);
filter(f_syslog);
filter(f_noise);
destination(df_syslog);
};
log {
source(s_all);
filter(f_cron);
destination(df_cron);
};
log {
source(s_all);
filter(f_dhcpd);
destination(df_dhcpd);
};
log {
source(s_all);
filter(f_snmpd);
destination(df_snmpd);
};
Nachdem man die Konfigurationsdatei gespeichert hat, startet man syslog-ng neu und erfreut sich über die Ruhe, die nun einkehrt:
# /etc/init.d/syslog-ng restart
$ tail -f /var/log/syslog
Nachtrag
Natürlich wollte ich mir noch ein Bild machen, wie die Situation vor diesen neuen Umleitungen aussah. Erschreckend:
# cat syslog | cut -d " " -f 6 | sort | cut -d "[" -f 1 | sort | uniq -c | sort -r -n
2534 dhcpd:
2215 /USR/SBIN/CRON
1688 snmpd
392 kernel:
98 mt-daapd
55 syslog-ng
40 postfix/qmgr
36 avahi-daemon
31 smartd
26 ovpn-server
23 named
21 postfix/smtp
19 postfix/cleanup
18 postfix/pickup
9 mysqld
8 apcupsd
6 ntpdate
6 /etc/mysql/debian-start
4 /usr/sbin/cron
4 postfix/tlsmgr
3 arpwatch:
2 postfix/master
2 mysqld_safe
1 shutdown
1 postfix/local
1 mdadm
1 init:
Mein Gefühl hat sich bestätigt: Ich habe die richtigen „Übeltäter“ in eigene Dateien ausgelagert.