Syslog-ng via ipkg installieren
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...
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