Prometheus: Übung
Übung 1: Installation
Aktualisiere zunächst deine Paketquellen und Pakete:
Installiere Prometheus:
Dadurch sollte neben Prometheus sogleich der Node Exporter installiert worden sein. Kontrolliere, ob beide Dienste laufen:
Der Dienst sollte sowohl aktiv (active) sein als auch automatisch gestartet werden (enabled). Hole dies andernfalls für den jeweiligen Service nach:
Zum Nachschlagen in der Dokumentation ist es oft hilfreich, die verwendete Version zu kennen. Diese kannst du folgendermassen in Erfahrung bringen:
Übung 2: Konfiguration
Zunächst soll die Beispielkonfiguration von Prometheus entfernt werden. Stoppe hierzu zunächst den Service:
Lösche nun die Beispielkonfiguration:
Erstelle nun eine neue Prometheus-Konfiguration unter dem selben Pfad:
Mit der folgenden minimalen Konfiguration überwacht Prometheus sich selber:
Wenn du nun im Browser die URL http://IP-ADRESSE:9090 besuchst, sollte das Prometheus-Web-UI erscheinen.
Gib im Expression-Feld up ein und betätige [Enter]. Unten sollten nun die überwachten Elemente aufgelistet werden, in diesem Fall nur prometheus auf localhost:9090.
Gib nun process_resident_memory_bytes ein. Dadurch sollte angezeigt werden, wie viele Bytes Arbeitsspeicher Prometheus derzeit verbraucht.
Übung 3: Node Exporter
Der Node Exporter läuft bereits unter Port 9100. Erweitere die Prometheus-Konfiguration um eine entsprechende scrape_config mit dem Namen localhost.
Starte anschliessend den Prometheus-Service neu. Im Web-UI solltest du mit up nun zwei Elemente angezeigt bekommen.
Unter dem Präfix node_ solltest du nun verschiedenste Metriken über deinen Server erhalten. Bringe folgende Informationen in Erfahrung und halte sie fest (jeweils mit dem Namen der Metrik):
- Die Anzahl Dateien auf den Dateisystemen Root und Temp (Mountpoint:
/bzw./tmp) - Die Grösse der Partitionen Root und Temp in Megabyte. (Tipp: Du kannst arithmetische Ausdrücke in den Abfragen verwenden.)
- Die Menge an freiem Arbeitsspeicher und der Arbeitsspeicher insgesamt jeweils in Megabyte.
- Die Anzahl CPU-Sekunden die für das System und für den Benutzer aufgewendet worden sind.
- Wie viele Prozesse bereits gestartet worden sind. (Tipp: Unter Linux wird ein Prozess von einem anderen “geforked”.)
Übung 4: Alert Manager
Installiere das Paket prometheus-alertmanager. Der Service wird aufgrund der fehlenden Konfiguration noch nicht lauffähig sein.
Damit im Fehlerfall ein Alarm ausgelöst werden kann, wird folgendes benötigt:
- Eine Regel, die angibt, wann ein Alarm auszulösen ist.
- Eine Regel, die besagt, wer über welchen Kanal alarmiert werden soll.
Mit der Regel up == 0 lassen sich Monitoring-Endpunkte ermitteln, die derzeit offline sind, d.h. von denen keine Metriken mehr in Erfahrung zu bringen sind.
Erstelle eine Konfigurationsdatei unter /etc/prometheus/rules.yml mit folgendem Inhalt:
Diese Regel besagt, dass wenn nach einer Minute kein Endpunkt erreicht werden kann, ein Alarm ausgelöst werden soll.
Die Alarmierung soll über einen sogenannten Webhook ausgelöst werden. Hierzu soll folgende Konfiguration unter dem Pfad /etc/alertmanager/alertmanager.yml angelegt werden. Erstelle zuerst das Verzeichnis:
Erstelle anschliessend darin die Datei alertmanager.yml mit folgendem Inhalt:
Es wird eine Route für Alarme namens dummy-webhook verwendet. Diese ist unter receivers definiert. Es wird also erwartet, dass unter localhost:9999 eine Web-Anwendung läuft, die unter dem Endpoint /alert ansprechbar ist.
Die folgende kleine Go-Anwendung bietet das (alert.go):
Erstelle eine Datei namens alert.go in deinem Home-Verzeichnis mit obigem Inhalt. Starte das Programm folgendermassen:
Teste sie unter der URL http://IP-ADRESSE:9999/alert, die du in deinem Browser eingeben kannst.
Lasse das Programm im Vordergrund laufen und erstelle eine zweite SSH-Verbindung für die nächsten Schritte.
Ergänze deine Prometheus-Konfigurationsdatei um folgenden Abschnitt:
Die Direktive rule_files besagt, dass die Alerting-Regeln in der Datei rules.yml definiert sind. Ausserdem wird mittels alerting bzw. alertmanagers festgelegt, dass das Alerting unter localhost:9093 zu erreichen ist.
Der Alertmanager muss bekanntgeben, unter welcher Adresse er verfügbar ist. Dies kann in der Datei /etc/default/prometheus-alertmanager konfiguriert werden:
Starte nun den Alertmanager und lese die veränderte Prometheus-Konfiguration ein:
Zum Testen soll nun der Node Exporter gestoppt werden:
Nachdem Prometheus eine Minute lang keine Metriken mehr von ihm einsammeln konnte, sollte ein Alarm ausgelöst werden.
Du solltest den Alarm mit dem amtool abfragen können:
Übung 5: Überwachung von Fremdserver
Ergänze deine Prometheus-Konfiguration, sodass auch der Server von deinem Banknachbar überwacht wird. Lade die Konfiguration von Prometheus anschliessend neu ein und überpüfe im Web-UI, ob der andere Server auch überwacht wird.
Erhebe und vergleiche die Metriken von Übung 3 der beiden Server.
Im nächsten Unterrichtsblock sollen die eingesammelten Metriken mit PromQL gezielt abgefragt und mit Grafana grafisch aufbereitet werden.