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

Einen laufenden Dienst messen (Prometheus)

Nach dieser Lektion: Ich kann eine Metrik lesen und sagen, was sie über einen Dienst verrät.

Lektion, 55 Min.6 BefehleObservability-Lab: Prometheus und Grafana, mit einer Alarmregel, die Lernende selbst schreiben

Freitagabends ist der Shop langsam

Ein Online-Shop fühlt sich jeden Freitagabend langsam an. Die Inhaberin fragt, wie langsam und seit wann. Niemand kann es sagen.

Hätte der Shop alle paar Sekunden ein paar Zahlen notiert, wäre die Antwort eine Kurve. Erst messen, dann beheben.

Am Ende dieser Lektion

Notiz

Ich kann eine Metrik lesen und sagen, was sie über einen Dienst verrät.

Schlüsselbegriffe

BegriffWas er bedeutetBeispiel
Metrikeine Zahl über einen Dienst, die immer wieder gemessen wird
Countereine Metrik, die nur steigtnginx_http_requests_total
Gaugeeine Metrik, die steigt und fälltnginx_connections_active
Ratewie schnell ein Counter pro Sekunde wächst
Perzentilder Wert, den ein bestimmter Anteil der Messungen nicht überschreitet
Alarmeine Meldung, die kommt, wenn eine Metrik falsch aussieht

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein Counter steigt, ein Gauge schwankt

Eine Metrik ist eine Zahl, die ein Dienst über sich selbst bereitstellt. Im Lab liest ein kleines Programm, der Exporter, die Statusseite von nginx und bietet die Zahlen an. Prometheus holt sie alle fünf Sekunden ab und speichert sie mit der Zeit.

Ein Counter wächst nur: die Anfragen seit dem Start. Ein Gauge bewegt sich in beide Richtungen: die Verbindungen, die jetzt offen sind.

Der Prometheus des Labs beantwortet Fragen über das Web. Der erste Run fragt, welche Ziele antworten.

Welche Ziele antworten?

Befehl
curl -s -G -w "\n" http://prometheus:9090/api/v1/query --data-urlencode 'query=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.

Nach einem Gauge fragen

Befehl
curl -s -G -w "\n" http://prometheus:9090/api/v1/query --data-urlencode 'query=nginx_connections_active'

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

Nach einem Counter fragen

Befehl
curl -s -G -w "\n" http://prometheus:9090/api/v1/query --data-urlencode 'query=nginx_http_requests_total'

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

Eine Rate macht aus einem Counter ein Tempo

Ein Counter mit dem Stand 72 sagt wenig. Waren es 72 an einem Tag oder in einer Minute?

Die Rate ist das Wachstum geteilt durch die Sekunden. Stieg ein Counter in 8 Sekunden von 19 auf 72, wuchs er um 53. Die Rate ist 53 geteilt durch 8.

Rechnen Sie es erst selbst. Senden Sie dann fünfzig Besuche an den Webserver und fragen Sie Prometheus nach der Rate der letzten Minute.

Die Rate von Hand

Code: python
vorher = 19
nachher = 72
sekunden = 8
print((nachher - vorher) / sekunden)
# Setzen Sie sekunden auf 4. Ist der Dienst jetzt mehr oder weniger beschäftigt?

Fünfzig Besuche senden

Befehl
curl -s -o /dev/null "http://app:8080/?n=[1-50]"

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

Nach der Rate pro Sekunde fragen

Befehl
curl -s -G -w "\n" http://prometheus:9090/api/v1/query --data-urlencode 'query=rate(nginx_http_requests_total[1m])'

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

Ein Perzentil zeigt die langsamen Wenigen

Zehn Kundinnen und Kunden warten 20, 22, 25, 25, 28, 28, 31, 35, 40 und 950 Millisekunden. Der Durchschnitt ist 120,4. So lange hat niemand gewartet.

Das 90. Perzentil ist die Zeit, die neun von zehn nicht überschritten haben. Sortieren Sie die Zeiten und nehmen Sie die neunte: 40.

Der Server des Labs veröffentlicht keine Zeiten, Sie rechnen dieses Beispiel also von Hand.

Beispiel: zehn Wartezeiten

MaßWertWas es sagt
Durchschnitt120,4 msEine Zahl, die niemand erlebt hat
Median, das 50. Perzentil28 msDie Hälfte wartete so lange oder kürzer
90. Perzentil40 msNeun von zehn warteten so lange oder kürzer
Langsamste950 msEine Person wartete fast eine Sekunde

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Dieselben Zahlen im Code

Code: python
zeiten = [20, 22, 25, 25, 28, 28, 31, 35, 40, 950]
summe = 0
for zeit in zeiten:
    summe = summe + zeit
print("Durchschnitt", summe / len(zeiten))
print("Median", zeiten[4])
print("90. Perzentil", zeiten[8])
# Setzen Sie 950 auf 45. Welche Zahl bewegt sich am meisten?

Ein häufiger Irrtum

Warnung

Viele glauben, die durchschnittliche Zeit zeige, wie sich Nutzende fühlen. Wenige sehr langsame Anfragen ziehen sie hoch, viele schnelle verbergen sie. Lesen Sie den Median für den üblichen Fall und ein hohes Perzentil für den unglücklichen.

Ein Alarm ist eine Regel über eine Metrik

Niemand kann den ganzen Tag auf eine Kurve starren. Ein Alarm ist eine Regel, die eine Metrik für Sie beobachtet. Sie sagt: "Bleibt das für diese Zeit falsch, melde es jemandem."

Die Zeit zählt. Ein Ausschlag von einer Sekunde soll niemanden wecken. Prometheus hält seine Regeln in einer Liste. Eine neue Kopie des Labs hat noch keine, der nächste Run zeigt also eine leere Liste.

Die Regeln von Prometheus auflisten

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

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

Weiterführend: kurzes und langes Fenster

Senden Sie 300 Besuche mit curl -s -o /dev/null "http://app:8080/?n=[1-300]". Fragen Sie danach nach rate(nginx_http_requests_total[1m]) und nach rate(nginx_http_requests_total[5m]).

Stellen Sie beide Fragen zwei Minuten später noch einmal. Erklären Sie, warum das kurze Fenster stärker ausschlägt und das lange länger erhöht bleibt.

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

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.