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.

Nachdem in Teil 1 und 2 vom 11. & 13.12.2018, welche <hier> und <hier> noch einmal nachgelesen werden können, der grundlegende Aufbau von Sensu Go und die einzelnen Funktionen des Sensu-Backends und Sensu-Agents erläutert wurden, will ich in diesem dritten Teil dieser Blogserie aufzeigen, wie das Monitoring von Netzwerkgeräten mit Sensu Go möglich ist und welche Funktionen mit den angekündigten Updates zu Beginn des kommenden Jahres noch kommen werden.

Monitoring von Netzwerkgeräten oder Appliances

Kann auf einem Gerät kein Agent installiert werden, spricht man von einer Proxy-Entitiy. Da diese Geräte sich aufgrund des fehlenden Agenten nicht aktiv am Sensu-Backend anmelden, müssen sie als „Hüllen“ in Sensu Go angelegt werden – bestenfalls natürlich mittels einem Automatisierungswerkzeug, wie bspw. Ansible. In diesem Fall müssen die Prüfungen gegen diese Geräte von anderen Agenten durchgeführt werden. Welche Agenten man hierfür verwendet, ist egal. Sinnvollerweise sollten sie die zu überwachenden Geräte gut und mit wenig Latenz erreichen können. In kleineren Umgebungen werden hierfür oft auch die Agenten des Sensu-Backend-Clusters verwendet. Insofern die Netzstruktur und Zugriffsregeln es zulassen, kann man die Prüfungen gegen diese Geräte aber auch auf alle Agenten der Umgebung verteilen. In größeren Umgebungen werden häufig dedizierte Systeme, auch Worker genannt, verwendet, welche nur für die Prüfungen der Netzwerkgeräte zuständig sind. Skalieren kann man ganz einfach durch die Hinzunahme weiterer Worker.

Die Prüfungen werden letztendlich von den Agenten durchgeführt, die zu den Subscriptions passen, die den Prüfungen zugeordnet sind. Im Falle von Prüfungen gegen mehrere hunderte Netzwerkgeräte ist es sinnvoll ein weiteres Feature von Sensu Go in der Prüfdefinition zu nutzen, nämlich round_robin (true/false). Ist dieser Parameter aktiv, werden die Prüfanforderungen auf die gemäß der Subscriptions zutreffenden Agenten im Rotationsmodus verteilt.

Auch in der Art wie diese Checks definiert werden, gibt es eine clevere Lösung in Sensu Go. Sind „normale“ Checks aus Sicht des Agenten oft lokale Prüfungen, so handelt es sich bei denen gegen Netzwerkgeräte um Prüfungen, die von einem Agenten gegen ein anderes System durchgeführt werden müssen – was bedeutet, dass eine IP-Adresse in dem Prüfkommando eingetragen sein muss. Damit man nun aber nicht so viele Checks wie Netzwerkgeräte mit fest hinterlegten Adressen anlegen muss, kann man sich der Funktion „proxy requests“ bedienen. Mit diesem Parameter in der Prüfdefinition wird ein Wert definiert, der eine Gruppe von Entitäten auszeichnet. Dies funktioniert wie eine Art Filter und ist notwendig, um die Prüfanforderung auf eine Gruppe von Geräten zu reduzieren. So kann bspw. mit der Definition [„entity.entity_class == ‚proxy'“] eine Prüfung gegen alle Proxy-Entities ausgerufen werden. Mit zusätzlichen Ausdrücken kann auf weitere beliebige Attribute der Geräte gefiltert werden. Dieser Parameter dient als eine Art foreach-Schleife. Der Check muss somit nur einmal definiert werden. Für jede zutreffende Proxy-Entity wird anschließend die Prüfanforderung generiert, ggf. Variablen ersetzt (z. B. IP-Adresse) und anschließend heraus gesendet.

 

 

Was wird noch kommen?

Bonsai Asset Index & Agent-Buffer

Das alles ist nur ein kleiner Auszug aus den Funktionalitäten, die Sensu Go bietet. Neben den existierenden Funktionen gibt es bereits Pläne für die weitere Entwicklung. So soll ein „Bonsai Asset Index“ entwickelt werden, welcher als Register oder auch Repository dient und als Plattform zum Bereitstellen und Tauschen von Assets genutzt werden kann. Ein Asset ist ein Paket bestehend aus einer oder mehrerer Dateien und kann beispielsweise ein Prüf-Plugin, ein Filter oder ein Handler sein. Diese können ggf. inklusive benötigter Libraries und weiterer Paketabhängigkeiten den Sensu-Agenten bereitgestellt und von selbigen genutzt werden. Wenn entsprechend konfiguriert, kann ein solches Asset zur Laufzeit von den Agenten in ein lokales Cache-Verzeichnis (herunter-) geladen und ausgeführt werden, sollte der Agent dieses noch nicht besitzen. Damit kann erreicht werden, dass für das Monitoring benötigte Plugins automatisch auf die überwachten Systeme verteilt werden. Mittels Prüfsummen und weiteren Filtermechanismen wird außerdem sichergestellt, dass das gewünschte Asset unverändert und nur auf den dafür vorgesehenen Systemen ausgeführt wird.

 

Beispiel einer Asset Definition

{
„name“: „asset_example“,
„url“: „http://example.com/asset/example.tar“,
„sha512“: „4f926bf4328fbad2b9cac873d117f771914f4b837c9c85584c38ccf55a3ef3c2e8d154812246e5dda4a87450576b2c58ad9ab40c9e2edc31b288d066b195b21b“,
„metadata“: null,
„filters“: [
„System.OS==linux“
],
„organization“: „default“
}

 

Werden externe Prüfergebnisse oder Events an die Agent-API des Agenten gesendet, während dieser keine Verbindung zu einem der Sensu-Backends hat, gehen diese zurzeit noch verloren. Aus diesem Grund soll in späteren Versionen ein Puffermechanismus für den Sensu-Agenten kommen. Der Puffer soll die Ergebnisse und Events speichern und nachträglich übermitteln können, sobald der Sensu-Agent wieder eine Verbindung zu einem Sensu-Backend hat.

Weitere geplante Entwicklungen betreffen hauptsächlich die Enterprise-Variante von Sensu Go. So soll mit dem Update auf 5.1 die Möglichkeit kommen eine initiale Konfiguration von Entitäten über das Dashboard von Sensu Go vornehmen zu können. Darüber hinaus werden Integrationen zu PagerDuty und LDAP hinzukommen.

Mit den Updates auf Sensu Go 5.2 und 5.3 im Februar und März 2019 sollen weitere BugFixes und FeatureRequests umgesetzt werden, sowie weitere Konfigurationsmöglichkeiten in das Dashboard von Sensu Go integriert werden.


Abschluss

Wer jetzt weitere Informationen zu Sensu Go haben möchte, wird diese auf der Webseite von Sensu (https://sensu.io), deren Dokumentation (https://docs.sensu.io/sensu-go/5.0/) oder in dem Sensu Community Slack Channel (https://sensucommunity.slack.com) finden, wo auch wir aktiv sind.

Sehr gerne darf bei Fragen, Hinweisen, Anregungen oder Sonstigem auch der direkte Kontakt zu uns gesucht werden! 🙂