真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

histogram的工作原理以及分位數(shù)的計(jì)算方法

這篇文章主要介紹“ histogram的工作原理以及分位數(shù)的計(jì)算方法”,在日常操作中,相信很多人在 histogram的工作原理以及分位數(shù)的計(jì)算方法問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答” histogram的工作原理以及分位數(shù)的計(jì)算方法”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、網(wǎng)頁(yè)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、廣河網(wǎng)站維護(hù)、網(wǎng)站推廣。

Prometheus 中提供了四種指標(biāo)類型(參考:Prometheus 的指標(biāo)類型),其中直方圖(Histogram)和摘要(Summary)是最復(fù)雜和難以理解的,這篇文章就是為了幫助大家加深對(duì)這 histogram 類型指標(biāo)的理解。

1. 什么是 Histogram?

根據(jù)上篇文檔,Histogram 會(huì)在一段時(shí)間范圍內(nèi)對(duì)數(shù)據(jù)進(jìn)行采樣(通常是請(qǐng)求持續(xù)時(shí)間或響應(yīng)大小等),并將其計(jì)入可配置的存儲(chǔ)桶(bucket)中。但這句話還是不太好理解,下面通過具體的示例來說明。

假設(shè)我們想監(jiān)控某個(gè)應(yīng)用在一段時(shí)間內(nèi)的響應(yīng)時(shí)間,最后監(jiān)控到的樣本的響應(yīng)時(shí)間范圍為 0s~10s?,F(xiàn)在我們將樣本的值域劃分為不同的區(qū)間,即不同的 bucket,每個(gè) bucket 的寬度是 0.2s。那么第一個(gè) bucket 表示響應(yīng)時(shí)間小于等于 0.2s 的請(qǐng)求數(shù)量,第二個(gè) bucket 表示響應(yīng)時(shí)間大于 0.2s 小于等于 0.4s 的請(qǐng)求數(shù)量,以此類推。

histogram的工作原理以及分位數(shù)的計(jì)算方法

Prometheus 的 histogram 是一種累積直方圖,與上面的區(qū)間劃分方式是有差別的,它的劃分方式如下:還假設(shè)每個(gè) bucket 的寬度是 0.2s,那么第一個(gè) bucket 表示響應(yīng)時(shí)間小于等于 0.2s 的請(qǐng)求數(shù)量,第二個(gè) bucket 表示響應(yīng)時(shí)間小于等于 0.4s 的請(qǐng)求數(shù)量,以此類推。也就是說,每一個(gè) bucket 的樣本包含了之前所有 bucket 的樣本,所以叫累積直方圖。

histogram的工作原理以及分位數(shù)的計(jì)算方法

2. 為什么是累積直方圖?

上節(jié)內(nèi)容告訴我們,Prometheus 中的 histogram 是累積的,這是很奇怪的,因?yàn)橥ǔG闆r下非累積的直方圖更容易理解。Prometheus 為什么要這么做呢?

想象一下,如果 histogram 類型的指標(biāo)中加入了額外的標(biāo)簽,或者劃分了更多的 bucket,那么樣本數(shù)據(jù)的分析就會(huì)變得越來越復(fù)雜。如果 histogram 是累積的,在抓取指標(biāo)時(shí)就可以根據(jù)需要丟棄某些 bucket,這樣可以在降低 Prometheus 維護(hù)成本的同時(shí),還可以粗略計(jì)算樣本值的分位數(shù)。通過這種方法,用戶不需要修改應(yīng)用代碼,便可以動(dòng)態(tài)減少抓取到的樣本數(shù)量。

假設(shè)某個(gè) histogram 類型指標(biāo)的樣本數(shù)據(jù)如下:

histogram的工作原理以及分位數(shù)的計(jì)算方法

現(xiàn)在我們希望 Prometheus 在抓取指標(biāo)時(shí)丟棄響應(yīng)時(shí)間在 100ms 以下的 bucket,就可以通過下面的 relabel 配置來實(shí)現(xiàn):

histogram的工作原理以及分位數(shù)的計(jì)算方法

其中,example_latency_seconds_bucket 用來匹配標(biāo)簽 __name__ 的值,'0.0.*' 用來匹配標(biāo)簽 le 的值,即 le 的值為 0.0x。然后將匹配到的樣本丟棄。

通過這種方法,你可以丟棄任意的 bucket,但不能丟棄 le="+Inf" 的 bucket,因?yàn)?histogram_quantile 函數(shù)需要使用這個(gè)標(biāo)簽。

另外 histogram 還提供了 _sum 指標(biāo)和 _count 指標(biāo),即使你丟棄了所有的 bucket,仍然可以通過這兩個(gè)指標(biāo)值來計(jì)算請(qǐng)求的平均響應(yīng)時(shí)間。

通過累積直方圖的方式,還可以很輕松地計(jì)算某個(gè) bucket 的樣本數(shù)占所有樣本數(shù)的比例。例如,想知道響應(yīng)時(shí)間小于等于 1s 的請(qǐng)求占所有請(qǐng)求的比例,可以通過以下公式來計(jì)算:

example_latency_seconds_bucket{le="1.0"} / ignoring (le) example_latency_seconds_bucket{le="+Inf"}

3. 分位數(shù)計(jì)算

Prometheus 通過 histogram_quantile 函數(shù)來計(jì)算分位數(shù)(quantile),而且是一個(gè)預(yù)估值,并不完全準(zhǔn)確,因?yàn)檫@個(gè)函數(shù)是假定每個(gè)區(qū)間內(nèi)的樣本分布是線性分布來計(jì)算結(jié)果值的。預(yù)估的準(zhǔn)確度取決于 bucket 區(qū)間劃分的粒度,粒度越大,準(zhǔn)確度越低。以下圖為例:

histogram的工作原理以及分位數(shù)的計(jì)算方法

假設(shè)有 10000 個(gè)樣本,第 9501 個(gè)樣本落入了第 8 個(gè) bucket。第 8 個(gè) bucket 總共有 368 個(gè)樣本,其中第 9501 個(gè)樣本在該 bucket 中屬于第 93 個(gè)樣本。

根據(jù) Prometheus 源代碼文件 promql/quantile.go 第 108 行的公式:

return bucketStart + (bucketEnd-bucketStart)*float64(rank/count)

我們可以計(jì)算(quantile=0.95)的樣本值為:

histogram的工作原理以及分位數(shù)的計(jì)算方法

這個(gè)值已經(jīng)很接近精確的分位數(shù)值了。關(guān)于 histogram_quantile 函數(shù)的詳細(xì)使用方式,請(qǐng)參考:PromQL 內(nèi)置函數(shù)。

到此,關(guān)于“ histogram的工作原理以及分位數(shù)的計(jì)算方法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!


網(wǎng)站名稱:histogram的工作原理以及分位數(shù)的計(jì)算方法
網(wǎng)頁(yè)URL:http://weahome.cn/article/ishjic.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部