Home/Interaktiv auf Hochglanz poliert

Interaktiv auf Hochglanz poliert

In den letzten Jahren wurde im Web(frontend)bereich etliches weiterentwickelt. Nicht nur die optische Erscheinung hat sich gewandelt, auch die Funktionalität. Von Sammlungen primär statischer Seiten gab es einen Wechsel hin zu Webapplikationen, die ihre Daten z.B. als JSON-Strukturen nachladen und die Darstellung im Browser kontinuierlich aktualisieren.

In diesem Artikel geben wir einen Überblick wie man sich diese Entwicklung zur Auswertung des Monitorings mit Dashboards zunutze machen kann. Soweit vorab: für die Fehlersuche in komplexen Systemen ist es unerlässlich geworden interaktive Dashboards statt statischen Grafiken zu nutzen.

Teaser cacti vs Grafana


Für die einen ist Monitoring noch Check-basiert, für die anderen schon Metrik-basiert. Daher gibt es einen kurzen Exkurs zur Checkausführung,

Exkurs: Checks

Checkflowskizze

Im Grunde kann man die Evaluierung des Zustandes auf folgende drei Schritte abstrahieren. Das ist natürlich stark vereinfacht und wird je nach Tools logisch und technisch anders umgesetzt. Wird ein Check ausgelöst (1), nimmt dieser eine Messung vor und liefert die Ergebnisse zurück. Diese Messwerte werden mit den Critical- und Warning-Schwellenwerten verglichen (2) um den Status der zu prüfenden Ressource oder Dienstes zu bestimmen. Damit kann das Monitoring-Tool entscheiden (3) ob die Kästchen im Frontend in grün, orange oder rot dargestellt werden sollen und ob ein Alarm ausgelöst werden soll. Soweit so gut, aber ein Monitoring kann und sollte viel mehr leisten! Soweit sind das auch keine Neuigkeiten.

Will man einen akuten Fehlerfall oder den Ausfall der letzten Nacht analysieren, helfen einem die Status nicht weiter. Man muss also auch die Messwerte und Metriken bereitstellen. Die Erhebung ist theoretisch auch mit mit dem Nagios-Check Format möglich, welches in dem folgenden Bild skizziert ist. Zusätzlich zu dem Return-Code (bei Nagios bekommt das Check Plugin die Thresholds übergeben und überliefert den Status an den Core), der lesbaren Ausgaben (auch im Webinterface dargestellt) gibt es optional die Möglichkeit Performancedaten zu übergeben.

 

Diese Möglichkeit wird in der Praxis oft vergessen. Stattdessen kommen Tools wie Cacti zum Einsatz, die auf das Messen von Performancedaten spezialisiert sind.

Das heißt aber, dass das Sammeln von Metriken zur raffinierteren Auswertung und Aufbereitung ist fast überall möglich. In den letzten Jahren hat sich der Begriff Metrik für die Messwerte eingebürgert, den wir ab hier auch verwenden.

Sammlung und Auswertung im Wandel

Cacti - Ausschnitt

Ein gängiges Setup war Jahrelang, ein check-basiertes Monitoring-Tool wie Nagios für die Statusüberwachung und Alerting zu nutzen. Da man zusätzlich aber noch für das Troubleshooting oder zukünftige Setup Sizings konkrete Werte über den Systemzustand zu verschiedenen Zeiten braucht, kommt zusätzlich Cacti zum Einsatz. Cacti pollt die Systeme zusätzlich und speichert die Werte in RRD-Dateien. Aufbereitet werden die Daten mit RRDtool als Grafiken in einer Website darstellt. Die Nachteile sind zum einen die zweifache Belastung der Systeme durch das Messen von zwei Systemen und zum anderen sind die Möglichkeiten zur Darstellung eingeschränkt.

Eine Verbesserung des Setups ist der Einsatz von Graphite als Storage für die Messdaten. Graphite ist auf das Speichern und Adhoc-generieren von Graphen auf Basis von Timeseries-Daten spezialisiert und kann von diversen Kollektoren – einen Überblick gibt es in den Graphite-Docs – gefüttert werden. Neben dem Einsatz von dedizierten Kollektoren, wie Diamond, ist eine andere Möglichkeit beim Monitoring mit Sensu über Sensu-Handler die gemessenen Daten zu Graphite zu senden. Dadurch entfällt Konfigurationsaufwand mehrerer Tools und die erhöhte Systembelastung durch mehrfache Messungen. Zusätzlich ist es auch möglich Messreihen per API-Anfrage von Graphite zu korrelieren und in Sensu den Check auszuwerten (Alerting).

