syslog-ng & splunk …
… oder warum logging auch Spass machen kann.
Als ich neulich auf der Suche nach einer alternative für den WatchGuard LogServer gewesen bin habe ich (eigentlich eher durch Zufall) Splunk gefunden. Mittlerweile habe ich mir die freie Version runtergeladen und hatte mal etwas Zeit zum Testen. Die Edition kann 500 MB am Tag indizieren. Für mehr gibt es Lizenzen. Ich denke das sollte für eine Hand voll Syslog-Clients wohl ausreichend sein wenn man nicht unbedingt allen möglichen Unsinn loggen will. syslog-ng nutze ich bereits seit einiger Zeit weil er doch deutlich mächtiger und vor allem viel viel flexibler ist als der Standard syslogd von Debian. Aktuell fallen da ca. 75-100 MB/Tag von remote Syslog-Clients an.
Splunk an sich macht einen sehr soliden Eindruck. Mit all den Hilfsmitteln die man von einem Front-End für Logdaten erwarten könnte. Suche in Logfiles, Live-Tail, vordefinierte Reports und Filter sind wohl nur ein paar Funktionen von dem was die Software kann. Meine ersten Schritte stehen hier
Die Konfiguration ist mehr als einfach. Nach dem Download und der Installation von Splunk (ich nutze das Debian-Paket was für 32-bit zur Verfügung steht), geht es erstmal damit los eine Unix-Pipe zu erzeugen wo die Syslog Messages hingeleitet werden. Ich habe vorher den Splunk-Server nicht gestartet. Das tue ich nach der Konfiguration des Splunk-Moduls was sich um die Pipe kümmert.
root@localhost:~# mkfifo /opt/splunk/syslog-ng.fifo
danach muss die /etc/syslog-ng/syslog-ng.conf bearbeitet werden. Ich habe folgende Zeilen hinzugefügt:
## SPLUNK START ##
# alle Remote-Hosts
source remote { udp(); };# temp. Storage fuer die Logdateien.
# kann nach einiger Zeit des “splunkens” auskommentiert werden
destination hosts {
file(“/var/log/_remote/$HOST/messages”
owner(root) group(adm) perm(0640) dir_perm(0750) create_dirs(yes));
};# die Pipe die fuer Splunk angelegt wurde
destination splunk {
pipe(“/var/run/syslog-ng.fifo”);
};# das eigentliche Logging. Alle Messages von “remote” und “local”
# laufen in die Pipe
log { source(remote); destination(splunk); };# temp. Eintrag fuer File-Logging
log { source(remote); destination(hosts); };
## SPLUNK ENDE ##
die Konfuguration von syslog-ng wäre nach einem Neustart (zum Beispiel mittels /etc/init.d/syslog-ng restart) des selbigen abgeschlossen.
Splunk selbst bekommt noch mit auf den Weg, dass es auf einer Pipe für Syslog-Messages “lauschen” soll. Splunk selbst wurde nach /opt/splunk installiert. Hier finden sich auch die Konfigurationsdateien. Unter /opt/splunk/etc/system/local befindet sich die datei inputs.conf Diese muss bearbeitet werden. Meine inputs.conf schaut so aus:
host = hostname
[fifo:///opt/splunk/syslog-ng.fifo]
disabled = false
host = hostname
sourcetype = syslog
Ich denke das kann in diesem Fall gefahrlos kopiert werden. Eine kleine Anpassung muss noch gemacht werden: Anstelle von “hostname” muss jeweils der lokale Hostname des Servers hin auf den Splunk läuft.
Nach der Anpassung der inputs.conf kann Splunk mittels /opt/splunk/bin/splunk start gestartet werden. Das Webinterface ist unter http://hostname:8000 erreichbar. Um Splunk beim Booten starten zu lassen ist der folgende Befehl notwendig: /opt/splunk/bin/splunk enable boot-start
Mehr zu Splunk vielleicht später … die gesamte Dokumentation vom Hersteller zu Splunk ist unter http://www.splunk.com/…:Installation verfügbar. Die Dokumentation zu syslog-ng kann beim Hersteller (oder hier: Syslog-NG v2.0 Admin-Guide ) heruntergeladen werden.