Ich habe beschlossen, diese akzeptierte Antwort zu überarbeiten, da sich der Stand der Technik in den letzten 18 Monaten erheblich verändert hat und es viel bessere Alternativen gibt.
Neue Antwort
MongoDB ist eine unterdurchschnittliche Wahl für eine skalierbare Protokollierungslösung. Dafür gibt es die üblichen Gründe (z. B. Schreibleistung unter Last). Ich möchte noch eins vorbringen, nämlich dass es nur einen einzigen Anwendungsfall in einer Logging-Lösung löst.
Eine starke Protokollierungslösung muss mindestens die folgenden Phasen abdecken:
- Sammlung
- Transport
- Verarbeitung
- Speicherung
- Suchen
- Visualisierung
MongoDB als Option löst nur den Storage-Anwendungsfall (wenn auch etwas schlecht). Sobald die gesamte Kette analysiert ist, gibt es geeignetere Lösungen.
@KazukiOhta erwähnt einige Optionen. Meine bevorzugte End-to-End-Lösung in diesen Tagen beinhaltet:
- Logstash-Spediteur für Abholung &Transport
- Logstash &Riemann für die Verarbeitung
- ElasticSearch für Speicherung und Abfragen
- Kibana3 für die Visualisierung
Die zugrunde liegende Verwendung von ElasticSearch für die Protokolldatenspeicherung verwendet die derzeit beste NoSQL-Lösung für den Anwendungsfall der Protokollierung und Suche. Die Tatsache, dass sich Logstash-Forwarder / Logstash / ElasticSearch / Kibana3 unter dem Dach von ElasticSearch befinden, ist ein noch überzeugenderes Argument.
Da Logstash auch als Graphite-Proxy fungieren kann, lässt sich für das damit verbundene Problem des Sammelns und Analysierens von Metriken (nicht nur Logs) eine ganz ähnliche Kette aufbauen.
Alte Antwort
MongoDB Capped Collections sind äußerst beliebt und für die Protokollierung geeignet, mit dem zusätzlichen Vorteil, dass sie „schemalos“ sind, was normalerweise semantisch für die Protokollierung geeignet ist. Oft wissen wir erst, was wir gut in ein Projekt einloggen wollen, oder nachdem bestimmte Probleme in der Produktion gefunden wurden. Relationale Datenbanken oder strenge Schemata sind in diesen Fällen in der Regel schwer zu ändern, und Versuche, sie „flexibel“ zu machen, führen dazu, dass sie nur „langsam“ und schwer zu verwenden oder zu verstehen sind.
Aber wenn Sie Ihre Protokolle im Dunkeln verwalten und Laser in Betrieb haben und es so aussehen lassen möchten, als ob Sie aus dem Weltraum kommen, gibt es immer Graylog2, das MongoDB als Teil seiner Gesamtinfrastruktur verwendet, aber darüber hinaus eine ganze Menge mehr bietet, z allgemeines, erweiterbares Format, einen dedizierten Protokollsammlungsserver, verteilte Architektur und eine abgefahrene Benutzeroberfläche.