Monitoringsysteme mit Docker - Leischner

Praktikumsblatt 5 - PromQL

 

Aufgabe 1 - Prometheus Targets

  1. Informieren Sie sich auf der Website https://leischner.inf.h-brs.de/netlab/services.html über Prometheus-Targets im Netzlabor.
  2. Gibt es im Internet noch weitere frei verfügbare Targets für Prometheus? Welche haben Sie gefunden?
  3. 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

  1. Wie kann man feststellen, welche Metriken das Prometheus-Target NodeExporter liefert? Wo findet man eine Beschreibung dieser Metriken?
  2. Was genau beschreibt die Metrik node_boot_time_seconds und die Metrik node_time_seconds ? Von welchem Typ sind diese Metriken?
  3. Fragen Sie diese Metrik direkt über Prometheus-Graph ab. Was genau wird Ihnen hierbei von Prometheus geliefert?
  4. Geben Sie ein Kommando ein, mit dem sich die Up-Time des Servers moni21 ermitteln lässt.
  5. Überprüfen Sie, ob das Ergebnis plausibel ist. Wie gehen Sie dabei vor?
  6. Erstellen Sie ein Grafana-Dashboard Praktikumsblatt5, das auf einem Panel P1 die Up-Time von moni21 anzeigt.

 

Aufgabe 3 - Monitoring CPU-Last (Basics)

  1. 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?
  2. Fragen Sie diese Metrik direkt über Prometheus-Graph ab. Was genau wird Ihnen hierbei von Prometheus geliefert?
  3. 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?
  4. 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.
  5. 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)

  1. 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?
  2. 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?
  3. 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?
  4. 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 .
  5. 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:

  1. Was ist eine Metrik? Welche Rolle spielen die Labels?
  2. Welche Metriktypen gibt es in Prometheus? Geben Sie ein Beispiel für jeden Metriktyp an.
  3. Was ist ein Instant Vektor?
  4. Was ist ein Range Vektor?

 

 

Impressum | Datenschutz | leischner.inf.h-brs.de, last modification: 15.11.2021-20.10