Good to Know Database

CentOS 5: Syslog-Meldungen per E-Mail versenden


Standardmäßig protokolliert der Syslog-Daemon die Logmeldungen diverser Dienste in bestimmten Logdateien. Welche Meldungen in welchen Logdateien protokolliert werden, regelt hierbei die Konfigurationsdatei /etc/syslog.conf. In machen Fällen wäre es jedoch praktisch, wenn die Logmeldungen zusätzlich direkt per E-Mail an den Administrator gesendet werden, damit dieser zeitnah über ein Problem informiert wird. Die folgende Anleitung soll deshalb zeigen, wie Sie dies mit Hilfe einer Named Pipe umsetzen können.

Erstellen Sie zuerst das Verzeichnis /var/log/pipes und darin eine Named Pipe mit den entsprechenden Zugriffsrechten.

[root@centos5 ~]# mkdir -p /var/log/pipes
[root@centos5 ~]# mkfifo /var/log/pipes/syslog-mailer
[root@centos5 ~]# chmod 0600 /var/log/pipes/syslog-mailer

Anschließend erstellen Sie ein Shell Skript, welches später die Logmeldungen aus der Named Pipe per E-Mail an den Administrator senden wird.

[root@centos5 ~]# vi /usr/sbin/syslog-mailer

Das Shell Skript sollte wie folgt aussehen.

#!/bin/bash

RECIPIENT="root@localhost"
TMOUT=1

while read line ; do
  echo ${line} | grep "last message repeated" >/dev/null 2>&1
  if [ $? -eq 1 ] ; then
    echo "${line}" | /bin/mail -s "New syslog message" ${RECIPIENT}
  fi
done

Die Variable RECIPIENT enthält die E-Mail-Adresse des Administrators. Damit der Befehl read nach einer gewissen Zeit beendet wird, wird durch die Variable TMOUT ein Timeout von einer Sekunde festgelegt. Wenn Syslog gleiche Logeinträge protokollieren soll, werden diese Zusammengefasst und stattdessen ein Logeintrag in der Form von last message repeated x times erzeugt. Diese werden durch das Shell Skript ausgefiltert.

Nachdem Sie das Shell Skript erstellt haben, müssen Sie die Zugriffsrechte anpassen.

[root@centos5 ~]# chmod 0700 /usr/sbin/syslog-mailer

Jetzt müssen Sie in der Konfiguration des Syslog-Daemons die Named Pipe eintragen und dafür sorgen, dass die gewünschten Logmeldungen an die Named Pipe ausgegeben werden.

[root@centos5 ~]# vi /etc/syslog.conf

In diesem Beispiel sollen alle Meldungen mit der Facility local0 an die Named Pipe weitergeleitet werden. Fügen Sie deshalb die folgende Zeile in die Konfigurationsdatei ein.

local0.*                                                |/var/log/pipes/syslog-mailer

Anschließend muss der Syslog-Daemon die neue Konfiguration laden.

[root@centos5 ~]# service syslog reload

Zum Testen der Konfiguration senden Sie jetzt eine Meldung mit der Facility local0 an den Syslog-Daemon.

[root@centos5 ~]# logger -p local0.notice "Dies ist eine Testmeldung."

Damit die Meldung aus der Named Pipe per E-Mail versendet wird, muss noch das Shell Skript unter Angabe der Named Pipe aufgerufen werden.

[root@centos5 ~]# /usr/sbin/syslog-mailer < /var/log/pipes/syslog-mailer

Wenn Sie jetzt Ihr Postfach überprüfen, sollten Sie eine neue E-Mail mit der gesendeten Logmeldung erhalten haben.

[root@centos5 ~]# mail
Mail version 8.1 6/6/93.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 root@localhost.local  Tue May 25 18:45  16/693   "New syslog message"
& 1
Message 1:
From root@localhost.localdomain  Tue May 25 18:45:31 2010
Date: Tue, 25 May 2010 18:45:30 +0200
From: root <root@localhost.localdomain>
To: root@localhost.localdomain
Subject: New syslog message

May 25 18:45:26 centos5 root: Dies ist eine Testmeldung.

& q
Saved 1 message in mbox

Damit die Meldungen aus der Named Pipe regelmäßig per E-Mail versendet werden, sollten Sie einen Cronjob dafür anlegen.

[root@centos5 ~]# crontab -e

Der folgende Cronjob führt das Shell Skript alle fünf Minuten aus.

*/5 * * * * /usr/sbin/syslog-mailer < /var/log/pipes/syslog-mailer >/dev/null 2>&1


Dieser Eintrag wurde am 27.05.2010 erstellt und zuletzt am 20.10.2013 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_33_993.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer