Ubuntu 12.04 Precise Pangolin
Anwendungen und insbesondere Serverdienste schreiben Protokolldateien, um bestimmte Systemzustände, Ereignisse oder Schwellwerte zu protokollieren. Nicht nur in Testphasen kann es sinnvoll sein, diese Protokolle zu sammeln und auszuwerten. Syslog ist faktisch ein Standard zur Übermittlung von Protokoll-Meldungen in einem Netzwerk. Syslog-ng ist eine weit verbreitete, freie Implementierung eines Syslog-Servers unter Linux oder Unix und bietet weitere Funktionen im Vergleich zu syslog. Zusätzlich wurden mit syslog-ng einige Schwachstellen beseitigt.
Um syslog-ng zu installieren[1], benötigt man das Paket
syslog-ng
mit apturl
Paketliste zum Kopieren:
sudo apt-get install syslog-ng
sudo aptitude install syslog-ng
Die Installation von syslog-ng entfernt rsyslog.
Die Log-Dateien liegen dann unter /var/log. Standardmäßig loggt syslog-ng in die Datei /var/log/syslog
Die Einstellungen für die Logs findet man in der Datei /etc/syslog-ng/syslog-ng.conf. Hier sind einige Logs voreingestellt. Will man weitere Logs definieren, muss man in dieser Konfigurationsdatei eine Quelle, einen Filter und ein Ziel (Englisch: source, filter, destination) definieren. So kann man syslog-ng auch als Syslog-Server im Netzwerk einrichten. Die Konfiguration kann anschließend mit dem Befehl
syslog-ng --syntax-only
überprüft werde.
Um das Prinzip zu verdeutlichen, sei nachfolgend beschrieben, wie man syslog-ng dazu bringt, die Log-Dateien des heimischen Netzwerkrouters zu verwalten. Die Benutzung von syslog-ng bietet sich an, da zwar auch ein normaler syslogd diese Daten empfangen und in eine gemeinsame Log-Datei schreiben kann, es jedoch nur mit syslog-ng möglich ist, die Daten anhand der Absenderadresse (der IP-Adresse des Routers) in eine separate Log-Datei zu schreiben.
Angenommen der Router hat die IP-Adresse 192.168.0.1 und ist in der Lage, die Logfiles über UDP-Port 514 an einen Syslog-Server zu übermitteln (das ist Standard). Dann muss man zunächst dem Router mitteilen, dass er seine Logs an den Server zu richten hat. Das kann man bei gängigen Routern über eine Web-Oberfläche machen (siehe Router-Handbuch). Das setzt natürlich voraus, dass der Router seine Logs an einen syslog-Server richten kann.
In Datei /etc/syslog-ng/syslog-ng.conf müssen nun für diese Logs Quelle, Ziel und Filter eingetragen werden. Hierzu öffnet man die Datei mit Rootechten [3] in einem Editor[4] und fügt die folgenden Zeilen ein:
source s_udp { udp(port(514)); };
Der obige Befehl fügt die Quelle zu. Das Quellen-Tag kennt auch noch den Parameter ip
. Dieser Parameter ist optional. Hier kann die IP-Adresse des Hosts (nicht der Logging-Gäste) angegeben werden. Da das nur der Syslog-Server sein kann, kann man hier auch mit
source s_udp { udp(ip(127.0.0.1) port(514)); };
die Loopback-Adresse des Servers eingeben oder
source s_udp { udp(ip(<IP-Adresse des Servers>) port(514)); };
die IP-Adresse des Servers eingeben oder eben diesen Parameter weglassen.
Nun muss noch ein Ziel für die Logs eingegeben werden. Dazu dient der Eintrag destination
:
destination d_router { file("/var/log/router.log"); };
Der Name des Zieleintrags (hier d_router
) kann frei vergeben werden.
Außerdem muss ein Filter definiert werden. Das passiert mit dem Eintrag
filter f_router { host("192.168.0.1"); };
Der Name des Filters (hier f_router
) kann frei vergeben werden. Als Host wird die IP-Adresse des Routers eingetragen.
Quelle, Ziel und Filter müssen schließlich noch im Log-Tag zusammengeführt werden:
log { source(s_udp); filter(f_router); destination(d_router); };
Nachdem die Datei /etc/syslog-ng/syslog-ng.conf gespeichert wurde, muss der Syslog-Dienst im Terminal[2] neu gestartet werden:
sudo /etc/init.d/syslog-ng restart
Wenn nun keine Fehlermeldung erscheint, lauscht der Syslog-Server auf Port 514 auf syslogs vom Router und schreibt sie in die Datei /var/log/router.log.
An diesem Beispiel soll nur das Prinzip erläutert werden. Weitergehende Informationen sind der offiziellen Dokumentation zu entnehmen.
Diese Revision wurde am 18. August 2016 15:05 von aasche erstellt.