Erst rate, dann sum; sum, dann rate ist falsch
(robustperception.io)- Beim Umgang mit Countern in Prometheus passiert leicht ein Fehler, wenn man counter-spezifische Funktionen wie
ratezusammen mit Aggregation verwendet - Ein Counter in Prometheus kann nur „steigen“, „gleich bleiben“ oder „zurückgesetzt werden“
- Wenn man die Anfragerate pro Sekunde des Node Exporters berechnen möchte, könnte man folgende Query schreiben:
sum by (job)(rate(http_requests_total{job="node"}[5m]))
- Aber was ist mit folgender Query?
rate(sum by (job)(http_requests_total{job="node"})[5m])- Diese Query hat ein Problem
- Wenn ein Node neu gestartet wird, wird
http_requests_totaldes Node Exporters auf diesem Node auf 0 zurückgesetzt- Dann sinkt der Wert von
sum(...)insgesamt rate()interpretiert das als Reset eines Counters, wodurch ein falscher Spike entsteht- *Wenn der Wert von n auf n-a fällt, sieht
ratedas so, als wäre der Wert um (n-a) gesprungen
- *Wenn der Wert von n auf n-a fällt, sieht
- Dann sinkt der Wert von
- Deshalb gilt:
rate(counter_a[5m] + counter_b[5m])ist NOrate(counter_a[5m]) + rate(counter_b[5m])ist YES
- Das gilt nicht nur für
sum(), sondern auch für Dinge wiemin(),max(),avg(),ceil(),histogram_quantile()undpredict_linear() - Zu den Funktionen für Counter gehören neben
rate()auchirate(),increase()undresets()
Zusammenfassungen mit * sind zusätzliche Erklärungen, die nicht im Originaltext stehen, und wurden deshalb separat gekennzeichnet.
Noch keine Kommentare.