Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:rsyslog

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ür rsyslog)
  • /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:

  1. rsyslog startet in den Run-Leveln 2,3,4,5 an Stelle 26 und stoppt an Stelle 74 (S26rsyslog | K74rsyslog)
  2. 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:

  1. Aufnahme des rsyslog in die Startkonfiguration
  2. Ä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ür rsyslog)
  • /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.

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/rsyslog.txt · Zuletzt geändert: 2012/08/29 11:02 von klaus