2015-02-25 6 views
8

Durch das Lesen des folgenden Beitrags von 12factor habe ich eine Frage gestellt, die ich gerne überprüfen würde, wie Sie damit umgehen.12Factor App: Erfassen von stdout/stderr Logs mit Fluentd

Grundsätzlich sollte eine App direkt auf stdout/stderr schreiben. Gibt es sowieso um diese Ströme direkt zu fließenden (nicht gebunden an rsyslog/syslog) umzuleiten? Da mir fluentd mehr bewusst wird, glaube ich, dass es ein großartiges Werkzeug für die Protokoll-Aggregation von mehreren Apps/Plattformen wäre. Die Hauptüberlegung dafür ist, dass wenn rsyslog/syslog nicht plattformübergreifend verfügbar ist, und wie ich es verstehe, die Verwendung von Logging-Frameworks (die die erforderliche Konfiguration benötigen, damit sie funktionieren) ein Verstoß wäre der 12 Faktor.

Danke!

Antwort

2

Sie müssen Ihren Prozessmanager für die Verwendung von fluentd konfigurieren.

"Twelve-factor app processes should [...] rely on the operating system’s process manager (such as Upstart, a distributed process manager on a cloud platform, or a tool like Foreman in development) to manage output streams [...]."

Grundsätzlich ist die Idee, dass Log-Umleitung ein Anliegen der Prozess-Manager ist. Upstart, zum Beispiel, in der Regel auf logger, die eine Option (-u) hat, um eine Unix Domain Socket zu schreiben. Im Gegenzug können Sie configure fluentd to use that same socket as an input stream.

Fluentd supports a lot of input streams (sie nennen sie Datenquellen), die eine Lösung für fast jede Umgebung & Prozess-Manager, die Sie verwenden könnten (die wir wissen müssen, um eine vollständigere Lösung bereitzustellen) bieten.

1

Dies ist immer noch ein experimentelles Programm, aber Sie können einen Blick auf stdout-Hook werfen.

Dieses Programm liest STDOUT Ausgabe von Kind-Prozess, und posten die Datensätze Fluentd.