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.
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.
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.
curl -s -X POST http://prometheus:9090/-/reloadHier 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.
docker stop appHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
curl -s -w "\n" http://prometheus:9090/api/v1/alertsHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
docker start appHier 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.