Durch den Datentrichter

Funnel: Open-Source-Monitoring mit System

Dominik Mohilo

(c)Shutterstock / tereez

Mit Funnel hat Verizon ein verteiltes Monitoring-System herausgebracht, das auf einem leichtgewichtigen Streaming-Protokoll basiert. Das Open-Source-Projekt richtet sich dabei allerdings nicht nur an Entwickler, sondern auch an Operator.

Funnel erlaubt Systemen anhand eines einheitlichen API das Pullen, Pushen, Spiegeln und Aggregieren von Metriken verschiedener Systeme. Anschließend können die so gewonnenen Daten weiterverarbeitet und mit einer Visualisierungssoftware in sichtbare Statistiken umgewandelt werden. Funnel kann dabei in verschiedene Systeme integriert werden, zum Beispiel in jene, die StatsD, einen Netzwerk-Daemon, der auf der Node.js-Plattform läuft, verwenden.

Das Funnel-System

Die Arbeit von Funnel beginnt bei den „Importern“ (Importers), die den ersten Abschnitt einer längeren Datenverarbeitungs-Pipeline darstellen. Diese übersetzen telemetrische Daten von Drittanbietern in so genannte „Instrumente“ (Instruments), die das unter der Apache-2.0-Lizenz stehende Programm verarbeiten kann. Benutzt man in Scala lediglich die nativen Instrumente von Funnel, braucht man keine Importer. Die Instrumente bestehen aus sämtlichen Metriken, die in Funnel verfügbar sind, sowie aus den Operationen, die ihrer Erweiterung und Aktualisierung dienen.

Funnel-Pipeline (Verteiltes System (Quelle: http://oncue.github.io/funnel)

Funnel-Pipeline (Verteiltes System (Quelle: http://oncue.github.io/funnel)

Von jedem einzelnen Instrument wandern die Daten in den „Kern“ (Core), der Funnels Herzstück darstellt. Hier können die Datenströme etwa beobachtet und durchsucht werden. Im vierten Abschnitt der Pipeline können dank so genannter „Exporter“ (Exporters) die Datenströme beispielsweise in JSON übersetzt und an ElasticSearch oder ein Socket gesendet werden. Dieser Teil von Funnel ist in großem Umfang erweiterbar, Ergänzungen können mit einer einfachen Funktion vom Typ URI => Process[Task, Datapoint[Any]] eingefügt werden.

Verteilte Systeme

So viel dazu, wie sich das Funnel-System auf einzelnen Maschinen gestaltet. Doch wie sieht es im Falle von großen, verteilten Systemen aus? Um eine lineare Skalierung zu ermöglichen, unterstützt Funnel insgesamt drei Service-Komponenten: Agent, Flask und Chemist, wobei die Beziehung zwischen Agent und Flask pull-basiert ist. Durch ein auf der Ebene der einzelnen Agents erfolgendes Downsampling soll sichergestellt werden, dass die Flask-Systeme niemals mit Lastspitzen konfrontiert werden, die kaskadierende Fehler auslösen könnten.

Verteiltes System (Quelle: http://oncue.github.io/funnel)

Verteiltes System (Quelle: http://oncue.github.io/funnel)

Weitere Informationen zu Funnel und Links zum Download gibt es auf der Website der Entwickler und auf der entsprechenden GitHub-Seite.

Aufmacherbild: Big data laboratory process von Shutterstock.com
Urheberrecht: tereez

Verwandte Themen:

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: