Frage

Bei der Arbeit, wir bauen eine verteilte Anwendung (möglicherweise über mehrere Maschinen auf einem LAN, möglicherweise später über mehrere Kontinente auf einem WAN + VPN). Wir wollen keine Log-Dateien lokal auf jedem Rechner (Auffüllen seiner Scheibe und unmöglich zu betrachten, in Aggregat), so müssen wir die Protokollierung über das Netzwerk zentralisieren. Die meisten Protokolle werden nicht wichtig sein, so UDP ist für sie in Ordnung, aber einige sind Geld zu verlieren wichtige Warnungen und müssen zuverlässig geliefert werden, TCP impliziert. Wir sind besorgt über das Netzwerk congesting wenn das Logging-Protokoll zu gesprächig ist, oder die Apps zu einem Schleichen ziehen, wenn es nicht reagiert.

Einige Möglichkeiten, die ich habe in Betracht gezogen werden:

  • syslog (es scheint perfekt, aber mein Chef hat einen Animus gegen diese so kann ich nicht in der Lage sein, es zu wählen).
  • Schreiber von Facebook (aber es scheint ein bisschen Schwergewicht mit einem Server auf jedem Rechner - nicht jede Protokollmeldung muss ultra-Zuverlässigkeit).
  • mit einer Nachrichten-Warteschlange wie rabbitmq , die auf verschiedenen Ebenen der Transaktionssicherheit abgestimmt mehrere Warteschlangen haben.
  • schlimmsten Fall kann ich meine eigenen von Grund auf neu schreiben.

Haben Sie andere Vorschläge? Welche zentrale Protokollierung Lösungen, die Sie verwendet haben, und wie gut haben sie trainieren?

Edit: Ich war in Richtung Schreiber gelehnt, weil sein Store-and-forward-Design die laufende App von Netzwerklatenz abkoppelt. Aber nachdem es installieren zu kämpfen, fand ich, dass (1) es als Binärpaket nicht verfügbar ist - heutzutage das ist unverzeihlich - und (2) es hängt eng auf einer Bibliothek (thrift), die nicht als Binärpaket entweder ist! Und das Schlimmste ist, wäre es nicht einmal richtig kompilieren. Das ist nicht die Qualität Code freigeben, auch in Open Source.

War es hilfreich?

Lösung

Wir haben erfolgreich verwendet haben ZeroMQ für die Protokolle eines verteilten Anwendungsszenario wie die Ihre. Es ist sehr zuverlässig und unglaublich schnell. Wir zogen nach ZeroMQ nach einer nicht so erfolgreichen Umsetzung mit zu verbreiten . In unserer Einrichtung ist ein einzelner ZeroMQ Server in der Lage mehr als 70 verschiedene Protokolle von einem mittleren bis hohen beschäftigt verteilten Anwendung zu behandeln. Sie empfängt Daten von LAN und über das Internet.

Wenn Sie einen detaillierten Queue-Server Vergleich aus dem Second Life Wiki auf dieser Seite sehen .

Hoffe, es hilft!

Andere Tipps

Es ist in letzter Zeit mehrere Alternativen. Bemerkenswert ist, wird Scribe nicht mehr aufrechterhalten. Facebook entwickelt seine Nachfolger genannt Caligraphus, und es ist nicht Open-Source. Hier ist eine Liste von Alternativen.

  • syslog: auf allen Linux-Distributionen installiert
  • Fluentd : C + Rubin-basierten Leicht Logger, die Protokolle als JSON-Stream behandelt
  • Flume : bei Cloudera entwickelt, die in Java geschrieben und arbeitet gut mit Hadoop Ökosysteme
  • Apache Kafka : bei LinkedIn entwickelt, Pull-basierte Architektur
  • Scribe: Open-Source von Facebook, aber nicht gepflegt mehr

Disclaimer:. Ich bin ein Committer von Fluentd Projekt

Syslog ist gut, wenn man nur auf die Infrastruktur-Protokolle (zum Beispiel auf Systemebene) konzentrieren möchten. Ich hörte, dass KIWI Syslog Server gut ist, obwohl es selbst nicht versuchen. Auf der anderen Seite, wenn Sie eine Anwendung bezogenes protokollieren wollen, ist ein syslog vielleicht nicht die beste Option für diesen. Falls Sie Apache Logging-Dienste nutzen (log4j, log4xxx und der Rest), dann logFaces wäre ein guter sein Lösung, wie es gebaut ist besonders für mehrere Anwendungen an einem Ort aggregiert werden. Funktioniert sowohl mit TCP oder UDP-Verbindungen und hat ordentliche Protokollanzeige und Datenbankintegration.

Disclosure . Ich bin der Autor dieses Produkts

Die anderen Beispiele könnten groß sein, aber ich habe viel Glück gehabt mit Syslog-NG . Es ist äußerst flexibel und konfigurierbar; obwohl es ziemlich einfach ist es zu holen und mit schnell etwas Nützliches tun.

Sie auch interessieren könnten SNMP-Benachrichtigungen verwendet wird.

Bewerten alle in diesem Thread empfohlen Alternativen. Suchte angetrieben etwas Python. mehr gegoogelt und gefunden Wache https://getsentry.com/welcome/ Open Source, gut dokumentiert. Sollte für kommerzielle zuverlässig sein, da es ein Unternehmen auf dieser Basis ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top