Monitoring mit SUSE Manager

Im vergangenen Juni 2019 erschien SUSEs Management-Produkt [1] in der neuen Hauptversion 4.0. Dieses brachte zahlreiche Neuerungen mit sich. Neben Content Lifecycle Management (Einfrieren getesteter Software-Versionsstände) enthielt die neue Version ab diesem Zeitpunkt auch optionales Monitoring von Infrastruktur und auch Applikationen.

Hierzu werden die prominenten Tools Prometheus [2] und Grafana [3] benutzt, die wir uns in den folgenden Abschnitten näher anschauen.

Grafana

Grafana dient als ansprechende und leicht anpassbare Oberfläche für verschiedene Datenquellen, unter anderem InfluxDB, Prometheus und Graphite. Metriken können komfortabel per Mausklick erstellt und mit Datenquellen-Abfragen spezifiziert werden. Für letzteres benötigt man einen tieferen Einblick in die jeweilige Datenquelle. Dazu stellt Prometheus eine eigene Abfragesprache namens PromQL (Prometheus Query Language) zur Verfügung, die in Grafana verwendet werden kann.

Abb 1.: Ein beispielhaftes Grafana-Dashboard (Quelle: play.grafana.org)

Metriken können in verschiedenen Formaten in sogenannten Dashboards grafisch dargestellt werden (Tabellen, Diagramme, Heatmaps, etc.). Dies ist ideal für Status-Bildschirme komplexer Anwendungen und Infrastruktur-Setups. Einer der Vorteile des Tools ist dass in dargestellten Datenmengen komfortabel per Zoom gesucht werden kann. Zusätzlich werden zahlreiche vordefinierte Zeitspannen angeboten (letzte Minuten, Stunden, Tage). Zur Fehleranalyse können Graphen jedoch auch zu einem bestimmten Zeitpunkt skaliert werden. Zudem ist es möglich, Dashboards einfach intern oder auch im Internet zu teilen.

Grafana stellt Daten nicht nur grafisch dar, sondern kann auf Anomalien auch mit Alarmen reagieren. So lassen sich Schwellwerte für Metriken definieren. Über Abweichungen kann dann beispielsweise per Slack oder PagerDuty informiert werden.

Der größte Vorteil Grafanas ist die Modularität. So gibt es auf der Webseite des Open Source-Projekts [4] zahlreiche Plugins, um Datenquellen und Darstellungsfunktionen zu erweitern.

Prometheus

Prometheus ist eine Open Source-Anwendung für die Überwachung von Events. Es nimmt Daten in Form von Schlüssel-/Wert-Paaren in einer Zeitreihen-Datenbank auf. Ursprünglich von SoundCloud entwickelt, nahm das Projekt schnell Fahrt auf und wird inzwischen auch von der Cloud Native Computing Foundation [5] unterstützt. Prometheus ist bereits Bestandteil zahlreicher anderer Applikationen und Frameworks wie beispielsweise Kubernetes.

Abb 2.: Prometheus-Architektur und -Schnittstellen

Die einzelnen Komponenten eines Prometheus-Szenarios agieren autonom. Der Prometheus-Server speichert Daten, welche via HTTP von zu überwachenden Systemen bezogen werden. Auf diesen Systemen sorgen sogenannte Exporter[6] für das Sammeln und Versenden der benötigten Metriken. Kritische Metriken lassen sich mit Alarmen versehen – so ist hier ebenfalls der Versand von Mails oder Chat-Nachrichten möglich.

PromQL

Ein weiteres Merkmal ist die flexible Abfragesprache PromQL – mit ihr können verschiedene Metriken erfragt oder korreliert werden.

Eine typische Metrik wird wie folgt in der Datenbank gespeichert:

http_requests_total{status="200", method="GET"}  @1557331801.111  42236

http_requests_total ist der Metrikname, während status und method Labels sind, die das Ergebnis präzisieren. Die letzten beiden Werte stellen einen Zeitstempel und einen numerischen Wert dar.

Die Abfrage der Arbeitsspeichergröße eines Systems sieht wie folgt aus:

node_memory_MemTotal_bytes{hostname=~"pinkepank", exporter="node_exporter"}

Mithilfe von Listen und Bedingungen lassen sich Abfragen weiter spezifizieren – beispielsweise je nach Umgebung und HTTP-Methode:

http_requests_total{environment=~"dev|prod",method!="GET"}

Durch den Einsatz von Range Vector Selectors und Offsets lassen sich Zeitspannen und -Abstände definieren:

http_requests_total{job="prometheus"}[5m]
http_requests_total offset 5m

PromQL ist sehr mächtig und bietet noch weitere Funktionen, die jedoch den Fokus dieses Artikels sprengen würden. Hier hilft die Prometheus-Dokumentation [7] weiter.

SUSE Manager Monitoring

SUSE liefert für das Zusammenspiel mit SUSE Manager validierte Pakete für Prometheus inklusive der Exporter und Grafana mit.

