Syslog

Aus Thomas Wiki
Zur Navigation springen Zur Suche springen


Windows Nutzer schauen hier: Systemmeldungen auf einem Windows PC anzeigen

Vorbemerkung[Bearbeiten]

Unix Systeme senden die System-/Fehlermeldungen an einen Dienst der syslogd heißt. Dieser läuft als Prozess im Unix und sorgt dafür, dass diese Meldungen in Dateien protokolliert werden. Wie alles im Unix ist auch dieser Dienst konfigurierbar. Er kann die Meldungen auf den Bildschirm von root (Administrator) schicken, sie in Dateien schreiben, aber auch über ein Netzwerk an einen entfernten Rechner senden oder von einem entfernten Rechner empfangen. Da auf der Reelbox ebenfalls ein Unix, nämlich Linux, läuft, stehen diese Funktionen auch hier zur Verfügung. Bei RMM hat jemand eine einfache Möglichkeit geschaffen, dass auch weniger erfahrene Linux Anwender ihre Reelbox zum Senden der Meldungen an einen anderen Rechner im Netzwerk bewegen können. Es muss auf der RB lediglich eine Variable in einer Konfigurationsdatei angelegt werden. Dann muss nur noch der entfernte Rechner zum Empfangen der Nachrichten gebracht werden.

Konfiguration des syslogd auf der Reelbox[Bearbeiten]

Um die Konfiguration des syslog Dämons der Reelbox zu ändern muss der Eintrag RSYSLOG=<IP-Adresse des entfernten Rechners> in die Datei /etc/sysconfig eingetragen werden. Am einfachsten geht dies mit den folgenden Befehlen, nach der Anmeldung per telnet auf der ReelBox als root.

Prüfen ob schon ein Eintrag vorhanden ist:

grep -i rsyslog /etc/sysconfig

wenn hier keine Ausgabe erfolgt, dann ist alles in Ordnung. Wenn eine Zeile mit RSYSLOG ausgegeben wird, dann am besten die Datei /etc/sysconfig mit vi bearbeiten. Ansonsten den Eintrag mit folgendem Befehl anfügen:

echo "RSYSLOG=\"<ip-Adresse>\"" >> /etc/sysconfig

<ip-Adresse> muss in dem obigen Kommando mit der gewünschten Adresse (z.B. 192.168.10.10) ersetzt werden. Natürlich kann die Zeile RSYSLOG="<ip-Adresse>" auch mit dem vi oder dem RCC in die Datei /etc/sysconfig eingetragen werden. Wer unsicher ist sollte die obigen Kommandos benutzen. Dann kann nichts schief gehen. Wichtig sind die " vor und hinter der IP-Adresse. Die \" sind wie exakt wie oben dargestellt einzugeben!

Wie oben beschrieben ist eine Zeile in der Datei /etc/sysconfig einzutragen. Hier zum Vergleich die letzten Zeilen meiner /etc/sysconfig ausgegeben mit dem Kommando tail per telnet auf der Reelbox:

tail /etc/sysconfig
NFS_OPT_RW="yes"
NFS_OPT_HS="soft"
NFS_OPT_LOCK="yes"
NFS_BSIZE="8192"
START_SMBSRV="no"
OPTDIRLINK="hd"
AUTO_NOAD="no"
NAMESERVER="192.168.100.254"
NFS_PROTO="tcp"
PLUGINLIST=""
RSYSLOG="192.168.100.100"

Wenn keine RSYSLOG-Zeile am Ende steht, dann nach obigen Vorgehen noch einmal probieren.

Ab dem nächsten Start des syslogd Programms sendet der syslog Dämon die Log Daten an die in /etc/sysconfig definierte ip-Adresse. Da der syslog Dienst beim Start vom Linux gestartet wird, ist die Änderung zu diesem Zeitpunkt noch nicht aktiv. Der einfachste Weg ist nun die Rellbox einmal in den DeepStandby zu schicken und neu zu starten. Mit Linux Mitteln geht es aber auch ohne Restart der Box. Dazu wieder per telnet auf der Reelbox einloggen und folgende Kommandos eingeben:

/etc/init.d/netservices restart
oder

killall syslogd
syslogd -p /tmp/syslog -C -L -R "192.168.100.100"

