Sensu

sensu-framework

Copyright © Shutterstock / Monstar Studio

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