Inhaltsverzeichnis
RSyslog
Aufgrund der doch eher einfachen Möglichkeiten des standardmässigen Syslog-Daemons syslogd
, welcher bei vielen Linux-Distributionen aktuell immer noch installiert wird, setzen viele Anwender und auch die ersten Distributoren auf Alternativen.
Eine dieser Alternativen stellt der freie Syslog-Daemon RSyslog dar.
Installation
Folgende Pakete sollten für den Betrieb von rsyslogd
installiert werden:
rsyslog
(rsyslog.i386)
Das Paket enthält folgende Komponenten (ohne Angabe von man-pages
):
/sbin/rfc3195d
/sbin/rklogd
/sbin/rsyslogd
/usr/lib/rsyslog
Falls eine Unterstützung für MySQL gewünscht wird, ist folgendes Paket zu installieren:
rsyslog-mysql
(rsyslog-mysql.i386)
Dieses Paket enthält folgende Komponenten (ohne Angabe von man-pages
):
/usr/lib/rsyslog/ommysql.so
/usr/share/doc/rsyslog-mysql-2.0.0/createDB.sql
Konfiguration
Konfigurationsdateien
Folgende Konfigurationsdateien werden standardmässig mit der Installation von rsyslog
mitgeliefert:
/etc/logrotate.d/syslog
(Ergänzung des Log-Rotate-Mechanismus)/etc/rc.d/init.d/rsyslog
(Startscript fürrsyslog
)/etc/rsyslog.conf
(Konfigurationsdatei des Syslog-Daemons)/etc/sysconfig/rsyslog
(Parameterdatei des Syslog-Daemons)
Konfigurationsdetails
Die Konfigurationsdatei /etc/logrotate.d/syslog
sieht wie folgt aus:
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron { sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
Es wurde im Vergleich zur ursprünglichen Datei /etc/logrotate.d/syslog
nur die Zeile:
/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
hinzugefügt.
Die Konfigurationsdatei /etc/rc.d/init.d/rsyslog
ist neu und ersetzt die Datei /etc/rc.d/init.d/syslog
.
Die Konfugurationsdatei /etc/rsyslog.conf
ist ebenfalls neu und ersetzt die Datei /etc/syslog.conf
. Der Inhalt beider Dateien ist nach der Installation des RSyslog-Daemons mit der Standardinstallation des Syslog-Daemons identisch.
Die Konfigurationsdatei /etc/sysconfig/rsyslog
ist ebenfalls neu und sieht wie folgt aus:
# Options to syslogd # -m 0 disables 'MARK' messages. # -rPortNumber Enables logging from remote machines. The listener will listen to the specified port. # -x disables DNS lookups on messages recieved with -r # See syslogd(8) for more details SYSLOGD_OPTIONS="-m 0" # Options to klogd # -2 prints all kernel oops messages twice; once for klogd to decode, and # once for processing with 'ksymoops' # -x disables all klogd processing of oops messages entirely # See klogd(8) for more details KLOGD_OPTIONS="-x"
Im Vergleich zur Konfigurationsdatei /etc/sysconfig/syslog
fehlen folgende Zeilen am Ende der Datei:
# SYSLOG_UMASK=077 # set this to a umask value to use for all log files as in umask(1). # By default, all permissions are removed for "group" and "other".
Die Ergänzung der Konfigurationsdatei /etc/sysconfig/rsyslog
um diese Zeilen, wäre grundsätzlich nicht nötig, da mit diesen Zeilen die Standardrechte für die Log-Dateien gesetzte werden, was in der Konfigurationsdatei /etc/rc.d/init.d/rsyslog
ebenfalls getan wird, falls diese Zeilen fehlen. Jedoch sollten die obengenannten fehlenden Zeilen der Ordnung halber ergänzt werden, so dass die Konfigurationsdatei /etc/sysconfig/rsyslog
wie folgt aussehen sollte:
# Options to syslogd # -m 0 disables 'MARK' messages. # -rPortNumber Enables logging from remote machines. The listener will listen to the specified port. # -x disables DNS lookups on messages recieved with -r # See syslogd(8) for more details SYSLOGD_OPTIONS="-m 0" # Options to klogd # -2 prints all kernel oops messages twice; once for klogd to decode, and # once for processing with 'ksymoops' # -x disables all klogd processing of oops messages entirely # See klogd(8) for more details KLOGD_OPTIONS="-x" # SYSLOG_UMASK=077 # set this to a umask value to use for all log files as in umask(1). # By default, all permissions are removed for "group" and "other".
Log-Überwachung "logwatch"
Das standardmässig bei CentOS installierte und aktivierte Paket logwatch
Logwatch, welches durch einen cron
-Job einmal täglich ausgeführt wird und eine e-Mail mit einer Zusammenfassung verschiedener Log-Dateien verschickt, wird bei Veränderungen des Aufbaus einer Log-Datei-Zeile nicht mehr korrekt arbeiten.
Von Logwatch wird folgender Log-Datei-Aufbau erwartet (z.B. /var/log/messages
):
Jul 1 15:57:11 hostname kernel: Kernel logging (proc) stopped. Jul 1 15:57:11 hostname kernel: Kernel log daemon terminating. Jul 1 15:57:12 hostname rsyslogd: [origin software="rsyslogd" swVersion="2.0.0" x-pid="14431"] exiting on signal 15. Jul 1 15:57:32 hostname rsyslogd: [origin software="rsyslogd" swVersion="2.0.0" x-pid="14475"][x-configInfo udpReception="No" udpPort="514" t cpReception="No" tcpPort="0"] restart Jul 1 15:57:32 hostname kernel: rklogd 2.0.0, log source = /proc/kmsg started.
Falls eine Anpassung des Log-Datei-Aufbau erfolgt wie z.B. hier bei der Log-Datei /var/log/messages
dargestellt:
2008-07-01 15:57:11.514440 +02:00 hostname 1 kernel: Kernel logging (proc) stopped. 2008-07-01 15:57:11.514567 +02:00 hostname 1 kernel: Kernel log daemon terminating. 2008-07-01 15:57:12.657859 +02:00 hostname 1 rsyslogd: [origin software="rsyslogd" swVersion="2.0.0" x-pid="14431"] exiting on signal 15. 2008-07-01 15:57:32.485455 +02:00 hostname 1 rsyslogd: [origin software="rsyslogd" swVersion="2.0.0" x-pid="14475"][x-configInfo udpReception="No" udpPort="514" t cpReception="No" tcpPort="0"] restart 2008-07-01 15:57:32.551411 +02:00 hostname 1 kernel: rklogd 2.0.0, log source = /proc/kmsg started.
werden bei allen Log-Dateien die einen angepassten Log-Datei-Aufbau werwenden, keine Einträge mehr durch Logwatch erzeugt.
Dieser „neue“ Log-Datei-Aufbau wird durch folgende Zeilen in der Konfiguratiosndatei /etc/rsyslog.conf
erzeugt:
$template MyLogFormat,"%timegenerated:1:10:date-rfc3339% %timegenerated:12:26:date-rfc3339% %timegenerated:27:32:date-rfc3339% %HOSTNAME% %iut% %syslogtag%%msg:::drop-last-lf%\n"
* Definition eines Templates mit der Spezifikation des Log-Datei-Aufbaus, welches immer vor Gebrauch definiert werden muss, da es sonst zu keiner Log-Ausgabe kommt!
Hier am Beispiel der Log-Datei /var/log/messages
:
*.info;mail.none;authpriv.none;cron.none /var/log/messages;MyLogFormat
* Zusätzlich die Ergänzung der einzelnen Zeilen, für welche Log-Dateien der „neue“ Log-Datei-Aufbau gelten soll!
Folgende Schritte sind notwendig um Logwatch diesen neue Log-Datei-Aufbau mitzuteilen.
Als erstes benötigen wir ein neues Script, welches dazu dient innerhalb von Logwatch den geänderten Log-Datei-Aufbau zu erkennen. Genauer gesagt, muss das neue Datumsformat erkannt werden.
Folgendes Script muss nun z.B. unter dem Namen applymydate
mit folgendem Inhalt zum Verzeichnis /usr/share/logwatch/scripts/shared
hinzugefügt werden:
########################################################################## # $Id: applymydate,v 1.0 2008/07/08 10:01:01 klaus Exp $ ########################################################################## ######################################################## # This was written and is maintained by: # Kirk Bauer <kirk@kaybee.org> # # Please send all comments, suggestions, bug reports, # etc, to logwatch-devel@logwatch.org ######################################################## use Logwatch ':dates'; my $Debug = $ENV{'LOGWATCH_DEBUG'} || 0; $SearchDate = TimeFilter('%Y-%m-%d %H:%M:%S'); if ( $Debug > 5 ) { print STDERR "DEBUG: Inside ApplyMyDate...\n"; print STDERR "DEBUG: Looking For: " . $SearchDate . "\n"; } while (defined($ThisLine = <STDIN>)) { if ($ThisLine =~ m/^$SearchDate\.[0-9]{5}[0-9]\s\+[0-9][0-9]:[0-9][0-9] /o) { print $ThisLine; } } # vi: shiftwidth=3 syntax=perl tabstop=3 et
Als zweiten Schritt muss nun die Verwendung dieses „neuen“ Dateiformats Logwatch für die entsprechenden Log-Dateien mitgeteilt werden. Dies soll wieder am Beispiel der Log-Datei /var/log/messages
durchgeführt werden.
Die Konfigurationsdatei welche für die Auswertung der Log-Datei /var/log/messages
verantwortlich ist befindet sich im Verzeichnis
/usr/share/logwatch/default.conf/logfiles
und trägt den Namen messages.conf
. Der Inhalt der Datei muss wie folgt angepasst werde:
########################################################################## # $Id: messages.conf,v 1.23 2006/03/21 01:47:28 bjorn Exp $ ########################################################################## ######################################################## # This was written and is maintained by: # Kirk Bauer <kirk@kaybee.org> # # Please send all comments, suggestions, bug reports, # etc, to kirk@kaybee.org. ######################################################## # What actual file? Defaults to LogPath if not absolute path.... LogFile = messages # If the archives are searched, here is one or more line # (optionally containing wildcards) that tell where they are... #If you use a "-" in naming add that as well -mgt Archive = messages.* Archive = archiv/messages.* # Expand the repeats (actually just removes them now) *ExpandRepeats # Now, lets remove the services we don't care about at all... *RemoveService = talkd *RemoveService = telnetd *RemoveService = inetd *RemoveService = nfsd *RemoveService = /sbin/mingetty *RemoveService = netscreen *RemoveService = NetScreen # Keep only the lines in the proper date range... *OnlyHost *ApplyMyDate # vi: shiftwidth=3 tabstop=3 et
Wichtig ist hier die Zeile *ApplyMyDate
! (Vorher stand hier *ApplyStdDate)
Zum Abschluss kann durch folgenden Befehl getestet werden, ob die Änderungen zum gewünschten Ergebnis führen:
# logwatch
Log-Datei Rotation
Falls Sie beabsichtigen (wie in nachfolgenden Beispielen beschrieben) eigene, zusätztliche Log-Dateien zu schreiben, wie z.B. /var/log/named.log
oder auch /var/log/dhcpd.log
und diese auch in die Log-Datei Rotation (logrotation) mit aufzunehemen, dann sind zusätzliche Konfigurationen notwendig.
Diese Konfigurationen sind im Verzeichnis /etc/logrotate.d
vorzunehmen.
Im Verzeichnis /etc/logrotate.d
befinden sich bereits einige Dateien, die die Konfigurationen zum logrotate für z.B. /etc/var/messages
enthält - dies wäre die Datei /etc/logrotate.d/syslog
. Hier der Inhalt dieser Konfigurationsdatei als Beispiel:
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron { sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
Es befindet sich auch eine Datei /etc/logrotate.d/named
bereits in diesem Verzeichnis, wenn der DNS-Server (bind) mit dem Namen named
installiert wurde. Hier als Beispiel auch der Inhalt dieser Konfigurationsdatei:
/var/log/named.log { missingok create 0644 named named postrotate /sbin/service named reload 2> /dev/null > /dev/null || true endscript }
Falls also die Log-Datei Rotation für eine weitere Log-Datei wie z.B. /var/log/dhcpd.log
erstellt werden soll, muss nur die Konfigurationsdatei /etc/logrotate.d/syslog
entsprechend angepasst werden.
Die Konfigurationsdatei /etc/logrotate.d/syslog
könnte also abschliessend wie folgt aussehen:
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron /var/log/dhcpd.log { sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
Als zusätzliches Beispiel und auch weil es aktuell unter CentOS kein Script dafür gibt, ein mögliches Script für MySQL , welches z.B. mit dem Konfigurationsdateinamen /etc/logrotate.d/mysqld
anzulegen wäre:
/var/log/mysqld.log { monthly notifempty size 5M missingok create 0640 mysql mysql sharedscripts postrotate /bin/kill -HUP `cat /var/run/mysqld/mysqld.pid 2> /dev/null` 2> /dev/null || true endscript }
Die Konfigurationsdatei /etc/logrotate.d/mysqld
sollte wie folgt angelegt sein, was mit folgendem Befehl überprüft werden kann:
# ll /etc/logrotate.d/mysqld -rw-r----- 1 root mysql 235 Jul 1 11:14 /etc/logrotate.d/mysqld
Falls dies nicht der Fall sein sollte, ist folgender Befehl einzugeben um die „Besitzrechte“ zu ändern:
# chown root:mysql /etc/logrotate.d/mysqld
und folgender Befehl einzugeben, um die „Dateirechte“ zu ändern:
# chmod 640 /etc/logrotate.d/mysqld
MySQL-Unterstützung
Bevor mit der Konfiguration der Unterstützung für MySQL begonnen wird, wäre es ratsam einen eigenen Benutzer und ein zu diesem eigenen Benutzer gehörendes Passwort einzurichten. Dies kann z.B. mit phpMyAdmin realisiert werden. Für die nachfolgende Konfiguration wird davon ausgegangen, das ein
- Benutzer
rsylsog
mit dem - Passwort
passlog
mit den Rechten (SELECT, INSERT, UPDATE, DELETE
auf die Datenbank Syslog
) in MySQL existiert!
Datenbank und Tabellen anlegen
Um eine neue Datenbank inklusive der Tabllen und Spaltendefinitionen nicht selbst durchführen zu müssen, können wir die Anlage mit Hilfe der Datenbank-Definitionsdatei /usr/share/doc/rsyslog-mysql-2.0.0/createDB.sql
durchführen. Auch hier kann dies mit Hilfe von phpMyAdmin realisert werden.
Der Inhalt der Datenbank-Definitionsdatei /usr/share/doc/rsyslog-mysql-2.0.0/createDB.sql
sieht wie folgt aus:
CREATE DATABASE Syslog; USE Syslog; CREATE TABLE SystemEvents ( ID int unsigned not null auto_increment primary key, CustomerID bigint, ReceivedAt datetime NULL, DeviceReportedTime datetime NULL, Facility smallint NULL, Priority smallint NULL, FromHost varchar(60) NULL, Message text, NTSeverity int NULL, Importance int NULL, EventSource varchar(60), EventUser varchar(60) NULL, EventCategory int NULL, EventID int NULL, EventBinaryData text NULL, MaxAvailable int NULL, CurrUsage int NULL, MinUsage int NULL, MaxUsage int NULL, InfoUnitID int NULL , SysLogTag varchar(60), EventLogType varchar(60), GenericFileName VarChar(60), SystemID int NULL ); CREATE TABLE SystemEventsProperties ( ID int unsigned not null auto_increment primary key, SystemEventID int NULL , ParamName varchar(255) NULL , ParamValue text NULL );
Datenbank befüllen
Um nun die Datenbank mit Log-Informationen zu füllen, muss folgende Zeile vor allen Zeilen stehen, die Datenbank Einträge schreiben - z.B. am Anfang der Konfigurationsdatei /etc/rsyslog.conf
:
$ModLoad ommysql.so
Das eigentliche Schreiben der Log-Informationen wird dann von folgender Zeile durchgeführt:
*.* :ommysql:127.0.0.1,Syslog,rsyslog,passlog
Wichtig, da hier eine Standard-Datenbank-Definition verwendet wird, ist hier keine Definition eines Templates erforderlich!
Wichtig, falls eine eigene Datenbank definiert werden soll, muss auch ein eigenes Template definert werden!
Hier noch einmal die gesamte Datei /etc/rsyslog.conf
:
# Load Modules $ModLoad ommysql.so # Self-Defined Templates $template MyLogFormat,"%timegenerated:1:10:date-rfc3339% %timegenerated:12:26:date-rfc3339% %timegenerated:27:32:date-rfc3339% %HOSTNAME% %iut% %syslogtag%%msg:::drop-last-lf%\n" # Write all Log-Information to MySQL-Database *.* :ommysql:127.0.0.1,Syslog,rsyslog,passlog # Log all kernel messages to the console. # Logging much else clutters up the screen. #kern.* /dev/console # Log dhcpd messages :programname, isequal, "dhcpd" /var/log/dhcpd.log;MyLogFormat # Log named messages :programname, isequal, "named" /var/log/named.log;MyLogFormat # Log anything (except mail) of level info or higher. # Don't log private authentication messages! # Don't log dhcpd messages! # Don't log named messages! :programname, isequal, "dhcpd" ~ :programname, isequal, "named" ~ *.info;mail.none;authpriv.none;cron.none /var/log/messages;MyLogFormat # The authpriv file has restricted access. authpriv.* /var/log/secure;MyLogFormat # Log all the mail messages in one place. mail.* -/var/log/maillog;MyLogFormat # Log cron stuff cron.* /var/log/cron;MyLogFormat # Everybody gets emergency messages *.emerg *;MyLogFormat # Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler;MyLogFormat # Save boot messages also to boot.log local7.* /var/log/boot.log;MyLogFormat
Daemon-Startreihenfolge
Abschießend muss noch die Startreihenfolge der Dienste angepasst werden. Wenn die MySQL-Unterstützung aktiviert wurde, muss natürlich der MySQL-Daemon vor dem RSyslog-Daemon gestartet werden. Dazu sind folgende Informationen wichtig:
rsyslog
startet in den Run-Leveln 2,3,4,5 an Stelle 26 und stoppt an Stelle 74 (S26rsyslog | K74rsyslog)mysqld
startet in den Run-Leveln 2,3,4,5 an Stelle 64 und stoppt an Stelle 36 (S64mysqld | K36mysqld)
Dieser Umstand kann zu folgender Fehlermeldung beim Neustart des Rechners führen:
Jul 31 20:37:01 rechnername rsyslogd:db error (2003): Can't connect to MySQL server on '127.0.0.1' (111)
Um dieses Problem zu beseitigen sind zwei schritte notwendig:
- Aufnahme des
rsyslog
in die Startkonfiguration - Ändern der Startposition von
mysqld
Um den rsyslog
in die automatische Startkonfiguration aufzunehmen geben Sie folgende Befehle ein:
# chkconfig --add rsyslog
Anschliessend wird der rsyslog
mit folgendem Befehl aktiviert:
# chkconfig rsyslog on
Zur Änderung der Startposition von mysqld
muss die Datei /etc/init.d/mysql
wie folgt angepasst werden, hier vor der Änderung:
#!/bin/bash # # mysqld This shell script takes care of starting and stopping # the MySQL subsystem (mysqld). # # chkconfig: - 64 36 ...
nach der Änderung:
#!/bin/bash # # mysqld This shell script takes care of starting and stopping # the MySQL subsystem (mysqld). # # chkconfig: - 25 36 ...
Anschliessend muss diese Änderung der Datei /etc/init.d/mysqld
noch wirksam werden. Dazu sind folgende Befehle notwendig:
# chkconfig mysql off
und
# chkconfig mysql on
Zur Überprüfung geben Sie folgende Befehle ein:
# find /etc -name "*mysqld" /etc/rc.d/rc0.d/K36mysqld /etc/rc.d/init.d/mysqld /etc/rc.d/rc2.d/S25mysqld /etc/rc.d/rc1.d/K36mysqld /etc/rc.d/rc4.d/S25mysqld /etc/rc.d/rc3.d/S25mysqld /etc/rc.d/rc5.d/S25mysqld /etc/rc.d/rc6.d/K36mysqld /etc/logrotate.d/mysqld
und
# find /etc -name "*rsyslog" /etc/sysconfig/rsyslog /etc/rc.d/rc0.d/K74rsyslog /etc/rc.d/init.d/rsyslog /etc/rc.d/rc2.d/S26rsyslog /etc/rc.d/rc1.d/K74rsyslog /etc/rc.d/rc4.d/S26rsyslog /etc/rc.d/rc3.d/S26rsyslog /etc/rc.d/rc5.d/S26rsyslog /etc/rc.d/rc6.d/K74rsyslog
Achtung, der MySQL-Daemon wird vor dem RSyslog-Daemon beendet!
Um dieses Problem noch zu beheben sind folgende sechs Befehel notwendig:
# cd /etc/rc.d/rc1.d
zweitens
# ln -s ../init.d/mysqld K75mysqld
drittens
# unlink K36mysqld
viertens
# cd /etc/rc.d/rc6.d
fünftens
# ln -s ../init.d/mysqld K75mysqld
sechstens
# unlink K36mysqld
Eine letzte Überprüfung mit dem nachfolgendem Befehl sollte diese Anzeige hervorbringen:
# find /etc -name "*mysqld" /etc/rc.d/rc0.d/K36mysqld /etc/rc.d/init.d/mysqld /etc/rc.d/rc2.d/S25mysqld /etc/rc.d/rc1.d/K75mysqld /etc/rc.d/rc4.d/S25mysqld /etc/rc.d/rc3.d/S25mysqld /etc/rc.d/rc5.d/S25mysqld /etc/rc.d/rc6.d/K75mysqld /etc/logrotate.d/mysqld
Cron-Job
Um das stetig wachsende Datenvolumen in der [http://www.mysql.de|MySQL]]-Datenbank nicht ins unendliche ansteigen zu lassen, kann z.B. mit einem zeitgesteuerten Script per cron
-Job z.B. einmal am Tag ausgeführt (bzw. in der Nacht), eine gewisse alte Datenmenge aus der Datenbank gelöscht werden.
In diesem Beispiel werden alle Einträge die vom Tagesdatum ausgehend berechnet, älter als zwei Monate sind, aus der Datenbank gelöscht. Bei diesem Löschvorgang wird keine Sicherung der gelöschten Daten angefertigt!
Es sind nur drei Schritte notwendig um dieses Vorhaben zu realisieren.
Im erstern Schritt wird eine Datei mit dem Namen mysql.delete_2_month_data
im Verzeichnis /etc/cron.daily
angelegt. Dies kann mit folgendem Befehl durchgeführt werden:
# touch /etc/cron.daily/mysql.delete_2_month_data
Im zweiten Schritt werden die nötigen Zugriffsrechte gesetzt, hier das Recht auf Ausführung der Datei, mit folgendem Befehl:
# chmod +x /etc/cron.daily/mysql.delete_2_month_data
Der dritte und letzte Schritt zeigt den Inhalt der Datei mysql.delete_2_month_data
im Verzeichnis /etc/cron.daily
. Verwenden Sie dazu einen Editor Ihrere Washl (z.B. vi):
#!/bin/sh echo "DELETE FROM loganalyzer.SystemEvents WHERE DeviceReportedTime <= DATE_SUB(NOW(), INTERVAL 2 MONTH);" | mysql --host=localhost --user=rsyslog --password=passlog > /dev/null
Zum testen, ob das Script auch funktioniert, kann mit folgendem Befehl in das Verzeichnis /etc/cron.daily
gewechselt werden:
# cd /etc/cron.daily
Anschliessend wird folgender Befehl genutzt um das Script auszuführen ( es wird keine Ausgabe erzeugt !!!)
# ./mysql.delete_2_month_data
Es erfolgt keine Ausgabe auf dem Bildschirm, jedoch sollte das Datenvolumen in der [http://www.mysql.de|MySQL]]-Datenbank abgenommen haben!
e-Mail Unterstützung
Um das Versenden von e-Mail's via RSyslog einsetzen zu können, ist es notwendig die Konfigurationsdatei /etc/rsyslog.conf
entsprechend um nachfolgende Eintragungen zu erweitern - z.B. am Anfang der Konfigurationsdatei /etc/rsyslog.conf
:
$ModLoad ommail.so
Das eigentliche Versenden einer e-Mail wird dann von folgenden Zeilen durchgeführt - was am Ende der Konfigurationsdatei /etc/rsyslog.conf
stehen sollte:
$template mailSubject,"RSYSLOG Notification from %hostname%.tachtler.net" $template mailBodyAuthFailure,"RSYSLOG Alert\r\nmsg='%msg%'" $ActionMailSMTPServer 127.0.0.1 $ActionMailSMTPPort 25 $ActionMailFrom absender@nss.tachtler.net $ActionMailSubject mailSubject $ActionMailEnableBody on $ActionExecOnlyOnceEveryInterval 60 $ActionMailTo empfaenger@nss.tachtler.net if $msg contains 'authentication failure' then :ommail:;mailBodyAuthFailure $ActionMailTo empfaenger@nss.tachtler.net if $msg contains 'Invalid user' then :ommail:;mailBodyAuthFailure
Erklärung der einzelnen Konfigurationszeilen
Vorlage (Template) für den e-Mail-Betreff (Subject) der e-Mail. %hostname%
ist der Name des Rechners auf dem der rsyslogd
läuft!
- $template mailSubject,„RSYSLOG Notification from %hostname%.tachtler.net“
Vorlage (Template) für den Inhalt (Body) der e-Mail, am besten gesamte die Zeile aus dem Log, nach der per Schlagwort gefiltert wurde:
- $template mailBodyAuthFailure,„RSYSLOG Alert\r\nmsg='%msg%'„
IP-Adresse oder Hostname des e-Mail-Servers an den die e-Mail versendet werden soll:
- $ActionMailSMTPServer 127.0.0.1
Port des e-Mai-Servers über den die e-Mail an den e-Mail-Server eingeliefert werden soll. Standard ist Port 25
!
- $ActionMailSMTPPort 25
Absender der e-Mail mit e-Mail-Adresse:
- $ActionMailFrom absender@nss.tachtler.net
Template, welches als Betreff (Subject) für die e-Mail verwendet werden soll:
- $ActionMailSubject mailSubject
Übertragung des e-Mail Inhalts (Body) auch an z.B. Pager, oder SMS-Empfänger, sprich generell:
- $ActionMailEnableBody on
Versenden von nur einer e-Mail, innerhalb der angegeben Zeitspanne - Sekunden. WICHTIG - Verhindern von massiver e-Mail-Generierung:
- $ActionExecOnlyOnceEveryInterval 60
Empfänger der e-Mail, der durch nachfolgendes Schlagwort gefilterten Log-Meldung:
- $ActionMailTo empfaenger@nss.tachtler.net
Schlagwort, nach dem die LOG-Meldung gefilter wird, und mit welchem e-Mail Inhalt (Body) die e-Mail versendet werden soll:
- if $msg contains 'authentication failure' then :ommail:;mailBodyAuthFailure
Remote-Logging aktivieren
Um das Logging von anderen Rechnern im Netzwerk, oder Netzwerkkomponenten wie z.B. Router oder Switche an den RSyslog zu ermöglichen sind nur wenige Ergänzungen an der Konfigurationsdatei /etc/rsyslog.conf
notwendig, welche nachfolgend beschrieben werden sollen. (nur relevanter Ausschnitt):
... $ModLoad imudp.so ... # Allow REMOTE-Logging via UDP on Port 514 listening on all Interfaces $UDPServerAddress 0.0.0.0 $UDPServerRun 514 ...
Um das Entgegennehmen von Log-Informationen nur über ein bestimmtes Interface (Netzwerkkarte bzw. IP-Adresse) zuzulassen kann die nachfolgende Konfigurationszeile wie folgt abgeändert werden, von:
$UDPServerAddress 0.0.0.0
z.B. auf
$UDPServerAddress 192.168.0.1
Ein Überprüfung, ob RSyslog auch via UDP an Port 514 Log-Informationen annehmen würde, kann mit nachfolgendem Befehl durchgeführt werden:
# netstat -tulpen | grep rsyslogd udp 0 0 192.168.0.1:514 0.0.0.0:* 0 5630547 6549/rsyslogd
HINWEIS - Bitte evtl. benötigte Firewall-Freischaltungen nicht vergessen !!!
Konfigurationsbeispiele
Property-Based Filters
Hier die Beispiele für „Property-Based Filters“ welche mit folgenden Fällen dargestellt werden sollen:
Beispiel-Fall 1 |
---|
Auf dem Rechner läuft ein DNS-Server (bind) mit Namen named . Dieser ist so konfiguriert, dass er standardmässig nach daemon.* schreibt, was bewirkt, dass alle Log-Datei-Einträge nach /var/log/messages geschrieben werden. Dies soll nun so abgeändert werden, das der bind -Daemon mit dem Namen named nicht mehr nach /var/log/messages schreibt, sondern nur noch in eine eigene Log-Datei mit dem Namen /var/log/named.log . |
Die Konfigurationsdatei /etc/rsyslog.conf
muss dazu wie folgt aussehen:
# Log all kernel messages to the console. # Logging much else clutters up the screen. #kern.* /dev/console # Log named messages :programname, isequal, "named" /var/log/named.log # Log anything (except mail) of level info or higher. # Don't log private authentication messages! # Don't log named messages! :programname, isequal, "named" ~ *.info;mail.none;authpriv.none;cron.none /var/log/messages # The authpriv file has restricted access. authpriv.* /var/log/secure # Log all the mail messages in one place. mail.* -/var/log/maillog # Log cron stuff cron.* /var/log/cron # Everybody gets emergency messages *.emerg * # Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler # Save boot messages also to boot.log local7.* /var/log/boot.log
Entscheidend ist hier einmal die neue Zeile:
:programname, isequal, "named" /var/log/named.log
Diese Zeile bewirkt, dass eine Datei mit dem Namen /var/log/named.log
erstellt wird, falls diese nicht vorhanden sein sollte und alle Log-Einträge an den RSyslog-Daemon, welche mit dem Programm-Namen :programname
der exakt die Bezeichnung named
haben muss, in die Datei /var/log/named.log
einträgt.
Die zweite entscheidende neue Zeile ist:
:programname, isequal, "named" ~
Diese Zeile bewirkt, dass alle Log-Einträge an den RSyslog-Daemon, welche mit dem Programm-Namen :programname
der exakt die Bezeichnung named
haben muss nicht mehr nach /var/log/messages
geschrieben werden.
Wichtig ist hier das Zeichen ~
am Ende der Zeile, da dieses die Negation für die nachfolgende Definition:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
bewirkt und direkt über dieser Definition stehen muss!
Beispiel-Fall 2 |
---|
Fortführend zum „Beispiel Fall 1“ soll nun auch noch zusätzlich unser DHCP-Deamon mit dem Namen dhcpd nicht mehr in die Datei /var/log/messages seine Log-Einträge schreiben, sondern ebenfalls in eine eigene Log-Datei mit dem Namen /var/log/dhcpd.log . |
Wir ergänzen daher die Konfigurationsdatei /etc/rsyslog.conf
mit folgenden neuen Zeilen:
# Log named messages
:programname, isequal, "dhcpd" /var/log/dhcpd.log
und
:programname, isequal, "dhcpd" ~
Da es gerade beim ergänzen der zweiten neuen Zeile auf die Position innerhalb der Konfigurationsdatei /etc/rsyslog.conf
ankommt, hier noch einmal die gesamte Konfigurationsdatei /etc/rsyslog.conf
im Gesamtüberblick:
# Log all kernel messages to the console. # Logging much else clutters up the screen. #kern.* /dev/console # Log named messages :programname, isequal, "named" /var/log/named.log # Log dhcpd messages :programname, isequal, "dhcpd" /var/log/dhcpd.log # Log anything (except mail) of level info or higher. # Don't log private authentication messages! # Don't log named messages! # Don't log dhcpd messages! :programname, isequal, "named" ~ :programname, isequal, "dhcpd" ~ *.info;mail.none;authpriv.none;cron.none /var/log/messages # The authpriv file has restricted access. authpriv.* /var/log/secure # Log all the mail messages in one place. mail.* -/var/log/maillog # Log cron stuff cron.* /var/log/cron # Everybody gets emergency messages *.emerg * # Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler # Save boot messages also to boot.log local7.* /var/log/boot.log
Beispiel-Fall 3 |
---|
Fortführend zum „Beispiel Fall 1“ und zum „Beispiel Fall 2“ soll nun das Log-Format angepasst werden und eine Ausgabe der Datensätze innerhalb der Log-Dateien neu formatiert werden. Es soll z.B. das Datum nicht mehr im Format Jul 1 13:14:56 sondern im Format 2008-07-01 13:14:56 dargestellt werden. |
Um eine Ausgabe wie folgt im der Log-Datei /var/log/messages
(und evtl. auch in alle anderen Log-Dateien im selben Format) zu erzeugen:
2008-07-01 15:57:11.514440 +02:00 hostname 1 kernel: Kernel logging (proc) stopped. 2008-07-01 15:57:11.514567 +02:00 hostname 1 kernel: Kernel log daemon terminating. 2008-07-01 15:57:12.657859 +02:00 hostname 1 rsyslogd: [origin software="rsyslogd" swVersion="2.0.0" x-pid="14431"] exiting on signal 15. 2008-07-01 15:57:32.485455 +02:00 hostname 1 rsyslogd: [origin software="rsyslogd" swVersion="2.0.0" x-pid="14475"][x-configInfo udpReception="No" udpPort="514" t cpReception="No" tcpPort="0"] restart 2008-07-01 15:57:32.551411 +02:00 hostname 1 kernel: rklogd 2.0.0, log source = /proc/kmsg started.
muss die Konfigurationsdatei /etc/rsyslog.conf
wie folgt aussehen:
# Self-Defined Templates $template MyLogFormat,"%timegenerated:1:10:date-rfc3339% %timegenerated:12:26:date-rfc3339% %timegenerated:27:32:date-rfc3339% %HOSTNAME% %iut% %syslogtag%%msg:::drop-last-lf%\n" # Log all kernel messages to the console. # Logging much else clutters up the screen. #kern.* /dev/console # Log dhcpd messages :programname, isequal, "dhcpd" /var/log/dhcpd.log;MyLogFormat # Log named messages :programname, isequal, "named" /var/log/named.log;MyLogFormat # Log dhcpd messages :programname, isequal, "ntpd" /var/log/ntpd.log;MyLogFormat # Log dhcpd messages :programname, isequal, "ddclient" /var/log/ddclient.log;MyLogFormat # Log anything (except mail) of level info or higher. # Don't log private authentication messages! # Don't log dhcpd messages! # Don't log named messages! # Don't log ntpd messages! # Don't log ddclient messages! :programname, isequal, "dhcpd" ~ :programname, isequal, "named" ~ :programname, isequal, "ntpd" ~ :programname, isequal, "ddclient" ~ *.info;mail.none;authpriv.none;cron.none /var/log/messages;MyLogFormat # The authpriv file has restricted access. authpriv.* /var/log/secure;MyLogFormat # Log all the mail messages in one place. mail.* -/var/log/maillog;MyLogFormat # Log cron stuff cron.* /var/log/cron;MyLogFormat # Everybody gets emergency messages *.emerg *;MyLogFormat # Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler;MyLogFormat # Save boot messages also to boot.log local7.* /var/log/boot.log;MyLogFormat
Wichtig ist hier die erste Zeile:
$template MyLogFormat,"%timegenerated:1:10:date-rfc3339% %timegenerated:12:26:date-rfc3339% %timegenerated:27:32:date-rfc3339% %HOSTNAME% %iut% %syslogtag%%msg:::drop-last-lf%\n"
die immer vor Gebrauch des entsprechenden „Templates“ definiert werden muss, da es sonst zu keiner Log-Ausgabe kommt!
Zusätzlich die Ergänzung der einzelnen Zeilen, für welche Log-Dateien das Log-Format gelten soll, z.B.:
*.info;mail.none;authpriv.none;cron.none /var/log/messages;MyLogFormat
Start des RSyslog-Daemons
Ein Start des RSyslog-Daemons kann nur erfolgen, wenn der „alte“ Syslog-Daemon beendet wurde und auch sichergestellt ist, dass dieser nicht mehr, bei einem evtl. Neustart des Rechners, mit gestartet wird. Da beide der „alte“ Syslog-Daemon und der RSyslog-Daemon die gleichen Mechanismen zum Log-Schreiben verwenden, ist es zwingend erforderlich nur einen der beiden zu betreiben!
Bitte geben Sie als root
folgenden Befehl ein, um zu überprüfen wie die aktuelle Konfiguration des Startverhaltens des aktuellen Syslog-Daemons aussieht:
# chkconfig --list | grep syslog rsyslog 0:off 1:off 2:off 3:off 4:off 5:off 6:off syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Falls die Ausgabe wie oben gezeigt erscheinen sollte, wird der „alte“ Syslog-Daemon bei jedem Neustart des Rechners gestartet und nicht der RSyslog-Daemon. Um dies zu ändern geben Sie bitte folgende Befehle ein:
# chkconfig syslog off
* Deaktivieren des automatischen Startens des „alten“ Syslog-Daemons.
# chkconfig rsyslog on
* Aktivieren des automatischen Startens des RSyslog-Daemons.
Das erneute Eingeben des Befehls zur Überprüfung, wie die aktuelle Konfiguration des Startverhaltens des aktuellen Syslog-Daemons aussieht, sollte dann wie folgt erscheinen:
# chkconfig --list | grep syslog rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off syslog 0:off 1:off 2:off 3:off 4:off 5:off 6:off
Damit startet nun ausschliesslich der RSyslog-Daemon anstelle des „alten“ Syslog-Daemons.
Abschliessend kann nun der „alte“ Syslog-Daemon mit folgendem Befehl beendet werden:
# service syslog stop Shutting down kernel logger: [ OK ] Shutting down system logger: [ OK ]
und der RSyslog-Daemon mit folgendem Befehl gestartet werden:
# service rsyslog start Starting system logger: [ OK ] Starting kernel logger: [ OK ]
oder es wird ein Neustart des Rechners durchgeführt.
Falls kein Neustart des Rechners durchgeführt wurde, sondern die beiden Befehle zum beenden des „alten“ Syslog-Daemons und zum starten des RSyslog-Daemons angewannt wurden, sollten in etwa folgende Einträge in der Log-Datei /var/log/messages
zu sehen sein:
Jun 30 11:41:28 rechnername kernel: Kernel logging (proc) stopped. Jun 30 11:41:28 rechnername kernel: Kernel log daemon terminating. Jun 30 11:41:30 rechnername exiting on signal 15 Jun 30 11:41:36 rechnername rsyslogd: [origin software="rsyslogd" swVersion="2.0.0" x-pid="1855"][x-configInfo udpReception="No" udpPort="514" tcpReception="No" tcpPort="0"] restart Jun 30 11:41:36 rechnername kernel: rklogd 2.0.0, log source = /proc/kmsg started.
Aktualisierung von RSyslog
Die aktuell bei CentOS mitgelieferte Version von RSyslog kann mit folgendem Befehl ermittelt werden:
# rsyslogd -v rsyslogd 2.0.0, compiled with: FEATURE_PTHREADS (dual-threading): Yes FEATURE_REGEXP: Yes FEATURE_LARGEFILE: Yes FEATURE_NETZIP (message compression): Yes SYSLOG_INET (Internet/remote support): Yes FEATURE_GSSAPI (GSSAPI Kerberos 5 support): No FEATURE_DEBUG (debug build, slow code): No See http://www.rsyslog.com for more information.
Diese Version beinhaltet z.B. die Unterstützung von MySQL, jedoch ist die Version nicht mehr aktuell. Features wie z.B. das Modul ommail
- welches Unterstützung zum versenden von Meldungen via e-Mail ermöglicht, fehlen! (ommail
ist erst ab Version 3.17.0
enthalten).
Falls dieses oder weitere Features gewünscht sind, muss auf eine aktuellere, nicht in den repositorys von CentOS enthaltene Version „aktualisiert“ werden.
Im folgenden wird beschrieben, wie eine aktuelle Version zu beziehen ist und wie diese „selbst kompiliert“ werden kann und welche Voraussetzungen dazu nötig sind.
Herunterladen
Eine aktuelle Version von RSyslog kann unter der URL RSyslog bezogen werden. Hier wird die zur Zeit aktuelle Version 5.8.0 (stable)
heruntergeladen und installiert. Die zu herunterladende Datei sollte in diesem Beispiel also wie folgt lauten:
rsyslog-5.8.0.tar.gz
Diese Datei wurde z.B. in das Verzeichnis /tmp
heruntergeladen.
Vorbereitungen
Da hier kein rpm
-Paket heruntergeladen wird, sondern eine Archiv-Datei, fehlen einige Bestandteile die im rpm
-Paket von CentOS enthalten waren. Dies sind folgende Dateien:
/etc/logrotate.d/syslog
(Ergänzung des Log-Rotate-Mechanismus)/etc/rc.d/init.d/rsyslog
(Startscript fürrsyslog
)/etc/rsyslog.conf
(Konfigurationsdatei des Syslog-Daemons)/etc/sysconfig/rsyslog
(Parameterdatei des Syslog-Daemons)
Eine vollständige Liste aller im rpm
-Paket von CentOS enthaltenen Dateien, kann mit folgendem Befehl ermittelt werden und sollte eine Ausgabe in etwa wie diese ergeben:
# rpm -qil rsyslog Name : rsyslog Relocations: (not relocatable) Version : 2.0.0 Vendor: CentOS Release : 11.el5 Build Date: Sat 24 May 2008 11:38:16 PM CEST Install Date: Mon 30 Jun 2008 09:12:18 AM CEST Build Host: builder16.centos.org Group : System Environment/Daemons Source RPM: rsyslog-2.0.0-11.el5.src.rpm Size : 454339 License: GPLv2+ Signature : DSA/SHA1, Sun 15 Jun 2008 01:40:27 AM CEST, Key ID a8a447dce8562897 URL : http://www.rsyslog.com/ Summary : Enhanced system logging and kernel message trapping daemons Description : Rsyslog is an enhanced multi-threaded syslogd supporting, among others, MySQL, syslog/tcp, RFC 3195, permitted sender lists, filtering on any message part, and fine grain output format control. It is quite compatible to stock sysklogd and can be used as a drop-in replacement. Its advanced features make it suitable for enterprise-class, encryption protected syslog relay chains while at the same time being very easy to setup for the novice user. /etc/logrotate.d/syslog /etc/rc.d/init.d/rsyslog /etc/rsyslog.conf /etc/sysconfig/rsyslog /sbin/rfc3195d /sbin/rklogd /sbin/rsyslogd /usr/lib/rsyslog /usr/share/doc/rsyslog-2.0.0 /usr/share/doc/rsyslog-2.0.0/AUTHORS /usr/share/doc/rsyslog-2.0.0/COPYING /usr/share/doc/rsyslog-2.0.0/NEWS /usr/share/doc/rsyslog-2.0.0/README /usr/share/doc/rsyslog-2.0.0/bugs.html /usr/share/doc/rsyslog-2.0.0/contributors.html /usr/share/doc/rsyslog-2.0.0/features.html /usr/share/doc/rsyslog-2.0.0/generic_design.html /usr/share/doc/rsyslog-2.0.0/history.html /usr/share/doc/rsyslog-2.0.0/how2help.html /usr/share/doc/rsyslog-2.0.0/install.html /usr/share/doc/rsyslog-2.0.0/ipv6.html /usr/share/doc/rsyslog-2.0.0/man_rsyslogd.html /usr/share/doc/rsyslog-2.0.0/manual.html /usr/share/doc/rsyslog-2.0.0/modules.html /usr/share/doc/rsyslog-2.0.0/property_replacer.html /usr/share/doc/rsyslog-2.0.0/rsconf1_actionexeconlyifpreviousissuspended.html /usr/share/doc/rsyslog-2.0.0/rsconf1_actionexeconlywhenpreviousissuspended.html /usr/share/doc/rsyslog-2.0.0/rsconf1_actionresumeinterval.html /usr/share/doc/rsyslog-2.0.0/rsconf1_allowedsender.html /usr/share/doc/rsyslog-2.0.0/rsconf1_controlcharacterescapeprefix.html /usr/share/doc/rsyslog-2.0.0/rsconf1_debugprintcfsyslinehandlerlist.html /usr/share/doc/rsyslog-2.0.0/rsconf1_debugprintmodulelist.html /usr/share/doc/rsyslog-2.0.0/rsconf1_debugprinttemplatelist.html /usr/share/doc/rsyslog-2.0.0/rsconf1_dircreatemode.html /usr/share/doc/rsyslog-2.0.0/rsconf1_dirgroup.html /usr/share/doc/rsyslog-2.0.0/rsconf1_dirowner.html /usr/share/doc/rsyslog-2.0.0/rsconf1_dropmsgswithmaliciousdnsptrrecords.html /usr/share/doc/rsyslog-2.0.0/rsconf1_droptrailinglfonreception.html /usr/share/doc/rsyslog-2.0.0/rsconf1_dynafilecachesize.html /usr/share/doc/rsyslog-2.0.0/rsconf1_escapecontrolcharactersonreceive.html /usr/share/doc/rsyslog-2.0.0/rsconf1_failonchownfailure.html /usr/share/doc/rsyslog-2.0.0/rsconf1_filecreatemode.html /usr/share/doc/rsyslog-2.0.0/rsconf1_filegroup.html /usr/share/doc/rsyslog-2.0.0/rsconf1_fileowner.html /usr/share/doc/rsyslog-2.0.0/rsconf1_includeconfig.html /usr/share/doc/rsyslog-2.0.0/rsconf1_mainmsgqueuesize.html /usr/share/doc/rsyslog-2.0.0/rsconf1_moddir.html /usr/share/doc/rsyslog-2.0.0/rsconf1_modload.html /usr/share/doc/rsyslog-2.0.0/rsconf1_repeatedmsgreduction.html /usr/share/doc/rsyslog-2.0.0/rsconf1_resetconfigvariables.html /usr/share/doc/rsyslog-2.0.0/rsconf1_umask.html /usr/share/doc/rsyslog-2.0.0/rsyslog_conf.html /usr/share/doc/rsyslog-2.0.0/rsyslog_mysql.html /usr/share/doc/rsyslog-2.0.0/rsyslog_packages.html /usr/share/doc/rsyslog-2.0.0/rsyslog_php_syslog_ng.html /usr/share/doc/rsyslog-2.0.0/rsyslog_recording_pri.html /usr/share/doc/rsyslog-2.0.0/rsyslog_stunnel.html /usr/share/doc/rsyslog-2.0.0/status.html /usr/share/doc/rsyslog-2.0.0/syslog-protocol.html /usr/share/doc/rsyslog-2.0.0/version_naming.html /usr/share/man/man5/rsyslog.conf.5.gz /usr/share/man/man8/rfc3195d.8.gz /usr/share/man/man8/rklogd.8.gz /usr/share/man/man8/rsyslogd.8.gz
Ab hier werden root
-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um root
zu werden geben Sie bitte folgenden Befehl ein:
$ su - Password:
Um selbst kompilieren zu können ist es erforderlich das ein Compiler auf dem Rechner verfügbar ist. Unter Linux ist gcc
(gcc.i386) der Standard-Compiler. Falls dieser noch nicht installiert sein sollte kann dies mit folgendem Befehl nachgeholt werden:
# yum install gcc
Nach erfolgreichem auflösen der Abhängigkeiten, sollte ein lauffähiger Compiler zur Verfügung stehen.
Falls auch weiterhin nicht auf die Unterstützung von MySQL durch den RSyslog verzichtet werden soll, ist auch die Installation des Paketes mysql-devel
(mysql-devel.i386) notwendig. Dies kann mit folgendem Befehl erledigt werden:
# yum install mysql-devel
Falls ebenfalls auf eine Net-SNMP Unterstützung von RSyslog nicht verzichtet werden soll, ist auch die Installation des Paketes net-snmp-devel
(net-snmp-devel.i386) notwendig. Dies kann mit folgendem Befehl erledigt werden:
# yum install net-snmp-devel
Nach erfolgreichem auflösen der Abhängigkeiten, sollte die Unterstützung für Net-SNMP zur Verfügung stehen.
Falls ebenfalls auf eine GNU-Tls Unterstützung von RSyslog nicht verzichtet werden soll, ist auch die Installation des Paketes gnutls-devel
(gnutls-devel.i386) notwendig. Dies kann mit folgendem Befehl erledigt werden:
# yum install gnutls-devel
Installation
Als erstes wird die heruntergeladene Archiv-Datei /tmp/rsyslog-5.8.0.tar.gz
mit folgendem Befehl entpackt:
# tar xvzf /tmp/rsyslog-5.8.0.tar.gz
Danach sollte ein Verzeichnis mit Namen /tmp/rsyslog-5.8.0
enstanden sein, in das wir mit folgendem Befehl wechseln:
# cd /tmp/rsyslog-5.8.0
Ein weiterer wichtiger Schritt ist nun die Überprüfung, welche Optional Features für das Kompilieren von RSyslog zur Verfügung stehen und welche davon bei der Kompilation Verwendung finden sollen. Dies kann mit folgendem Befehl überpüft werden:
# ./configure --help `configure' configures rsyslog 5.8.0 to adapt to many kinds of systems. Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print `checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for `--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, `make install' will install all the files in `/usr/local/bin', `/usr/local/lib' etc. You can specify an installation prefix other than `/usr/local' using `--prefix', for instance `--prefix=$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/rsyslog] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: `make V=1') --disable-silent-rules verbose build output (undo: `make V=0') --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-static[=PKGS] build static libraries [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --disable-largefile omit support for large files --enable-regexp Enable regular expressions support [default=yes] --enable-zlib Enable zlib compression support [default=yes] --enable-gssapi-krb5 Enable GSSAPI Kerberos 5 support [default=no] --enable-pthreads Enable multithreading via pthreads [default=yes] --enable-klog Integrated klog functionality [default=yes] --disable-unix Disable support for unix --enable-inet Enable networking support [default=yes] --disable-fsstnd Disable support for FSSTND --enable-unlimited-select Enable unlimited select() syscall [default=no] --enable-debug Enable debug mode [default=no] --enable-rtinst Enable runtime instrumentation mode [default=no] --enable-valgrind Enable valgrind support settings [default=no] --enable-memcheck Enable extended memory check support [default=no] --enable-diagtools Enable diagnostic tools [default=no] --enable-mysql Enable MySql database support [default=no] --enable-pgsql Enable PostgreSQL database support [default=no] --enable-oracle Enable native Oracle database support [default=no]. (Check your ORACLE_HOME environment variable!) --enable-libdbi Enable libdbi database support [default=no] --enable-snmp Enable SNMP support [default=no] --enable-gnutls Enable GNU TLS support [default=no] --enable-rsyslogrt Build rsyslogrt [default=yes] --enable-rsyslogd Build rsyslogd [default=yes] --enable-extended-tests extended testbench [default=no] --enable-mysql-tests enable MySQL specific tests in testbench [default=no] --enable-mail Enable mail support [default=no] --enable-imdiag Enable imdiag [default=yes] --enable-relp Enable RELP support [default=no] --enable-rfc3195 Enable RFC3195 support [default=no] --enable-testbench testbench enabled [default=yes] --enable-imfile file input module enabled [default=no] --enable-imsolaris solaris input module enabled [default=no] --enable-imptcp plain tcp input module enabled [default=no] --enable-impstats periodic statistics module enabled [default=no] --enable-omprog Compiles omprog module [default=no] --enable-omudpspoof Compiles omudpspoof module [default=no] --enable-omstdout Compiles stdout module [default=no] --enable-pmlastmsg Compiles lastmsg parser module [default=no] --enable-pmcisconames Compiles cisconames parser module [default=no] --enable-pmaixforwardedfrom Compiles aixforwardedfrom parser module [default=no] --enable-pmsnare Compiles snare parser module [default=no] --enable-pmrfc3164sd Compiles rfc3164sd parser module [default=no] --enable-omruleset Compiles ruleset forwarding module [default=yes] --enable-omdbalerting Compiles omdbalerting module [default=no] --enable-gui Enable GUI programs [default=no] --enable-omuxsock Compiles omuxsock module [default=no] --enable-cust1 Compiles cust1 module [default=no] --enable-smcustbindcdr Compiles smcustbindcdr module [default=no] --enable-imtemplate Compiles imtemplate template module [default=no] --enable-omtemplate Compiles omtemplate template module [default=no] --enable-omhdfs Compiles omhdfs template module [default=no] Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-moddirs=DIRS Additional module search paths appended to [$libdir/rsyslog] --with-systemdsystemunitdir=DIR Directory for systemd service files Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir> LIBS libraries to pass to the linker, e.g. -l<library> CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if you have headers in a nonstandard directory <include dir> CPP C preprocessor PKG_CONFIG path to pkg-config utility GNUTLS_CFLAGS C compiler flags for GNUTLS, overriding pkg-config GNUTLS_LIBS linker flags for GNUTLS, overriding pkg-config RELP_CFLAGS C compiler flags for RELP, overriding pkg-config RELP_LIBS linker flags for RELP, overriding pkg-config LIBLOGGING_CFLAGS C compiler flags for LIBLOGGING, overriding pkg-config LIBLOGGING_LIBS linker flags for LIBLOGGING, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to <rsyslog@lists.adiscon.com>.
Eine Mögliche Kompilation könnte z.B. mit folgenden Optional Features erfolgen. Eine Überprüfung ob alle Voraussetzungen erfüllt sind, wird mit nachfolgendem Befehl durchgeführt:
# ./configure CFLAGS="-O3 -march=i686" --enable-gssapi-krb5 --enable-debug --enable-mysql --enable-snmp --enable-gnutls --enable-mail --enable-imdiag --enable-imfile --enable-omprog --enable-omstdout --enable-omruleset --enable-imtemplate --enable-omtemplate --enable-extended-tests --enable-mysql-tests
Die Anzeige sollte nach vielen Ausgaben, welche z.B. wie folgt aussehen:
checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking for gcc... gcc ...
und mit einer Anzeige enden, die in etwa wie folgt aussieht:
... **************************************************** rsyslog will be compiled with the following settings: Large file support enabled: yes Networking support enabled: yes Regular expressions support enabled: yes Zlib compression support enabled: yes rsyslog runtime will be built: yes rsyslogd will be built: yes GUI components will be built: no custom module 1 will be built: no Unlimited select() support enabled: no ---{ input plugins }--- Klog functionality enabled: yes (linux) plain tcp input module enabled: no imdiag enabled: yes file input module enabled: yes Solaris input module enabled: no periodic statistics module enabled: no input template module will be compiled: yes ---{ output plugins }--- Mail support enabled: yes omprog module will be compiled: yes omstdout module will be compiled: yes omhdfs module will be compiled: no omruleset module will be compiled: yes omdbalerting module will be compiled: no omudpspoof module will be compiled: no omuxsock module will be compiled: no output template module will be compiled: yes ---{ parser modules }--- pmrfc3164sd module will be compiled: no pmlastmsg module will be compiled: no pmcisconames module will be compiled: no pmaixforwardedfrom module w.be compiled: no pmsnare module will be compiled: no ---{ strgen modules }--- sm_cust_bindcdr module will be compiled: ---{ database support }--- MySql support enabled: yes libdbi support enabled: no PostgreSQL support enabled: no Oracle (OCI) support enabled: no ---{ protocol support }--- GnuTLS network stream driver enabled: yes GSSAPI Kerberos 5 support enabled: yes RELP support enabled: no SNMP support enabled: yes ---{ debugging support }--- Testbench enabled: yes Extended Testbench enabled: yes MySQL Tests enabled: yes Debug mode enabled: yes Runtime Instrumentation enabled: no Diagnostic tools enabled: no Enhanced memory checking enabled: no Valgrind support settings enabled: no
Jetzt kann das „eigentliche“ Kompilieren von RSyslog erfolgen. Dies sollte in folgenden Schritten durchgeführt werden:
# make
Falls keine Fehler aufgetreten sein sollten, kann zur Überprüfung noch folgender Befehl ausgeführt werden:
# make check
Abschliessend wird dann die eigentliche Installation mit folgendem Befehl durchgeführt:
# make install
Konfiguration
Aufgrund der erheblichen Versionsdifferenzen, ist es notwendig einige Anpassungen vorzunehmen, die den ursprünglichen Betrieb des RSyslog gewährleisten, so wie vor der „Aktualisierung“.
Als erstes sind folgende Zeilen am Anfang der Konfigurationsdatei /etc/rsyslog
hinzuzufügren:
$ModLoad immark.so $ModLoad imudp.so $ModLoad imtcp.so $ModLoad imuxsock.so $ModLoad imklog.so
Die komplette Konfigurationsdatei sollte dann in etwa wie folgt aussehen:
# Load Modules $ModLoad immark.so $ModLoad imudp.so $ModLoad imtcp.so $ModLoad imuxsock.so $ModLoad imklog.so $ModLoad ommysql.so # Self-Defined Templates $template MyLogFormat,"%timegenerated:1:10:date-rfc3339% %timegenerated:12:26:date-rfc3339% %timegenerated:27:32:date-rfc3339% %HOSTNAME% %iut% %syslogtag%%msg:::drop-last-lf%\n" # Write all Log-Information to MySQL-Database *.* :ommysql:127.0.0.1,loganalyzer,rsyslog,passlog # Log all kernel messages to the console. # Logging much else clutters up the screen. #kern.* /dev/console # Log dhcpd messages :programname, isequal, "dhcpd" /var/log/dhcpd.log;MyLogFormat # Log named messages :programname, isequal, "named" /var/log/named.log;MyLogFormat # Log anything (except mail) of level info or higher. # Don't log private authentication messages! # Don't log dhcpd messages! # Don't log named messages! :programname, isequal, "dhcpd" ~ :programname, isequal, "named" ~ *.info;mail.none;authpriv.none;cron.none /var/log/messages;MyLogFormat # The authpriv file has restricted access. authpriv.* /var/log/secure;MyLogFormat # Log all the mail messages in one place. mail.* -/var/log/maillog;MyLogFormat # Log cron stuff cron.* /var/log/cron;MyLogFormat # Everybody gets emergency messages *.emerg *;MyLogFormat # Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler;MyLogFormat # Save boot messages also to boot.log local7.* /var/log/boot.log;MyLogFormat
Die Konfigurationsdatei /etc/sysconfig/rsyslog
sollte nach minimalen Änderungen wie folgt aussehen:
# Options to syslogd # -m 0 disables 'MARK' messages. # -rPortNumber Enables logging from remote machines. The listener will listen to the specified port. # -x disables DNS lookups on messages recieved with -r # See syslogd(8) for more details SYSLOGD_OPTIONS="-c5" # Options to klogd # -2 prints all kernel oops messages twice; once for klogd to decode, and # once for processing with 'ksymoops' # -x disables all klogd processing of oops messages entirely # See klogd(8) for more details KLOGD_OPTIONS="-x" # SYSLOG_UMASK=077 # set this to a umask value to use for all log files as in umask(1). # By default, all permissions are removed for "group" and "other".
Bevor die nächste Konfigurationsdatei /etc/rc.d/init.d/rsyslog
abgeändert wird, muss eine „Sicherungskopie“ mit folgendem Befehl erstellt werden:
# cp /etc/sysconfig/rsyslog /etc/sysconfig/rsyslog.old
Die Konfigurationsdatei /etc/rc.d/init.d/rsyslog
sollte nach verschiedenen Änderungen wie folgt aussehen:
#!/bin/bash # # rsyslog Starts rsyslogd/rklogd. # # # chkconfig: - 13 88 # description: Syslog is the facility by which many daemons use to log \ # messages to various system log files. It is a good idea to always \ # run rsyslog. ### BEGIN INIT INFO # Provides: $syslog # Required-Start: $local_fs $network $remote_fs # Required-Stop: $local_fs $network $remote_fs # Default-Stop: 0 1 2 3 4 5 6 # Short-Description: Enhanced system logging and kernel message trapping daemons # Description: Rsyslog is an enhanced multi-threaded syslogd supporting, # among others, MySQL, syslog/tcp, RFC 3195, permitted # sender lists, filtering on any message part, and fine # grain output format control. ### END INIT INFO # Source function library. . /etc/init.d/functions RETVAL=0 start() { # Tachtler # default: [ -x /sbin/rsyslogd ] || exit 5 [ -x /usr/local/sbin/rsyslogd ] || exit 5 # Tachtler - disabled - # [ -x /sbin/rklogd ] || exit 5 # Do not start rsyslog when sysklogd is running if [ -e /var/run/syslogd.pid ] ; then echo $"Shut down sysklogd before you run rsyslog"; exit 1; fi # Source config if [ -f /etc/sysconfig/rsyslog ] ; then . /etc/sysconfig/rsyslog else # Tachtler # default: SYSLOGD_OPTIONS="-c3" SYSLOGD_OPTIONS="-c5" # Tachtler # default: KLOGD_OPTIONS="-2" KLOGD_OPTIONS="-x" fi if [ -z "$SYSLOG_UMASK" ] ; then SYSLOG_UMASK=077; fi umask $SYSLOG_UMASK echo -n $"Starting system logger: " daemon /usr/local/sbin/rsyslogd $SYSLOGD_OPTIONS RETVAL=$? echo # Tachtler - disabled - # echo -n $"Starting kernel logger: " # daemon rklogd $KLOGD_OPTIONS # echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/rsyslog return $RETVAL } stop() { # Tachtler - disabled - # echo -n $"Shutting down kernel logger: " # killproc rklogd # echo echo -n $"Shutting down system logger: " killproc rsyslogd RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/rsyslog return $RETVAL } reload() { RETVAL=1 syslog=`cat /var/run/rsyslogd.pid 2>/dev/null` echo -n "Reloading system logger..." if [ -n "${syslog}" ] && [ -e /proc/"${syslog}" ]; then kill -HUP "$syslog"; RETVAL=$? fi if [ $RETVAL -ne 0 ]; then failure else success fi echo # Tachtler - disabled - # RETVAL=1 # echo -n "Reloading kernel logger..." # klog=`cat /var/run/rklogd.pid 2>/dev/null` # if [ -n "${klog}" ] && [ -e /proc/"${klog}" ]; then # kill -USR2 "$klog"; # RETVAL=$? # fi # if [ $RETVAL -ne 0 ]; then # failure # else # success # fi # echo return $RETVAL } rhstatus() { status rsyslogd # Tachtler - disabled - # status rklogd } restart() { stop start } case "$1" in start) start ;; stop) stop ;; restart) restart ;; reload|force-reload) reload ;; status) rhstatus ;; condrestart) [ -f /var/lock/subsys/rsyslog ] && restart || : ;; *) echo $"Usage: $0 {start|stop|restart|reload|force-reload|condrestart}" exit 2 esac exit $?
Restart
Um einen möglichst reibungslosen Übergang auf die aktualisierte Version durchführen zu können, sind folgende Schritte notwendig.
Von folgenden Konfigurationsdateien müssen zwingend Sicherheitskopien mit folgenden Befehlen angelegt werden:
# cp /etc/logrotate.d/syslog /etc/logrotate.d/syslog.save # cp /etc/rc.d/init.d/rsyslog /etc/rc.d/init.d/rsyslog.save # cp /etc/rsyslog.conf /etc/rsyslog.conf.save # cp /etc/sysconfig/rsyslog /etc/sysconfig/rsyslog.save
Erstens wird der „alte“ und aktuell noch laufende rsyslogd
-Daemon gestoppt. Dazu ist ein Wechsel in das Verzeichnis /etc/rc.d/init.d
mit folgendem Befehl notwenig:
# cd /etc/rc.d/init.d/
Anschliessend starten wir das ursprüngliche Start-Script, welches wir unter dem Dateinamen rsyslog.save
gesichert haben sollten mit folgendem Befehl:
# ./rsyslog.old stop
Ab jetzt wird Systemweit kein „Logging“ betrieben!
Der nächste Schritt ist das deinstallieren des „alten“ rsyslogd
-Daemons und alle dazugehörigen Komponenten mit folgendem Befehl, was eine Ausgabe wie folgt zu sehen, ergeben sollte:
yum erase rsyslog Loading "fastestmirror" plugin Setting up Remove Process Loading mirror speeds from cached hostfile * base: centos.intergenia.de * updates: centos.intergenia.de * addons: centos.intergenia.de * extras: centos.intergenia.de Resolving Dependencies --> Running transaction check ---> Package rsyslog.i386 0:2.0.0-11.el5 set to be erased --> Processing Dependency: rsyslog = 2.0.0-11.el5 for package: rsyslog-mysql --> Running transaction check ---> Package rsyslog-mysql.i386 0:2.0.0-11.el5 set to be erased --> Finished Dependency Resolution Dependencies Resolved ============================================================================= Package Arch Version Repository Size ============================================================================= Removing: rsyslog i386 2.0.0-11.el5 installed 444 k Removing for dependencies: rsyslog-mysql i386 2.0.0-11.el5 installed 8.1 k Transaction Summary ============================================================================= Install 0 Package(s) Update 0 Package(s) Remove 2 Package(s) Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Erasing : rsyslog-mysql ######################### [1/2] Erasing : rsyslog ######################### [2/2] warning: /etc/sysconfig/rsyslog saved as /etc/sysconfig/rsyslog.rpmsave warning: /etc/rsyslog.conf saved as /etc/rsyslog.conf.rpmsave Removed: rsyslog.i386 0:2.0.0-11.el5 Dependency Removed: rsyslog-mysql.i386 0:2.0.0-11.el5 Complete!
Wichtig, die beiden Meldungen am Ende des Deinstallationsprozesses:
warning: /etc/sysconfig/rsyslog saved as /etc/sysconfig/rsyslog.rpmsave warning: /etc/rsyslog.conf saved as /etc/rsyslog.conf.rpmsave
Diese besagen, dass die Konfigurationsdateien die Bestandteil dieser Meldungen sind, umbenannt wurden. Da diese Konfiguratiosndateien weiterhin noch benötigt werden, muss mit folgenden Befehlen dies rückgängig gemacht werden:
# mv /etc/sysconfig/rsyslog.rpmsave /etc/sysconfig/rsyslog # mv /etc/rsyslog.conf.rpmsave /etc/rsyslog.conf
Da auch die Konfigurationsdatei /etc/rc.d/init.d/rsyslog
deinstalliert wurde, muss diese aus der „Sicherungskopie“ die vor dem deinstallieren des „alten“ rsyslogd
-Daemons erstellt wurde, mit folgendem Befehl wieder hergestellt werden:
# mv /etc/rc.d/init.d/rsyslog.save /etc/rc.d/init.d/rsyslog
Wichtig - Die aktuelle Terminal-Fenster-Sitzung bzw. der aktuell amgemeldete Benutzer, sollte sich jetzt kurzfristg ab- und wieder anmelden!
Abschliessend wird der „neu“ installierte rsyslog
-Daemon mit folgendem Befehl gestartet und erzeugt nachfolgende Ausgabe:
# service rsyslog start Starting system logger: [ OK ]
Der Ordnung halber können nun alle „Sicherungkopien“ weider gelöscht werden. Dies kann mit folgenden Befehlen erfolgen:
# rm /etc/logrotate.d/syslog.save # rm /etc/rc.d/init.d/rsyslog.save # rm /etc/rsyslog.conf.save # rm /etc/sysconfig/rsyslog.save
Verbesserungen ''/etc/rsyslog.conf''
Folgende Verbesserungen können mit der aktuellen Version (3.19.8
) von RSyslog an der Konfigurationsdatei /etc/rsyslog
vorgenommen werden (hier die komplette Konfigurationsdatei):
# Load Modules $ModLoad immark.so $ModLoad imudp.so $ModLoad imtcp.so $ModLoad imuxsock.so $ModLoad imklog.so $ModLoad ommysql.so # Allow REMOTE-Logging via UDP at interface 192.168.0.1 on Port 514 $UDPServerAddress 192.168.0.1 $UDPServerRun 514 # Template Definitions $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat # Write all Log-Information to MySQL-Database *.* :ommysql:127.0.0.1,loganalyzer,rsyslog,passlog # Log all kernel messages to the console. # Logging much else clutters up the screen. #kern.* /dev/console # Log dhcpd messages :programname, isequal, "dhcpd" /var/log/dhcpd.log # Log named messages :programname, isequal, "named" /var/log/named.log # Log anything (except mail) of level info or higher. # Don't log private authentication messages! # Don't log dhcpd messages! # Don't log named messages! :programname, isequal, "dhcpd" ~ :programname, isequal, "named" ~ *.info;mail.none;authpriv.none;cron.none /var/log/messages # The authpriv file has restricted access. authpriv.* /var/log/secure # Log all the mail messages in one place. mail.* -/var/log/maillog # Log cron stuff cron.* /var/log/cron # Everybody gets emergency messages *.emerg * # Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler # Save boot messages also to boot.log local7.* /var/log/boot.log
Die hauptsächliche Verbesserung liegt darin ein globales Template definieren zu können, was mit folgener Zeile durchgeführt werden kann:
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
* Standard-Template nach Syslog-Standard
Die einzelnen Zuweisungen, welches Template bei welcher Log-Datei angewannt werden kann, können entfallen. Es besteht aber immer noch die Möglicheit dies individuell festlegen zu können.
Abschlusswort
Der rsyslog
-Daemon RSyslog mit seinen vielen erweiterten Funktionen ist ein sehr guter Ersatz für den syslog
-Daemon, welcher standardmässig noch unter CentOS installiert wird.
Jedoch sollte auf den Einsatz eines eigenen Templates verzichtet werden, da hier keine ausreichend gute Unterstützung seitens Logwatch möglich ist. Gerade beim Einsatz einer geänderten Datumsformatierung bei einem Template, wie im Beispiel-Fall 3
demonstriert wird, ergibt sich ein sehr hoher Anpassungsbedarf.