Die Adresse 192.168.100.100 ist dabei durch die die Adresse des RSYSLOG Eintrages zu ersetzen.

Der syslog Dämon arbeitet nun wie vorher und man kann mit logread -f weiterhin die syslog-Ausgabe anschauen. Zusätzlich sendet aber der syslogd nun auch Daten ins Netzwerk. Da es sich hierbei um ungerichtete Pakete handelt, also kein Empfänger notwendig ist, ist es der Reelbox egal, ob diese Pakete von jemanden empfangen werden oder nicht. Im Normalfall handelt sich hierbei um eine sehr geringe Menge Daten, daher wird das bestehende Netzwerk davon nicht beeinträchtigt. Der entfernete Rechner an den die Pakete gesendet werden, muss entsprechend konfiguriert werden, damit er die Nachrichten der ReelBox akzeptiert.

Konfiguration des syslogd auf dem entfernten Rechner[Bearbeiten]

Folgende Arbeiten sind an dem Linux/Unix-Rechern erforderlich:

  • Die Firewall muss auf dem Port 514, wenn nicht ein anderer Port definiert wird, durchlassen. Dies ist in Linux auf der internen Netzwerkkarte meist der Fall, es sei denn, die Firewall soll auch vor dem internen Netz schützen.
  • Der syslogd muss externe Meldungen akzeptieren.

Die Konfiguration der Firewall würde den Rahmen sprengen. Unter SuSE Linux nutzt man am besten yast2 firewall und öffnet darüber den Port 514.

Die Konfigurationsdatei für den syslog-ng findet sich unter SuSE Linux 10.1 oder openSuSE 10.2 unter /etc/syslog-ng/syslog-ng.conf. Zuerst muss der syslogd unsere Meldungen aus dem Netz (der ReelBox) akzeptieren. Dies geschieht, in dem der Kommentar vor der Zeile "# udp(ip("0.0.0.0") port(514));" entfernt oder bei einer um Kommentare "bereinigten" Konfigurationsdatei der Befehl wie folgt eingefügt wird.

source src {
       #
       # include internal syslog-ng messages
       # note: the internal() soure is required!
       #
       internal();

       #
       # the default log socket for local logging:
       #
       unix-dgram("/dev/log");

       #
       # uncomment to process log messages from network:
       # In der nächsten Zeile den Kommentar entfernen
       udp(ip("0.0.0.0") port(514));
};


Dies ist schon ausreichend, um die Meldungen der ReelBox entgegen zu nehmen. Wer mag kann hier natürlich auch einen anderen Port wählen oder eine bestimmte Netzwerkkarte/-adresse festlegen.

Schön wäre es, wenn die Meldungen der ReelBox nicht im Standard-Log auftauchen, sondern in einer eigenen Datei. Dazu wird am Ende der Filterdefinitionen folgender Eintrag ergänzt:

filter f_reelvdr    { host('^ReelVDR'); } ;

Bei mir im Netz meldet sich die ReelBox als ReelVDR an. Ggf. ist hier auch die IP-Adresse einzutragen.

Die ReelBox hat hier den Standard-Namen ReelVDR und der Filter f_reelvdr akzeptiert alle Meldungen, die von unserer ReelBox kommen.

Nun muss dem syslogd noch gesagt werden, dass er die Meldungen in eine separate Datei zu speichern hat. Dies bewirkt der destination-Befehl mit dem log-Befehl:

# Alle ReelVDR Nachrichten in eine Datei speichern.
destination reelvdr   { file("/var/log/reelvdr.log") ; } ;
log { source(src); filter(f_reelvdr); destination(reelvdr); };

Ausführliche Informationen über den Aufbau der Konfigurationsdatei finden sich unter man syslog-ng.conf

Nun muss nur noch der syslogd neu gestartet werden.

k1:/etc/syslog-ng # rcsyslog restart
Shutting down syslog services                                        done
Starting syslog services                                             done

Nun betrachtet man das log mit

cat /var/log/reelvdr.log 
tail /var/log/reelvdr.log

oder filtert bestimmte Meldungen (z.B.des Brennprogrammes)

grep '^.*] burn:' /var/log/reelvdr.log

oder die Meldungen eines bestimmten Zeitraumes:

egrep '^Feb 10 12:[01]' /var/log/reelvdr.log