Inzwischen geht der Trend von Statuschecks weg – hin dazu Metriken direkt zu sammeln und in speziellen TimeSeriesDatabases (TSDBs) zu speichern. Eine detaillierte Betrachtung wird hier in einem separaten Blogpost erfolgen.

Hier ein kleines Beispiel aus der Praxis, um den Nutzen von Metriken zu veranschaulichen: Um das Volllaufen von Dateisystemen festzustellen wird in einem 5 minütlichen Intervall die Festplattenauslastung gemessen. Für das System Volume mit nur einigen Gigabyte Größe bedeuten 85 % und 90 % Füllstand ganz andere Dimensionen, als das für die Datenbank mit hunderten oder den Backup-Storage mit tausenden Gigabyte Volume-Größe bedeutet. 10% von 5TB sind immerhin stattliche 500GB. Statt fixe Werte zu erfassen, die im Zweifel per Host und Mount-Point erst manuell evaluiert und dann eingestellt werden müssen, bietet es sich an die Entwicklung zu betrachten. Wenn man die Messwerte als Zeitreihe betrachtet kann man die zukünftigen Werte extrapolieren und einen Alert triggern, wenn der kritische Wert von 99 % oder 100 % prognostiziert in bspw. zwei Stunden erreicht ist. Dann wird das Admin-Team nicht bei jeder kurzfristigen Schwellenwertüberschreitung von anderen Tätigkeiten abgelenkt, sondern kann agieren wenn es wirklich nötig wird.

Dashboards

Cacti/Grafana Bildschirmfoto

Für das Erstellen von Dashboards hat sich Grafana als Defacto-Standard etabliert. Grafana kann diverse Data-Sourcen als Input nutzen, neben Graphite auch TSDBs wie Influxdb.

In Cacti wird jede Zeitreihe einzeln als Grafik präsentiert, während man in Grafana mehrere Zeitreihen in einem interaktiven Graph verwenden kann. Die Graphen können in mehreren Panels nebeneinander auf einem Dashboard präsentiert werden. Zudem kann man interaktiv zoomen, sodass sich der betrachtete Zeitraum in allen Panels parallel ändert. Dashboards lassen sich in Ordnerstrukturen ablegen, die auch mit ACLs versehen werden können. So können verschiedenen Teams Dashboards in einer zentralen Instanz bereitgestellt werden.

Weitere Features sind

  • Parametrierbare Dashboards
  • Ex- und Import von Dashboards
  • Support für diverse Datenquellen
  • Alerting
  • Kioskmodus

Grafana Ausschnitt

Im Ausschnitt Links ist ein Zeitabschnitt markiert, beim Loslassen der Maustaste wird in den Bereich gezoomt. Das schöne an Grafana ist aber, dass es sich auch per Keyboard Shortcuts bedienen lässt. Es bietet so auch den für Admins gewohnten Komfort einer Tastaturbedienung. So wird bspw. durch Drücken von [t] und dann [z] heraus gezoomt.

 

Fazit

Mit einem modernen Dashboardtool wie Grafana eröffnen sich ganz andere Möglichkeiten die Systeme zu inspizieren. Verschiedene Messreihen können korreliert werden, was mit RRDtool generierten Bildern nicht möglich war. Man sollte aber drauf achten, die Messungen für eine bestimmte Metrik nicht x-fach von verschiedenen Tools für unterschiedliche Auswertungen vorzunehmen. Die Metrik-first Strategie, zuerst Metriken zu sammeln und daraus Alerts und Auswertungen anzufertigen, hat sich als einen durchaus gangbaren Weg erwiesen, um Statuschecks für Alerts und Metriken zur Visualisierung als getrennte Setups abzulösen.

About the Author:

André Niemann ist als System Engineer im System Monitoring Team tätig. Neben Erfahrung mit Softwareentwicklungsprojekten und Web Operations hält er regelmäßig Fachvorträge bei Konferenzen und Usergroups.