Home/Neues IT-Monitoring: Sensu Go ist da! (Teil 1 von 3)

Neues IT-Monitoring: Sensu Go ist da! (Teil 1 von 3)


Zusammen mit unseren Freunden von Sensu freuen wir uns über das erste Stable Release von Sensu Go, welches offiziell am 5. Dezember 2018 veröffentlicht wurde. In dieser dreiteiligen Blogserie möchte ich Neugierigen einen einfachen Einstieg ermöglichen und versuchen verständlich zu erklären was Sensu Go ist und welche Funktionen es bietet.

Teil 2 erscheint hier am 13.12.2018
Teil 3 erscheint hier am 18.12.2018

Releases

Nachdem im Februar 2018 das erste Nightly Build und im April das erste Beta Release veröffentlicht wurden, erscheint nun die stabile Version von Sensu Go. Vereinfacht ausgedrückt ist Sensu Go ein Monitoringtool und gleichzeitig ein Rewrite von der in Ruby geschriebenen Vorgängerversion Sensu 1.x (Sensu-Core) bzw. 3.x (Sensu-Enterprise) in der Programmiersprache Go aus dem Hause Sensu Inc. Sensu Go wird mit der Versionsnummer 5 weitergeführt. Hierfür gibt es mehrere Gründe. Einer davon ist die Affinität zur japanischen Sprache. Demnach steht das japanische Wort Sensu für den Faltfächer, welcher noch heute in dem Logo von Sensu zu finden ist, und Go für die Zahl 5. In einem Blogpost von Sensu wurden außerdem bereits Termine für erste Updates bekannt gegeben. So wird es Aktualisierungen an den Terminen 31.01.19 (Sensu Go 5.1), 28.02.19 (Sensu Go 5.2) und 29.03.19 (Sensu Go 5.3) geben. Auf die Inhalte der jeweiligen Updates werde ich im dritten Teil dieser Blogserie etwas näher eingehen.

Grundlegender Aufbau

Sensu Go besteht aus den Paketen Sensu-Backend und Sensu-Agent. Ausgeliefert wird Sensu Go jeweils mit einem Go-Binary und einer Konfigurationsdatei. Es gibt keine weiteren Paketabhängigkeiten. Mit dem Paket Sensu-Cli lassen sich mittels dem Kommandozeilenbefehl sensuctl alle Inhalte in Sensu Go, z. B. Checks, Handler, Filter, u.s.w. erstellen, aktualisieren, abfragen und löschen. Sensuctl spricht mit der RESTful-API des Sensu-Backends. Sensu Go kann somit vollumfänglich über die API bedient werden (Stichwort „api-driven“). Die komplette Kommunikation erfolgt verschlüsselt über WebSockets.

Sensu-Backend

Neben der Bereitstellung der RESTful-API, ist das Backend auch für das Verarbeiten der Monitoringergebnisse verantwortlich. Man spricht hier auch von einer Event-Pipeline, welche jedes Event durchläuft. Ein Event ist das Ergebnis der von den Agenten durchgeführten Prüfungen (Checks). Unter Zuhilfenahme von Filtern, Mutatoren und Handlern können diese Events auf verschiedenste Weisen gefiltert, die Ausgabe angepasst und an Skripte übergeben werden. Durch diese Bauweise gibt es mit Sensu Go nahezu keine Grenzen es an Drittlösungen anzubinden und auch in bestehende Umgebungen zu integrieren. Beispielsweise kann ein Aufbau mit der Verwendung von InfluxDB als Timeseries Datenbank (TSDB), Grafana zur Visualisierung der gesammelten Metriken und Slack für die Benachrichtigung von Personengruppen mittels fertiger, zur freien Verfügung stehender Handler in nur wenigen Minuten eingerichtet werden.

 

 

Daneben kümmert sich das Sensu-Backend durch eine integrierte etcd-Instanz auch um das Speichern der Konfiguration, das jeweils aktuelle Ergebnis eines jeden Checks, sowie dessen Status. Durch die einfache Hinzunahme weiterer Backend-Instanzen bietet es die Möglichkeit des Clusterings zur Ausfallsicherheit und Lastverteilung. Etcd ist ein NoSQL Key-Value Speicher, welcher unter Anderem auch in Kubernetes Verwendung findet. Er arbeitet im Cluster-Modus zur Kommunikation nach dem Raft Algorithmus (https://raft.github.io/). Ist ein Sensu Go Cluster gewünscht, sollte daher also, wie auch bei vielen anderen Cluster-Methoden, immer eine ungerade Anzahl von Instanzen verwendet werden. Existiert bereits ein etcd-Cluster, ist es auch möglich dieses von Sensu Go mitbenutzen zu lassen. Hierzu müssen lediglich die etcd-Parameter in der Konfigurationsdatei des Sensu-Backends entsprechend angepasst werden.

Zu guter Letzt wird mit dem Backend-Dienst auch eine Frontend-Komponente gestartet. Das mit der JavaScript Bibliothek React, auch bekannt als ReactJS oder React.js entwickelte Dashboard bietet die Funktion alle Monitoring-Inhalte von Sensu Go einzusehen. Zudem sind Aktionen, wie z. B. Anstoßen von Prüfanforderungen, Bestätigen von Alarmen oder (De-)Aktivieren von Prüfungen damit möglich. Wie auch sensuctl spricht das Dashboard ausschließlich mit der RESTful-API des Sensu-Backends. Je nach Geschmack des jeweiligen Benutzers sind auch unterschiedliche Themes auswählbar – wie der hier gezeigte, derzeit sehr beliebte „Dark-Mode“.

Soweit bis hier hin mit Teil 1 zu Sensu Go und den Funktionen des Sensu-Backends. Teil 2 erscheint am 13.12.2018. Dort werde ich auf die Funktionsweise des Sensu-Agenten und der Art der Checkverteilung eingehen.

Links:

https://www.becon.de/produkte/sensu/
https://sensu.io/
https://docs.sensu.io/sensu-go/5.0/

About the Author:

Christian Michel ist seit über zehn Jahren in Projekten in ausführender und leitender Funktion tätig. Sein Schwerpunkt ist die Beratung im Umfeld Open Source basierender Monitoring Lösungen für mittlere Unternehmen, weltweit agierende Konzerne und Öffentliche Einrichtungen unter Berücksichtigung sensibler Daten in schützenswerten Bereichen. Christian Michel ist Team Lead System Monitoring bei becon GmbH.