Wenden Sie die rate-Funktion und Label-Filter an
In diesem Schritt verfeinern Sie Ihre Abfrage mithilfe von Label-Filtern und der rate()-Funktion, um aussagekräftigere Daten zu erhalten. Der Rohwert eines Zählers ist oft nicht nützlich; wir sind normalerweise mehr an seiner Änderungsrate interessiert.
Zuerst filtern wir die Ergebnisse, um nur die CPU-Zeit im idle-Modus anzuzeigen. Dies können Sie tun, indem Sie Ihrer Abfrage einen Label-Selektor in geschweiften Klammern {} hinzufügen.
- Geben Sie die folgende Abfrage im Expression Browser ein und führen Sie sie aus:
node_cpu_seconds_total{mode="idle"}
Diese Abfrage gibt nun nur die Zeitreihen zurück, bei denen das Label mode exakt idle ist.
Als Nächstes berechnen wir die pro Sekunde gemessene Änderungsrate dieses Zählers. Hierfür verwenden wir die rate()-Funktion. Die rate()-Funktion muss wissen, über welchen Zeitraum die Rate berechnet werden soll. Dies geben wir mit einem Range Vector Selector an, z. B. [5m] für die letzten 5 Minuten.
- Ändern Sie nun Ihre Abfrage, um sie in die
rate()-Funktion einzuschließen und einen 5-Minuten-Bereichsselektor hinzuzufügen. Führen Sie die endgültige Abfrage aus:
rate(node_cpu_seconds_total{mode="idle"}[5m])
Lassen Sie uns diese erweiterte Abfrage aufschlüsseln:
node_cpu_seconds_total{mode="idle"}: Dies ist der Instant Vector Selector, der für unsere gewünschte Metrik und unser gewünschtes Label filtert.
[5m]: Dies ist der Range Selector, der Prometheus anweist, alle Datenpunkte der letzten 5 Minuten für die ausgewählten Zeitreihen abzurufen.
rate(...): Dies ist die Funktion, die den 5-Minuten-Datenbereich nimmt und die durchschnittliche pro Sekunde gemessene Rate berechnet, mit der der Zähler gestiegen ist.
Das Ergebnis ist nicht mehr ein großer Zählerwert, sondern ein Wert typischerweise zwischen 0 und 1 (für einen einzelnen CPU-Kern). Ein Wert von 0.95 würde bedeuten, dass die CPU in den letzten 5 Minuten im Durchschnitt zu 95 % im Leerlauf war. Dies sind wesentlich nützlichere Informationen für die Überwachung.