Prometheus के irate के spike कैप्चर न कर पाने की वजह
(valyala.medium.com)- PromQL में per-second rate की गणना के लिए इस्तेमाल होने वाले
rateऔरirate - यह गलतफ़हमी मौजूद है कि
irate[range] के दौरान आने वाले spike को पकड़ता है, औरrateइन spike का औसत निकालता है irateकेवल आख़िरी दो data points का per-second rate गणना करता हैquery_rangeकी हर query में कौन-से आख़िरी दो data points दिखेंगे, यहstart,end,stepparameters पर निर्भर करता है- इसलिए
irateपर निर्भर dashboard zooming और scrolling के अनुसार काफ़ी बदल सकता है
- इसलिए
- तेज़ी से बदलने वाले counter में
irateसे सभी spike पकड़ना मुश्किल है
- MetricsQL (PromQL के साथ अधिकांशतः compatible Query Language) इसके लिए
rollup_ratefunction को support करता है - यह function हर आस-पास के data point pair के बीच rate निकालता है और उसका
min,avg,maxलौटाता है - इसलिए सभी spike को लगातार
minऔरmaxमें पकड़ा जा सकता है - अगर इसे सीधे dashboard में visualize करें, तो
rollup_rate(min)<=irate<=rollup_rate(max)को संतुष्ट करने वाला एक band देखा जा सकता है
irateके बारे में एक और गलतफ़हमी यह है कि यहrateसे तेज़ है- शायद ऐसा इसलिए लगता है क्योंकि यह [range] interval में दिए गए data points में से केवल आख़िरी दो को देखता है?
- लेकिन वास्तव में Prometheus सबसे ज़्यादा CPU time तब खर्च करता है जब
query_rangeAPI का उपयोग करते समय [start...end] interval से data points निकाले जाते हैं - कौन-सा function इस्तेमाल किया जा रहा है, इसका performance पर बहुत बड़ा असर नहीं पड़ता
- लेकिन वास्तव में Prometheus सबसे ज़्यादा CPU time तब खर्च करता है जब
ब्लॉग पोस्ट में यह बात समझाई नहीं गई है, इसलिए जोड़ दें कि rollup_rate के rollup="avg" value का उपयोग करने और rate पर साधारण avg लगाने के बीच का अंतर MetricsQL डेवलपर के एक अन्य जवाब में देखा जा सकता है।
अभी कोई टिप्पणी नहीं है.