rate rồi mới sum thì ĐÚNG, sum rồi mới rate thì SAI
(robustperception.io)- Khi xử lý counter trong Prometheus, có một lỗi rất dễ mắc phải khi áp dụng các hàm chỉ dành cho counter như
ratecùng với aggregation - Trong Prometheus, counter chỉ có thể: "tăng lên", "giữ nguyên" hoặc "được khởi tạo lại"
- Khi muốn tính tỷ lệ request mỗi giây của Node Exporter, có thể viết truy vấn như sau?
sum by (job)(rate(http_requests_total{job="node"}[5m]))
- Nhưng còn truy vấn sau thì sao?
rate(sum by (job)(http_requests_total{job="node"})[5m])- Truy vấn này có vấn đề
- Nếu một node nào đó bị khởi động lại, thì
http_requests_totalcủa Node Exporter trên node đó sẽ được đặt lại về 0- Khi đó giá trị của toàn bộ
sum(...)sẽ bị giảm xuống rate()sẽ cho rằng counter đã bị reset, và tạo ra spike sai lệch- *nếu giá trị giảm từ n xuống n-a, thì theo góc nhìn của rate, nó sẽ được hiểu là giá trị đã nhảy vọt thêm (n-a)
- Khi đó giá trị của toàn bộ
- Vì vậy...
rate(counter_a[5m] + counter_b[5m])như thế này là NOrate(counter_a[5m]) + rate(counter_b[5m])như thế này là YES
- Điều này không chỉ áp dụng cho
sum()mà còn vớimin(),max(),avg(),ceil(),histogram_quantile(),predict_linear() - Ngoài
rate(), các hàm dành cho counter còn cóirate(),increase(),resets()
Phần tóm tắt có dấu * là phần giải thích bổ sung không có trong nguyên văn nên đã được đánh dấu riêng.
Chưa có bình luận nào.