Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Observability-Grundlagen

Die ganze Lektion steht hier zum Lesen. Erstellen Sie ein kostenloses Konto, um sie in einem Live-Lab auszuführen.

Container-Lab7 Min. Lesezeit6 Befehle

Was du machst

Software zu betreiben ist nur die halbe Arbeit. Die andere Hälfte ist zu wissen, dass etwas schiefgeht, bevor es dir jemand sagt. Monitoring sammelt über die Zeit Zahlen über ein Programm. Ein Alarm ist eine Regel, die diese Zahlen beobachtet und sich meldet. Dein Lab hat einen Webserver, einen Sammler namens Prometheus und ein Zeichenwerkzeug namens Grafana. Du stellst eine Frage, schreibst eine Alarmregel, machst den Server absichtlich kaputt und siehst zu, wie der Alarm ausgelöst wird.

Bevor du anfängst

Notiz

Drücke oben in der Leiste dieser Lektion auf Lab starten und warte, bis dort steht, dass es läuft. Die vier Container heißen app, exporter, prometheus und grafana, und sie finden sich über diese Namen. Jede Schaltfläche Ausführen tippt ihren Befehl in das Terminal deines Labs, einen nach dem anderen in derselben Sitzung. Willst du zuschauen oder eigene Befehle tippen, drücke in der Leiste auf Terminal öffnen (neuer Tab).

1. Stelle Prometheus eine Frage

Prometheus behält jede Zahl, die es gesammelt hat. In seiner Sprache PromQL ist die einfachste Frage der Name einer Zahl. nginx_up ist 1, solange der Webserver antwortet, und 0, wenn nicht. Die Antwort ist JSON: Suche nach "value":[, gefolgt von einer Zeit und "1". Tippst du dieselbe Frage auf der Prometheus-Seite in deinem Browser, zeigt sie die Antwort als Tabelle oder Diagramm. -w "\n" beendet die Antwort mit einem Zeilenumbruch, damit sie unter dem Befehl in einer eigenen Zeile steht.

Befehl
curl -s -w "\n" 'http://prometheus:9090/api/v1/query?query=nginx_up'

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

2. Schreibe eine Alarmregel

Eine Regel sagt: „Wenn diese Frage zehn Sekunden lang wahr ist, löse einen Alarm aus.“ Diese hier fragt nginx_up == 0, also: Der Server ist aus. Der erste Befehl schreibt sie in einer Zeile in den Regelordner des Prometheus-Containers, wo Prometheus jede .yml-Datei liest. Er gibt nichts aus. Dann bittet der zweite Befehl Prometheus, seine Dateien neu zu lesen, und gibt ebenfalls nichts aus. Auf der Prometheus-Seite listet Alerts jetzt AppDown auf, grün, weil nichts falsch ist.

Befehl
docker exec prometheus sh -c 'echo "$0" > /etc/prometheus/rules/lab.yml' '{"groups":[{"name":"lab","rules":[{"alert":"AppDown","expr":"nginx_up == 0","for":"10s","labels":{"severity":"page"}}]}]}'

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
curl -s -X POST http://prometheus:9090/-/reload

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

3. Mach den Server kaputt und sieh den Alarm

docker stop app hält den Webserver an und gibt seinen Namen aus. Prometheus bemerkt das innerhalb von etwa zehn Sekunden. Der Alarm steht auf "state":"pending", solange er die zehn Sekunden abwartet, die die Regel verlangt hat. Führe den zweiten Befehl zweimal aus, einige Sekunden auseinander: Die Antwort wechselt zu "state":"firing". Dann bringt docker start app den Server wieder in Ordnung. Drücke nach fünfzehn Sekunden noch einmal die zweite Schaltfläche „Ausführen“, und die Antwort ist wieder "alerts":[]. Öffne zum Schluss Grafana, drücke auf Explore, wähle die Datenquelle Prometheus und führe nginx_up aus: Das ist die Linie, die ein Dashboard-Panel zeichnet.

Befehl
docker stop app

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
curl -s -w "\n" http://prometheus:9090/api/v1/alerts

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
docker start app

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Für Lehrkräfte

Tipp

Diese Lektion ist ein kleines Beispiel für eine Lektion, die in einem Lab bearbeitet wird: Die Schritte und die Schaltflächen „Ausführen“ sind die Lektion, und das Lab ist die eigene Kopie jeder lernenden Person. Das Lab besteht aus vier Diensten und zwei benannten Volumes, und nichts darin bewertet sich selbst. Die Lernenden geben die Regel ab, einen Screenshot des ausgelösten Alarms und ein Grafana-Panel, dazu einen Satz, was eine Person im Bereitschaftsdienst tun würde. Die Regel liegt in einer Datei auf dem Prometheus-Volume, sie ist also auch nach dem Beenden und Starten des Labs noch da. Kopieren Sie die Lektion in Ihr eigenes Modul und ändern Sie sie, oder bauen Sie mit dem Menü Lab im Lektionseditor eine neue.

Über dieses Lab und seinen Quellcode: Observability-Lab: Prometheus und Grafana, mit einer Alarmregel, die Lernende selbst schreiben

Sie unterrichten eine Klasse? Weisen Sie diese Lektionen Ihren Lernenden zu, mit Bewertung und einem Lab für jede lernende Person.