Mengapa `irate` di Prometheus tidak dapat menangkap spike
(valyala.medium.com)ratedaniratedigunakan untuk menghitung rate per detik di PromQL- Ada kesalahpahaman bahwa
iratemenangkap spike selama [range], sedangkanratemerata-ratakan spike tersebut iratehanya menghitung rate per detik dari dua data point terakhir- Dua data point terakhir yang akan terlihat pada setiap query
query_rangebergantung pada parameterstart,end, danstep- Karena itu, dashboard yang bergantung pada
iratedapat berubah drastis tergantung zooming dan scrolling
- Karena itu, dashboard yang bergantung pada
- Pada counter yang berubah sangat cepat, sulit bagi
irateuntuk menangkap semua spike
- Untuk ini, MetricsQL (bahasa query yang sebagian besar kompatibel dengan PromQL) mendukung fungsi
rollup_rate - Fungsi ini menghitung rate antar setiap data point yang berdekatan lalu mengembalikan
min,avg, danmax - Karena itu, semua spike dapat tertangkap secara konsisten di
mindanmax - Jika divisualisasikan langsung di dashboard, Anda dapat melihat band yang memenuhi
rollup_rate(min)<=irate<=rollup_rate(max)
- Kesalahpahaman lain tentang
irateadalah bahwa ia lebih cepat daripadarate - Mungkin terasa demikian karena dari data point yang diberikan selama interval [range], ia hanya melihat dua yang terakhir?
- Namun, dalam praktiknya bagian yang paling banyak menghabiskan CPU time di Prometheus saat menggunakan API
query_rangeadalah mengekstrak data point selama interval [start...end] - Fungsi mana yang digunakan tidak banyak memengaruhi performa
- Namun, dalam praktiknya bagian yang paling banyak menghabiskan CPU time di Prometheus saat menggunakan API
Tambahan karena hal ini tidak dijelaskan di postingan blog: perbedaan antara menggunakan nilai rollup="avg" pada rollup_rate dan sekadar memakai avg pada rate dapat dilihat di jawaban lain dari pengembang MetricsQL.
Belum ada komentar.