Protokolltransport und Aggregation nach Maßstab

14

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.

Markdrayton
quelle

Antworten:

5

Ich habe drei verschiedene Systeme zum Zentralisieren von Protokollen verwendet:

  1. Syslog / syslog-ng Weiterleitung an einen Host
  2. Zenoss zum Aggregieren und Warnen von Ereignissen
  3. Splunk für die Protokollaggregation und -suche

Für # 3 verwende ich normalerweise syslog-ng, um die Nachrichten von jedem Host direkt in Splunk weiterzuleiten. Es kann auch Protokolldateien direkt analysieren, aber das kann ein bisschen mühsam sein.

Splunk eignet sich hervorragend zum Durchsuchen und Kategorisieren von Protokollen. Ich habe Splunk nicht für die Protokollwarnung verwendet, aber ich denke, es ist möglich.

Gary Richardson
quelle
+1 für Splunk. Sie können festlegen, dass Splunk externe Skripte auslöst, wenn bestimmte Ereignisse erkannt werden. Senden einer E-Mail oder einer SNMP-Trap.
Murali Suriar
2

Sie können einen Blick auf OSSEC werfen, ein vollständiges Open-Source-HIDS, es führt Protokollanalysen durch und kann Aktionen auslösen oder E-Mails bei Warnungen senden. Warnungen werden durch eine Reihe einfacher XML-basierter Regeln ausgelöst. Viele vordefinierte Regeln für verschiedene Protokollformate sind enthalten, und Sie können Ihre eigenen Regeln hinzufügen

http://www.ossec.net/

Guillaume
quelle
1

Schauen Sie sich Octopussy an . Es ist vollständig anpassbar und scheint alle Ihre Bedürfnisse zu erfüllen ...

PS: Ich bin der Entwickler dieser Lösung.

sebthebert
quelle
1
Ich würde nicht riskieren wollen, ein Produkt einzusetzen oder sogar zu empfehlen, dessen Name "pussy" enthält. Das würde bei den meisten Unternehmen wahrscheinlich nicht gut ankommen, besonders wenn Frauen in der IT arbeiten (heutzutage ziemlich häufig).
Seestern
0

Sie müssen sich ein Überwachungssystem ansehen, zum Beispiel Zenoss Core . Unter anderem heißt es auf der Intro-Seite:

Zenoss Event Monitoring and Management bietet die Möglichkeit, Protokoll- und Ereignisinformationen aus verschiedenen Quellen zusammenzufassen, einschließlich Verfügbarkeitsüberwachung, Leistungsüberwachung, Syslog-Quellen , SNMP-Trap-Quellen und Windows-Ereignisprotokoll.

Sehen Sie, welches Tool Sie verwenden, um Ihre Server zu überwachen .

Gimel
quelle
Ich wusste nicht, dass Zenoss über Funktionen zur Protokollaggregation verfügt. Ich werde einen Blick darauf werfen - danke.
Markdrayton