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