Wie analysieren Sie Protokolldateien von UNIX / Linux-Computern? Wir betreiben mehrere hundert Server, die alle ihre eigenen Protokolldateien erstellen, entweder direkt oder über Syslog. Ich suche nach einer vernünftigen Lösung, um diese zu aggregieren und wichtige Ereignisse herauszusuchen. Dieses Problem gliedert sich in 3 Komponenten:
1) Nachrichtentransport
Die klassische Methode ist die Verwendung von Syslog zum Protokollieren von Nachrichten auf einem Remote-Host. Dies funktioniert problemlos für Anwendungen, die sich bei syslog anmelden, ist jedoch weniger nützlich für Anwendungen, die in eine lokale Datei schreiben. Lösungen hierfür können sein, dass sich die Anwendung in einem mit einem Programm verbundenen FIFO anmeldet, um die Nachricht über Syslog zu senden, oder dass Sie etwas schreiben, das die lokalen Dateien überprüft und die Ausgabe an den zentralen Syslog-Host sendet. Wenn wir uns jedoch die Mühe machen, Tools zu schreiben, um Nachrichten in Syslog zu bekommen, sollten wir dann besser die ganze Menge durch etwas wie Facebooks Scribe ersetzen, das mehr Flexibilität und Zuverlässigkeit bietet als Syslog?
2) Nachrichtenaggregation
Es gibt zwei Arten von Protokolleinträgen: Pro Host und Pro Service. Pro-Host-Nachrichten treten auf einem Computer auf. Denken Sie an Festplattenfehler oder verdächtige Anmeldungen. Nachrichten pro Dienst treten auf den meisten oder allen Hosts auf, auf denen ein Dienst ausgeführt wird. Zum Beispiel wollen wir wissen, wann Apache einen SSI-Fehler findet, aber wir wollen nicht den gleichen Fehler von 100 Maschinen. In allen Fällen möchten wir nur eine Nachricht von jedem Nachrichtentyp sehen: Wir möchten nicht, dass 10 Nachrichten besagen, dass dieselbe Festplatte ausgefallen ist, und wir möchten keine Nachricht, wenn eine defekte SSI getroffen wird.
Ein Lösungsansatz besteht darin, mehrere Nachrichten desselben Typs auf jedem Host zu einer zusammenzufassen, die Nachrichten an einen zentralen Server zu senden und dann Nachrichten desselben Typs zu einem Gesamtereignis zusammenzufassen. SER kann das, aber die Verwendung ist umständlich. Sogar nach ein paar Tagen des Fummelns hatte ich nur rudimentäre Aggregationen und musste ständig die Logik nachschlagen, die SER verwendet, um Ereignisse zu korrelieren. Es ist mächtig, aber knifflig: Ich brauche etwas, das meine Kollegen in kürzester Zeit aufnehmen und verwenden können. SER-Regeln erfüllen diese Anforderung nicht.
3) Generieren von Warnungen
Wie teilen wir unseren Administratoren mit, wenn etwas Interessantes passiert? Posteingang der Gruppe? In Nagios injizieren?
Wie lösen Sie dieses Problem? Ich erwarte keine Antwort auf einem Teller. Ich kann die Details selbst herausarbeiten, aber eine Diskussion auf hoher Ebene über das, was sicherlich ein allgemeines Problem ist, wäre großartig. Im Moment verwenden wir eine Mischung aus Cron-Jobs, Syslog und wer weiß, was es sonst noch zu finden gibt. Dies ist nicht erweiterbar, wartbar oder flexibel und daher vermissen wir viele Dinge, die wir nicht sollten.
Aktualisiert: Wir verwenden Nagios bereits für die Überwachung. Dies ist hervorragend geeignet, um Hosts / Testservices / usw. zu erkennen, aber weniger nützlich, um Protokolldateien zu scrappen. Ich weiß, dass es Protokoll-Plugins für Nagios gibt, aber ich bin an etwas Skalierbarerem und Hierarchischerem interessiert als an Warnungen pro Host.