Syslog-ng via ipkg installieren

Aus

Alternativen syslog (syslog-ng) installieren

Bei Softwareinstallationen via ipkg handelt es sich nicht um Pakete, die von Synology freigegeben worden wären. Die Installation solcher Pakete erfolgt immer auf eigenes Risiko. Ein Backup ist immer von Vorteil

Was ist syslog?

Der Syslog Daemon ist dafür da Log Meldungen aus dem System zu empfangen und zentral aufzuzeichnen. Praktisch jede Anwendung meldet beinahe jede ihrer Bewegungen an Syslog. Dieser enscheidet dann, was in die Log Files übernommen wird und was nicht. Leider zeigt der Default Syslog bei den DS nicht wirklich viel an. Nur schon die Verarbeitung einer Email mit Postfix erzeugt mehr Zeilen im Syslog als Synology beim Booten. Darum habe ich mir mal den syslog-ng Daemon installiert und bin wirklich begeistert was der alles loggt. Einfach wirklich alles... Wie man den Default Syslog anpassen kann hat itari in seinem Post im Forum gut beschrieben

Voraussetzungen

  • ipkg für die jeweilige Prozessorarchitektur ist installiert
  • Zugriff auf die Shell Konsole via telnet oder ssh als root
  • Texteditor mit korrekten UNIX-Zeilenendzeichen (\n und nicht \r\n): z.B. vi oder nano auf der DS und Notepad++ für Windows

Wie man ipkg installiert steht hier in unserem Wiki, der Zugriff auf die Shell wird hier behandelt und eine Beschreibung des Editors vi ist ebenfalls vorhanden

Log geht's

Installation

syslog-ng ist ein ipkg Paket und muss daher auch über ipkg eingespielt werden

$ ipkg update
$ ipkg install syslog-ng

Dabei sollte ipkg auch gleich die zusätzlichen benötigten Pakete installieren

Konfiguration

Damit der syslog-ng starten kann muss man erst den "alten" Syslog am Starten hindern. Der Default syslog wird in zwei Dateien referenziert:

  • /etc/rc
  • /etc/defaults/rc.conf
/etc/rc

Hier sucht ihr nach folgenden Zeilen

syslogd_enable="YES"
syslogd_flags="-S"
case ${syslogd_enable} in
[Yy][Ee][Ss])
        # Transitional symlink (for the next couple of years :) until all
        # binaries have had a chance to move towards /var/run/log.
        if [ ! -L /dev/log ]; then
                # might complain for r/o root f/s
                ln -sf /var/run/log /dev/log
        fi

        rm -f /var/run/log
        echo "Starting syslogd..."
        ${syslogd_program:-/sbin/syslogd} ${syslogd_flags}
        /sbin/klogd
      ;;
esac

und setzt einfach 'syslogd_enable="NO"'

/etc/defaults/rc.conf

hier sucht ihr nach folgenden Zeilen

syslogd_enable="YES"
syslogd_program="/sbin/syslogd"
syslogd_flags=""

und setzt ebenfalls den wert NO. Ich habe auch versucht das YES zu belassen und als Program den syslog-ng anzugeben. Zweimal rebooten ging es gut und nach dem 3. lief der Syslog-ng nicht mehr. Darum setzt den Wert auf NO und verwendet ein Shellscript zum Starten des Daemons.

Startscript

Das Startscript das von ipkg bei der Installation angelegt wird ist leider nicht ganz korrekt. Drum öffnet die Datei /opt/etc/init.d/S01syslog-ng

#!/bin/sh
#
# Startup script for syslog-ng
#

# Stop itself if running
if [ -n "`pidof syslog-ng`" ]; then
/bin/killall syslog-ng 2>/dev/null
fi

sleep 2

/opt/sbin/syslog-ng -f

und ersetzt die letzte Zeile mit

/opt/sbin/syslog-ng -f /opt/etc/syslog-ng/syslog-ng.conf

Stellt zudem sicher, dass das Script ausführbar ist und ruft es testweise mal auf (ggf erst den nächsten Abschnitt Fehlermeldungen lesen)

Fehlermeldung(en)
Error binding socket; addr='AF_UNIX(/dev/log)', error='Address already in use (98)'
Error initializing source driver; source='src'

Wenn ihr diese Fehlermeldung erhaltet, wenn ihr das Startscript anwerfen wollte, dann könnte euch folgendes helfen:

$ cd /dev
$ ll log
lrwxrwxrwx    1 root     root           12 Dec  9 08:25 log -> /var/run/log
$ rm log

Bei mir ist auf jeden Fall danach der Syslog-ng durchgestartet. Netterweise kann auch die Syno-FW sauber damit umgehen und schreibt alles brav ins neue Log.

Anpassungen des Log Verhaltens

Wenn es zu viele Logs werden, dann kannst du z.B. für alles zum Thema mail diese in ein Log zusammenfassen /opt/etc/syslog-ng/syslog-ng.conf

destination mail { file("/opt/var/log/mail.log"); };
destination mailinfo { file("/opt/var/log/mail.log"); };
destination mailwarn { file("/opt/var/log/mail.log"); };
destination mailerr { file("/opt/var/log/mail.log"); };

einfach mailinfo mailwarn und mailerr auf das gleiche Log legen wie mail