2 Punkte von dongho42 2024-11-24 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Beim Umgang mit Countern in Prometheus passiert leicht ein Fehler, wenn man counter-spezifische Funktionen wie rate zusammen 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_total des 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 rate das so, als wäre der Wert um (n-a) gesprungen
  • Deshalb gilt:
    • rate(counter_a[5m] + counter_b[5m]) ist NO
    • rate(counter_a[5m]) + rate(counter_b[5m]) ist YES
  • Das gilt nicht nur für sum(), sondern auch für Dinge wie min(), max(), avg(), ceil(), histogram_quantile() und predict_linear()
  • Zu den Funktionen für Counter gehören neben rate() auch irate(), increase() und resets()

Zusammenfassungen mit * sind zusätzliche Erklärungen, die nicht im Originaltext stehen, und wurden deshalb separat gekennzeichnet.

Noch keine Kommentare.

Noch keine Kommentare.