Die Pakete müssen auf einem dedizierten Host installiert werden – idealerweise auf einem über Salt verwalteten Client. Salt Formulas ermöglichen die automatisierte Installation und Konfiguration der Dienste. Somit ist die Bereitstellung des gesamten Monitoring-Stacks nur eine Frage weniger Klicks.

Abb 3.: Bestandteile und Schnittstellen des Monitoringstacks

Es genügen wenige Klicks auf Formulas und Configuration, um dem System die verfügbaren Formulas Grafana und Prometheus zuzuweisen. Anschließend erscheinen zwei neue Registerkarten, die die jeweiligen Anwendungen näher konfigurieren.

Abb 4.: Prometheus-Konfiguration via Salt Formula

Prometheus erkennt bei der Angabe eines SUSE Manager Administrator-Accounts neue Clients automatisch (Autodiscover clients) und erfasst entsprechend Metriken. Voraussetzung hierfür ist, dass auf den Clients der Prometheus Node Exporter ausgeführt wird.

Abb 5.: Grafana-Konfiguration via Salt Formula

Grafana kann direkt mit der Prometheus-Instanz verknüpft werden. Auch stehen zahlreiche vordefinierte Dashboards zur Verfügung. Neben eines PostgreSQL- und SUSE Manager Server-Dashboards gibt es auch eine Ansicht für registrierte Client-Systeme.

Integrierte Metriken

SUSE Manager verfügt über integrierte Prometheus-Exporter, die komfortabel unterhalb Admin > Manager Configuration > Monitoring aktiviert werden können. Sobald dies geschehen ist, können sämtliche interne Metriken (Datenbank, Backend, etc.) visualisiert werden.

Abb 6.: Aktivierung des in SUSE Manager integrierten Monitorings

In Grafana können die Metriken beispielsweise im Dashboard Uyuni Server eingesehen werden:

Abb 7.: Uyuni Server Grafana-Dashboard mit zahlreichen Metriken

Clients überwachen

Der einfachste Weg Clients zu überwachen ist das Formula Prometheus Exporters zu verwenden. Dieses kann die Apache, Postgres und Node Exporter [8] konfigurieren. Letzterer liefert umfangreiche System-Metriken, beispielsweise:

  • CPU und Arbeitsspeicher (Auslastung und Größe)
  • Netzwerk (Statistiken, ARP, Bonding)
  • Massenspeicher (Auslastung, Kapazität und Dateisystem-Spezifika)
  • Hardware-Sensoren (z.B. Temperatur)
  • Prozess- und Service-Informationen

Das GitHub-Repository enthält zahlreiche Zusatzinformationen und Beispiele. So werden beispielsweise nicht alle Metriken standardmäßig aktiviert, um Laufzeiten zu verkürzen. Für Service-Informationen muss dem Node Exporter das Argument –collector.systemd übergeben werden.

Diese Einstellungen können wieder komfortabel über das Salt Formula vorgenommen werden:

Abb 8.: Prometheus Exporter-Konfiguration via Salt Formula

Nach Anwendung des Highstates werden benötigte Pakete installiert und der Node Exporter gestartet. Die Client-Informationen sollten sich dann nach wenigen Augenblicken in Grafana finden:

Abb 9.: Metriken registrierter Clients in Grafana

Je nach Anwendungsfall lassen sich auch eigene Dashboards erstellen – beispielsweise für systemd-Units:

Abb 10.: Benutzerdefiniertes Grafana-Dashboard zur Anzeige von systemd-Metriken

Für SAP HANA- und NetWeaver-Kunden liefert SUSE darüber hinaus weitere vorgefertigte Dashboards mit, die direkt einen Mehrwert generieren können.

Fazit

Mit Prometheus und Grafana liefert SUSE einen Monitoring-Stack aus, der sich zurecht auch in anderen Projekten als Defacto-Standard definiert hat. Prometheus lässt sich schnell aufsetzen und neue Metriken werden einfach per Standardprotokoll HTTP integriert. Grafana liefert in Ergänzung zahlreiche Möglichkeiten, Metriken ansprechend zu visualisieren und zu korrelieren. Nach einiger Eingewöhnungszeit verhelfen eigene PromQL-Abfragen zum gewünschten Ziel.

Das aufpreispflichtige Feature eignet sich somit nicht nur für Kunden, die bereits Monitoring-Vorwissen haben, sondern auch für Kunden, die erst damit beginnen und gleich einen Stack benutzen wollen, der sich für moderne Applikationen und Container-Plattformen nutzen lässt.

Links

  1. SUSE Manager Produktwebseite
  2. Prometheus-Webseite
  3. Grafana-Webseite
  4. Grafana-Plugins
  5. Cloud Native Computing Foundation-Webseite
  6. Liste verfügbarer Prometheus-Exporter
  7. PromQL-Dokumentation
  8. Prometheus Node Exporter