Monitoringsysteme mit Docker - Leischner
Praktikumsblatt 5 - PromQL
Aufgabe 1 - Prometheus Targets
- Informieren Sie sich auf der Website
https://leischner.inf.h-brs.de/netlab/services.html
über Prometheus-Targets im Netzlabor.
- Gibt es im Internet noch weitere frei verfügbare Targets für
Prometheus? Welche haben Sie gefunden?
- Integrieren Sie verschiedene remote Targets Ihrer Wahl
in Ihre Prometheus-Applikation, mindestens jedoch:
- den NodeExporter und den cAdvisor auf Ihrem
Server
moni21
,
- den NodeExporter und den cAdvisor auf dem
produktiven Dockerhost
dh.docklab.de
.
Damit Ihre Targets mit den Targets im Netzlabor kompatibel
sind, verwenden Sie für Ihre Targets das Label
hostname
, um den Hostnamen anzugeben.
Aufgabe 2 - Erstes Dashboard in Grafana
- Wie kann man feststellen, welche Metriken das
Prometheus-Target NodeExporter liefert? Wo findet man eine
Beschreibung dieser Metriken?
- Was genau beschreibt die Metrik
node_boot_time_seconds
und die Metrik node_time_seconds
? Von welchem Typ sind
diese Metriken?
- Fragen Sie diese Metrik direkt über Prometheus-Graph ab.
Was genau wird Ihnen hierbei von Prometheus geliefert?
- Geben Sie ein Kommando ein, mit dem sich die Up-Time des
Servers
moni21
ermitteln lässt.
- Überprüfen Sie, ob das Ergebnis plausibel ist. Wie gehen Sie
dabei vor?
- Erstellen Sie ein Grafana-Dashboard
Praktikumsblatt5
, das auf einem Panel P1
die Up-Time von
moni21
anzeigt.
Aufgabe 3 - Monitoring CPU-Last (Basics)
- Was genau beschreibt die Metrik
node_cpu_seconds_total
? Geben Sie eine genaue
Definition dieser Metrik. Von welchem Typ sind die Werte
dieser Metrik? Was ist bei diesem Typ zu beachten? Wo können
bei diesem Datentyp überraschende Probleme auftreten? Von
welcher Einheit sind die Werte?
- Fragen Sie diese Metrik direkt über Prometheus-Graph ab.
Was genau wird Ihnen hierbei von Prometheus geliefert?
- Schränken Sie die Abfrage auf die CPU-Zeiten im
User-Modus ein. Mit welchem Kommando machen Sie das?
Was erhalten Sie? Wie sieht der (zeitliche) Graph zu dieser
Abfrage aus?
- Angezeigt werden die CPU-Sekunden für alle CPUs seit dem
Start der jeweiligen Server. Diese Werte interessieren uns
aber eigentlich nicht. Wir wollen wissen, wie die CPUs
ausgelastet sind. Das heißt, wir wollen wissen, wie stark
die CPU-Zeiten ansteigen. Steigt eine CPU-Zeit stark an,
dann leistet diese CPU viel.
- Fragen Sie den Range-Vektor für die letzten 60 Sekunden
von den CPU-Zeiten im User-Modus eingeschränkt auf den host
moni21
ab. Mit welchem Kommando
machen Sie das? Was erhalten Sie?
Aufgabe 4 - Monitoring CPU-Last (Deeper Dive)
-
Wenden Sie auf den Range-Vektor aus
Aufgabe 3e) die Prometheus-Funktion
rate
an. Was ist das Ergebnis
auf der Console? Was genau macht diese Funktion rate
? Wie sieht der Graph zu Ihrem Ergebnis aus?
- Was ist der Unterschied zwischen der Funktion
rate
und irate
? Was ist ein typischer
Anwendungsfall von irate
? Wann sollte
irate
nicht verwendet werden und warum nicht?
- Berechnen Sie nun für jeden Server (nicht nur für
moni21
) die Gesamtauslastung
der CPU im user-Mode. Wie sieht Ihre Abfrage aus?
Welche Funktion haben Sie hierzu verwendet? Wie
"funktioniert" Ihre Abfrage? Warum empfiehlt es sich nicht
die Funktion sum
zu verwenden, um die
Gesamtauslastung zu berechnen?
Wie sieht der Graph zu Ihrem Ergebnis aus?
- Erweitern Sie Ihr Grafana-Dashboard
Praktikumsblatt5
mit einem Panel P2
, das die
Usermode-CPU-Lasten
mit der rate
-Funktion und einem Panel P3
, das
die Usermode-CPU-Lasten mit der irate
-Funktion
berechnet .
- Erweitern Sie Ihr Grafana-Dashboard
Praktikumsblatt5
mit einem Panel P4
, das
nur für den Server moni21
die
Usermode-CPU-Lasten
sowohl mit der rate
-Funktion als auch mit der irate
-Funktion
berechnet. Wählen Sie für den Range-Bereich ein geeignetes
Intervall! Hiermit lassen sich die Ergebnisse dieser
beiden Funktionen vergleichen.
Aufgabe 5 - Kontrollfragen zum Reading 4
Beantworten Sie die folgenden Fragen zum Reading 4 "PromQL" klar und präzise:
- Was ist eine Metrik? Welche Rolle spielen die Labels?
- Welche Metriktypen gibt es in Prometheus? Geben Sie ein Beispiel für
jeden Metriktyp an.
- Was ist ein Instant Vektor?
- Was ist ein Range Vektor?