Zum Inhalt

PromQL Abfragen schreiben

Ziel

In diesem Projekt lernen Sie, wie man PromQL-Abfragen formuliert, um Metriken im Explore Tab von Grafana abzufragen. Sie werden:

  • erste einfache PromQL-Abfragen schreiben
  • mit Filtern, Labels und Zeitintervallen arbeiten
  • eigene Abfragen und Abfragen in Grafana Explore untersuchen

Hilfsmittel

TODO: Grafana Login erklären

Aufgabe 1 – Erste Metriken anzeigen

  • Öffnen Sie den Explore Tab in der Grafana Web-Oberfläche .
  • Stellen Sie sicher, dass oben rechts Code ausgewählt ist.
  • Geben Sie up als Query ein.
  • Drücken Sie „Run querry“.

Die up Metrik zeigt an, ob ein Target erreichbar ist. Der Wert ist 1 bei Erfolg, 0 bei Nichterreichbarkeit.

Aufgabe 2 – Labels nutzen

  • Filtern Sie nach node_exporter Targets mit der job-Bezeichnung node-exporter.
  • Filtern Sie nach einem bestimmten Node Exporter.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)

Beispiel:

up{job="node-exporter", instance="10.0.0.1:9100"}

Aufgabe 3 – CPU-Auslastung berechnen

  • Finden Sie die Metrik node_cpu_seconds_total.
  • Nutzen Sie die rate-Funktion, um die Idle Zeit über 5 Minuten zu berechnen.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
rate(node_cpu_seconds_total[5m])
  • Filtern Sie nur nach mode=idle.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
rate(node_cpu_seconds_total{mode="idle"}[5m])
  • Bilden Sie den Duchschnitt über alle CPUs einer Node.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance)
  • Berechnen Sie den Anteil der CPU-Zeit, die nicht im Idle-Modus ist.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
1 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance)

Aufgabe 4 – Filesystem Auslastung

  • Finden Sie die Metriken node_filesystem_size_bytes und node_filesystem_free_bytes.
  • Berechnen Sie, wie viel Prozent des Dateisystems belegt sind für Devices mit mountpoint="/".
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)

Beispiel:

 1-node_filesystem_free_bytes{mountpoint="/"}/node_filesystem_size_bytes{mountpoint="/"}

Aufgabe 5 – Aggregationen

  • Verwenden Sie avg, sum, min, max Funktionen.
  • Berechnen Sie:
  • die durchschnittliche CPU-Auslastung über alle Nodes
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)

Beispiel:

1 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m]))

  • den minimalen freien Speicher aller Systeme für den mountpoint="/".
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)

Beispiel:

min(node_filesystem_free_bytes{mountpoint="/"})

  • die Summe aller empfangenen Netzwerkbytes (node_network_receive_bytes_total) für alle Nodes am device="enp7s0".
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)

Beispiel:

sum(node_network_receive_bytes_total{device="enp7s0"})

Aufgabe 7 – Abfragen kombinieren (optional)

  • Berechnen Sie die belegte Speichermenge je Node in Prozent. Nutzen Sie die Metriken node_memory_MemAvailable_bytes und node_memory_MemTotal_bytes.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)

node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes
- In einer zweiten Metrik node_uname_info finden Sie den Hostnamen (nodename) als Label. - Kombinieren Sie nun beide Metriken, sodass der Hostname (nodename) in der Ausgabe auftaucht. - Verwenden Sie dazu on und group_left.

Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
(node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * on(instance) group_left(nodename) node_uname_info