Sensu

Was ist Sensu?

Bei Sensu handelt es sich um ein Framework zum Monitoring von IT-Systemen und Infrastrukturen. Mittels Sensu lassen sich etwa Server, Applikationen, Netzwerke oder Container überwachen. Das Framework basiert auf der Programmiersprache Ruby und arbeitet vom Datenaustausch mit RabbitMQ. Zum Speichern der Daten kommt Redis zum Einsatz. Der Dienst eignet sich besonders für den Einsatz in dynamischen Cloud-Umgebungen.

Überblick und Allgemeines

Das Monitoring-Framework ist ein Open-Core-Projekt, deren Kernsoftware unter freier Lizenz veröffentlicht wird. Der freie Vertrieb Sensus erfolgt unter MIT-Lizenz. Ursprünglich ist das Framework von Sean Porter als Teil-Projekt im Rahmen der Arbeit mit der Firma Sonian entwickelt worden.

Als kommerzielles Produkt existiert Sensu unter dem Beinamen Enterprise. Dieses basiert auf dem Fundament von Sensu-Core. Als Laufzeitumgebung kommt bei Sensu-Enterprise Jruby zum Einsatz, womit eine verbesserte Verarbeitungsleistung möglich wird. Die kommerzielle Version verfügt weiterhin über Zusatzfunktionen. Dazu gehört die Konvertierungsmöglichkeit für Metriken. Überdies lassen sich im kommerziellen Produkt externe Dienste integrieren. Anwender kommen zudem in den Genuss des direkten technischen Supports durch Heavy Water Operations.

Support findet sich in der nicht- kommerziellen Version Sensus in der Entwickler-Community. Diese lässt sich über einen IRC-Channel sowie Mailing-Listen erreichen.

Funktionsweise und Bausteine

Grundsätzlich basiert Sensu auf zwei Komponenten. Diese umfassen Checks und Event-Processing. Checks werden hierbei auf den Clients ausgeführt, während das Event-Processing auf den Servern vonstattengeht. Checks stellen Kommandos oder eine Art von Skripten dar. Der Sensu-Client führt sie auf den zu überwachenden Maschinen aus.

Checks geben Daten an STDOUT oder an STDERR aus. Bei dieser Art von Daten kann es sich um einfache Status-Codes handeln, die etwa Rückschluss auf den Zustand der Dienste geben, die gecheckt werden. Ebenso können diese Daten aufwändigere Metriken darstellen (wenn es beispielsweise um Statistiken über MySQL geht). Hinsichtlich der Spezifikationen arbeiten Checks mit denselben, die auch bei Nagios zum Einsatz kommen. Dementsprechend lassen sich Check-Plug-ins von Nagios auch als Sensu-Checks anwenden.

Checks dienen der Überwachung von Diensten. Sie können etwa identifizieren, ob bestimmte Dienste wie MySQL laufen. Ebenso können im Rahmen von Checks Ressourcen gemessen werden, beispielsweise, wie hoch die gegenwärtige CPU-Auslastung ist oder welcher Umfang von Speicherplatz auf der Festplatte gerade gebraucht wird oder frei ist.

Im Rahmen der Checks kommt es zur Produktion von Daten. Diese werden anschließend über den Sensu-Transport weitergeleitet an den Server, der als Event-Processor fungiert. Standardmäßig kommt beim Transport RabbitMQ zum Einsatz. Auf Basis dieser Daten führt der Event-Processor einen oder auch mehrere Handler aus, die bei den Checks spezifiziert wurden. Der Handler wiederum dient der Ausführung unterschiedlicher Aktionen. Dazu gehört etwa die Generierung von PagerDuty Alerts oder der Versand von E-Mail-Warnungen. Ebenso kann ein Handler die Daten zu weiteren Auswertungszwecken weiterleiten an eine TSDB (Time Series Database). Zu den häufigsten TSDBs gehören InfluxDB und Graphite.

Besonderheiten der Architektur

Eine der wichtigsten Grundlagen Sensus ist seine moderne Architektur. Diese trägt zu seiner Performance sowie Skalierbarkeit bei. Das Framework setzt auf eine verteilte Architektur. Damit unterscheidet sich der Anbieter von anderen Frameworks, die oftmals gleich mehrere Bestandteile in eine einzelne Software packen. Diese Vorgehensweise hat den Nachteil, dass die Schnittstellen in ihrer Kompatibilität eingeschränkt sind.

Die modulare Konzeptionsweise sorgt dafür, dass Sensu zu einer Art Monitoring-Router wird. Davon profitiert die Ausführung der Monitoring-Checks sowie deren Verarbeitung und die anschließende Auslösung von Aktionen (beispielsweise Log-Einträge).

Die asynchrone Kommunikation zwischen den System-Bestandteilen wird möglich durch den Einsatz von RabbitMQ als Message-Bus. Dieser fungiert bei sämtlichen Abläufen innerhalb Sensus als eine Art Bindeglied. Sollte es bei einer Komponente zu Verzögerungen (beispielsweise Bearbeitungsstaus) kommen, impliziert dies entsprechend nicht zwingend die gleichen Verzögerungen in anderen Komponenten. Im Falle von Aufforderungen an die Senso-Clients zur Ausführung bestimmter Checks legt der Sensu-Server diese Aufforderungen auf den Message-Bus. Anschließend folgt die Bearbeitung dieser Aufforderung durch den Client, wobei das Ergebnis wiederum auf dem Bus abgelegt wird. Der Server verarbeitet nun die Check-Ergebnisse, bevor er daraus erneut Ergebnisse ableitet.

Eine wesentliche Komponente im Sensu-System findet sich in einer speziellen API-Schnittstelle. Diese API stellt eine an REST erinnernde Schnittstelle dar. Sie dient dazu, von extern Informationen über sämtliche kontrollierten Maschinen, Checks und Ereignisse abzurufen. Die Schnittstelle ermöglicht es Anwendern, sowohl bestimmte Checks auszulösen als auch die Verarbeitung anderer Checks zu unterbinden. Die API hat weiterhin die Möglichkeit, Alarme zu registrieren oder zu löschen. Die API kommt grundsätzlich im Zusammenhang mit Webseiten zum Einsatz, die zur Bedienung des Systems installiert werden. Auch hier kommt der verteilte Aufbau Sensus zum Tragen, da Sensu-Nutzer alternativ zum internen Dashboard auch andere Komponenten einsetzen können.


Sie haben noch Fragen?

Kontaktieren Sie uns

Kostenloser SEO-Check der OSG


Weitere Inhalte