3.7 Monitoring

Wir haben nun verschiedene Tools kennengelernt, um Fehler und Probleme auf einem Server zu finden. Um dies jedoch auf vielen Servern im Griff zu haben und idealerweise Fehler festzustellen, bevor sie auftreten, gibt es die verschiedensten Monitoring Lösungen.

Bei Puzzle verwenden wir diverse Komponenten für das Monitoring:
https://wiki.puzzle.ch/Puzzle/ArchitekturCloudscale#Monitoring

Prometheus

Prometheus ist eine Opensource System-Monitoring und Alerting Werkzeugkasten, der ursprünglich 2012 bei Soundcloud entwickelt wurde und nun als unabhängiges Opensource Projekt existiert. Seit 2016 ist Prometheus als zweites Projekt nach Kubernetes Teil der Cloud Native Computing Foundation .

Features

Prometheus Kernkompetenzen:

  • Multidimensionales Datenmodell mit “time series data” identifiziert durch Metrik Namen und key/value Paaren
  • PromQL als flexible query Sprache
  • Metriken werden über HTTP “gepulled”
  • “pushen” von Metriken ist supported über einen Gateway
  • Service Discovery und statische Konfiguration wird unterstützt
  • Dashboarding und Graphen Support

Komponenten

Prometheus besteht aus mehreren Komponenten, welche unabhängig voneinander funktionieren. Man muss also nur diejenigen installieren, welche man in seiner Umgebung braucht.

Die meisten Prometheus-Komponenten sind in Go geschrieben.

Architektur

Die folgende Abbildung ist rein vollständigkeitshalber aufgeführt. Evtl. werden gewisse Komponenten ja wieder erkannt.

Prom architektur

PromQL

Um Metriken in Prometheus abzurufen, gibt es die sogenante Prometheus Query Language (kurz: PromQL). Da sich diese stetig weiter entwickelt, sei hier auf die offizielle Referenz verwiesen. Meistens muss man sich die Statements nicht neu aus den Fingern ziehen, sondern kann an bestehenden Beispielen abschreiben, solche findet man zum Beispiel bei den definierten Alerts .

Alertmanager

Der Prometheus Server selber versendet keine Alerts, sondern informiert lediglich einen Alertmanager. Dieser Alertmanager weiss dann auf Grund verschiedener Konfigurationen, wer, über welchen Kanal und auf welche Art informiert werden soll. Weitere Informationen findet man hier .

Grafana

Grafana ist ein Visualisierungs- und Analyse Tool, welches zig verschiedene Datenquellen (unter anderem Prometheus) akzeptiert. Als Beispiel für ein Dashboard: Grafana Sys Dashboard