Prometheus'taki `irate` neden spike'ları yakalayamıyor
(valyala.medium.com)- PromQL'de saniye başına oranı hesaplamak için kullanılan
rateveirate irate'in [range] boyunca spike'ları yakaladığı,rate'in ise bu spike'ların ortalamasını aldığına dair bir yanılgı varirate, yalnızca son iki data point'in saniye başına oranını hesaplarquery_rangeiçindeki her sorguda görülecek son iki data point'in hangileri olacağıstart,end,stepparametrelerine bağlıdır- Bu nedenle
irate'e dayanan paneller, zoom ve scroll'a göre büyük ölçüde değişir
- Bu nedenle
- Hızla değişen counter'larda
irateile tüm spike'ları yakalamak zordur
- MetricsQL'de (PromQL ile büyük ölçüde uyumlu bir sorgu dili) bunun için
rollup_ratefonksiyonu desteklenir - Bu fonksiyon, birbirine komşu her data point çifti arasındaki oranı hesaplar ve bunun
min,avg,maxdeğerlerini döndürür - Bu sayede tüm spike'lar tutarlı biçimde
minvemaxiçinde yakalanabilir - Bunu doğrudan panelde görselleştirirseniz,
rollup_rate(min)<=irate<=rollup_rate(max)koşulunu sağlayan bir bant görebilirsiniz
iratehakkındaki bir başka yanılgı darate'ten daha hızlı olduğu yönünde- Muhtemelen [range] aralığında verilen data point'ler içinden yalnızca son ikisine baktığı için böyle hissediliyor olabilir?
- Ancak gerçekte Prometheus'un en çok CPU zamanı harcadığı yer,
query_rangeAPI kullanılırken [start...end] aralığındaki data point'leri çıkarmaktır - Hangi fonksiyonun kullanıldığı performansı büyük ölçüde etkilemez
- Ancak gerçekte Prometheus'un en çok CPU zamanı harcadığı yer,
Blog yazısında bu açıklanmadığı için eklemek gerekirse, rollup_rate içinde rollup="avg" değerini kullanmakla rate üzerinde doğrudan avg kullanmak arasındaki farkı MetricsQL geliştiricisinin başka bir yanıtında görebilirsiniz.
Henüz yorum yok.