rsyslog – Ein Freund (nicht nur) für DataWareHouse und Statistik (via MySQL/Postges/oracle) Fans

rsyslog hat, neben diversen anderen nettigkeiten, eine durchaus interessante Schnittstelle zu MySQL, Postgres oder Oracle. Mit ihr kann man die syslogeinträge, ohne unnötige oder krude Umwege und egal ob mail, ftp, http oder sonstetwas (solange es per ’syslog‘ gelogt wird), in eine Datenbank (hier MySQL) pumpen und diese kann man dann wesentlich einfacher, statt mit grep und co, dann mit SQL-Statements abfragen und ggf. auch mit anderen Tabellen koppeln.

Sehr schön ist auch das rsyslog die Konfigdatei des bisherigen syslogs versteht. Das macht eine Migration sehr einfach.

 

HP: http://www.rsyslog.com/
http://www.rsyslog.com/download/

Das einrichten ist denkbar einfach. „yum install rsyslog“, „yast -i rsyslog“ aus den BSD-Ports unter /usr/ports/sysutils/rsyslog oder per source:

/usr/local/src # wget http://www.rsyslog.com/download/
/usr/local/src # tar xzf rsyslog-5.4.0.tar.gz
/usr/local/src # cd rsyslog-5.4.0
/usr/local/src/rsyslog-5.4.0 # ./configure –enable-regexp –enable-mysql –enable-pgsql –enable-oracle && make && make install
/usr/local/src/rsyslog-5.4.0 # cp rsyslog.conf /etc/
/usr/local/src/rsyslog-5.4.0 # mkdir -p /etc/rsyslog.d
/usr/local/src/rsyslog-5.4.0 # mysql -uroot -p < ./plugins/ommysql/createDB.sql MySQL User: mysql> grant ALL ON Syslog.* to rsyslog@localhost identified by ‚geheimespassword‘;
mysql> flush privileges;

 

Konfigurieren:

# vim /etc/rsyslog.conf

$IncludeConfig /etc/rsyslog.d/*.conf

# vim /etc/rsyslog.d/mysql.conf

# Loading of the MySQL module
$ModLoad ommysql
#loghandler      :Driver:Hostname, Datenbankname, MySQL-Benutzername, MySQL-Passwort
# Ich will hier nur mail in die Datenbank pumpen
mail.*  :ommysql:127.0.0.1,Syslog,rsyslog,geheimespassword

Man kann natürlich auch in unterschiedliche Datenbanken und/oder Hosts, wie z.B. syslog_mail oder syslog_http, loggen sofern das jeweilige Datenbanklayout dem entspricht welches in /usr/local/src/rsyslog-5.4.0/plugins/ommysql/createDB.sql vorzufinden ist.

 

Startscript (rudimentär):

# vim /etc/init.d/rsyslogd

#!/bin/bash

CONFIG=/etc/rsyslog.conf
PID=/var/run/rsyslog.pid

case $1 in

start)
        /usr/local/sbin/rsyslogd -f $CONFIG -p $PID
;;
stop)
        kill -TERM `cat $PID`
;;
reload)
        kill -HUP `cat $PID`
;;
restart)
        $0 stop
        $0 start
;;
*)
        echo "Usage: $0 {start|stop|reload|restart}"
        exit 1
;;
esac

exit 0

 

Stoppen des bisherigen Syslogs, starten des rsyslogds und fertig.