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.
- Prometheus Server
- Client Libraries um aus selbst geschriebener Software Metriken zu exposen
- Push Gateway zum Exporten von Metriken von Batchjobs
- Ein Set von Exportern zum exportieren von bestehenden Metriken
- Alertmanager zum Verwalten von Alerts
- Verschiedene weitere Tools
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.
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