日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Histogram、Summary 笔记

發布時間:2023/12/19 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 Histogram、Summary 笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

在大多數情況下人們都傾向于使用某些量化指標的平均值,例如CPU的平均使用率、頁面的平均響應時間。這種方式的問題很明顯,以系統API調用的平均響應時間為例:如果大多數API請求都維持在100ms的響應時間范圍內,而個別請求的響應時間需要5s,那么就會導致某些WEB頁面的響應時間落到中位數的情況,而這種現象被稱為長尾問題。
為了區分是平均的慢還是長尾的慢,最簡單的方式就是按照請求延遲的范圍進行分組。例如,統計延遲在0~10ms之間的請求數有多少而10~20ms之間的請求數又有多少。通過這種方式可以快速分析系統慢的原因。Histogram和Summary都是為了能夠解決這樣問題的存在,通過Histogram和Summary類型的監控指標,我們可以快速了解監控樣本的分布情況。

百分位數(quantile)

Prometheus中稱為quantile,其實叫percentile更準確。百分位數是指小于某個特定數值的采樣點達到一定的百分比。例如,假設0.9-quantile的值為120,意思就是所有的采樣值中,小于120的采樣值的數量占總體采樣值的90%。相應的,假設0.5-quantile的值為x,那么意思就是指小于x的采樣值占總體的50%,所以0.5-quantile也指中值(median)。

相對于簡單的平均值來說,百分位數更豐富,更能反應出真實的用戶體驗。常用的百分位數為0.5-quantile,0.9-quantile以及0.99-quantile。這也是Prometheus默認的設置。

注:這只是Prometheus中Summary目前版本的默認設置,在版本v0.10中,這些默認值會廢棄,意味著默認的Summary將沒有quantile設置。

Histogram也是Prometheus在client端支持的四種metrics類型之一。與Summary類似,每定義一個Histogram類型的metrics,實際也會生成幾個metrics。例如,

Histogram會產生下面6類metrics。后面4個可以用于計算quantile值。

http_request_duration_millisecond_count
http_request_duration_millisecond_sum
http_request_duration_millisecond_bucket
http_request_duration_millisecond_bucket

Histogram主要是設置不同的bucket,采用值分別落入不同的bucket。例如上面第一個bucket就是響應時間小于10ms的采樣點的數量,第二個bucket就是響應時間小于50ms的采樣點的數量,依此類推。
注意后面的采樣點是包含前面的采用點的,例如xxx_bucket的值為30,而xxx_bucket的值為120,那么意味著這120個采用點中,有30個是小于10ms的,其余90個采樣點的響應時間是介于10ms和50ms之間的。
注意+Inf是最高bucket的上限值,所以xxx_bucket是所有采樣點的數量,是Prometheus自動增加的一個bucket。
計算quantile值直接用函數histogram_quantile即可,例如下面是計算0.9-quantile的值,
histogram_quantile(0.9, rate(http_request_duration_milliseconds_bucket[10m]))
上面會針對每種label組合計算出一個出一個0.9-quantile值,也就是對每個"path"會計算出一個值。如果要針對所有path計算出一個匯總的值,則用如下語句,
histogram_quantile(0.9, sum(rate(http_request_duration_milliseconds_bucket[10m])) by (le))

使用Histogram計算quantile值,最大的問題就是:因為Histogram采用了線性插值法,所以如果bucket設置不合理,那么最后計算出的值可能偏差比較大。例如在前面的例子中,假設0.9-quantile的結果在10ms~50ms之間,但是表達式必須返回一個具體的值,這時就采用線性插值法得出36ms。顯然這種方法計算出的值可能會有誤差,而且范圍越大,例如10ms ~ 500ms,那么誤差也會越大。

Summary和Histogram對比
Summary不能對quantile值進行aggregation操作,而Histogram則可以;所以如果針對多實例的場景計算quantile,只能使用Histogram;
如果histogram的bucket設置不合理,則最后誤差可能會很大;所以如果需要相對精確的結果,而且是單實例場景,那么就使用Summary;
Summary對quantile的計算是在client端通過第三方庫perks做的;而Histogram對quantile的計算則是server端完成的;
Summary計算出的quantile值是基于進程開始運行至今的所有采樣值計算出來的;而Histogram則是基于最近的一段時間的采樣值計算出來的,更符合monitoring系統的本質。

引用:https://cloud.tencent.com/developer/news/319419

總結

以上是生活随笔為你收集整理的Histogram、Summary 笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。