天天看點

Prometheus的名額分類

Prometheus 名額分為 Counter (計數器) Gauge (儀表盤)、Histogram (直方圖)、Summary (摘要)

Counter 是計數器類型,它的特點是隻增不減,例如機器啟動時間、 HTTP 通路

量等 。Counter 具有很好的不相關性,不會因為機器重新開機而置 我們在使用 Counter

名額時,通常會結合 rate ()方法擷取該名額在某個時間段的變化率,例如,“ HTTP

請求總量”名額就屬于典型的 Counter 名額,通過對它進行 rate ()操作,可以得出請

求的變化率。

Gauge 是儀表盤,表征名額的實時變化情況,可增可誠,例如 CPU 和記憶體的使

用量、網絡 大小等,大部分監控資料都是 Gauge 類型的。

Summary和Histogram 一樣,都屬于進階名額,用于凸顯資料的分布狀況

如果需要了解某個時間段内請求的響應時間,則通常使用平均響應時間,但這樣做無

法展現資料的長尾效應 例如,一個 HTTP 伺服器的正常響應時間是 30ms ,但有很

少幾次請求耗時 3s ,通過平均響應時間很難瓢别長尾效應,這時可以通過 Histogram

或者 Summary 展現 Histogram Summary 這兩種名額類型在本質上是可以互相轉

化的

這裡先了解一下資料分位:伊代表分位數 ,;三 ψ~1 ,分位數是在 個觀測值中

按數 ·N 排序的觀測值 例如, 0.9 分位數代表第 位置上的數,如果總數是

100 那麼将是第 個數

Summary 是采樣點分位圖統計,用于得到資料的分布情況 例如,如果在要統

計的班級中,有 90%學生的成績低于 93 分,有 95%學生的成績低于 96 分,則采用

Summary 能夠更好地展示資料的分布情況

Prometheus 内部, Prometheus_tsdb_ wal_fsync _ duration_seconds 名額的類型為

Summary ,它記錄了 Prometheus Server WAL 寫入磁盤的 同步時間:

Prometheus_tsdb_wal_fsync_duration_seconds{quantile=” 0 . 5”} 0.012352463

Prometheus tsdb wal fsync duration seconds{quantile=” 0.9 ”} 0 .0144 58005

進而得出有 50% 的同步時間低于 0.012 352 463s ,有 90% 的同步時間低于 0.014

458 005s

Histogram 反映了某個區間内的樣本個數,通過{ le ="上邊界”}指定這個範圍内的

樣本數 Prometheus 中表示每個本地存儲序列儲存的 chunk 的名額 prometheus_

local_ storage_ series_ chunks __persisted 就屬于 Histogram 名額類型,如下所示:

prometheus_local_storage_series_chunks_persisted{le=” l.6384e+06”} 260

prometheus_local_storage_series_chunks_persisted{le=” 6.5536e+06”} 780

可以看到,小于 l.6384e+06 chunk 的序列有 260 個,小于 6.5536e+06 chunk

的序列有 780 個

代表注釋,“# HELP ”提供幫助資訊,“#TYPE ”代表 metric 類型

如下所示是調用 Prometheus exporter 傳回的一個監控資料樣本

HELP http_requests_total The total number of HTTP requests .

TYPE http_requests_total counter

http requests_total{method=”post” , code=” 20 0 ”}

95066363000

http_requests_total{method=”post”, code=” 40 。”}

66363000

如果是 Histogram Summary 類型,則必須滿足以下條件:

名額必須提供 sum count 方法,分别表示總和和總量;

© Summary 類型符合“名額名稱{quant le =分位點}”格式;

Histogram 類型符合“名額名稱 buck t{le =分位點}”格式,必須包含“名額

名稱一bucket{le="+Inf’}”的名額項,它的值等于“名額名_count ”的值;

Summary Historam 中, quantil 巳和 le 必須按從小到大的順序排列

為了相容 push 方式, Prometheus 提供了 Pushgateway 元件 Pushgateway 元件

接收用戶端發送過來的資料,按照 Job Instance 兩個層級進行組織,支援資料的

追加和删除,并且為防止資料丢失,還支援本地存儲

動态發現方式比較适合在雲環境下使用 雲的理念就是按需供給,資源是動态

配置設定的,并且生命周期比實體機器短。

Prometheus 通過動态發現方式擷取監控對象 目前支援以下系統擷取監控對象:

容器管理系統,例如 Kubernetes Marathon;

各種雲管平台,例如 EC2 Azure OpenStack;

各種服務發現元件,例如 DNS Zoo Keeper Consul等

Promet eus 會從這些元件中擷取監控對象,并彙總在這些元件中擷取的資料,

進而擷取所有監控對象 在第 次被 入時,監控 象(下稱 target 的狀态是

unkno 之後, Prometheus 會在設定的周期内對 target 資料進行循環采集,如果采

內建功, targ et 狀态變為 up ;如 果采集失敗(例如超 ), target 狀态變為 down

下面以與 Kubernetes 內建為例講解監控對象自動發現的流

( 1 )需要在 Prometheus 裡配置 Kubernetes API 的位址和認證憑據,這樣

Prometheus 就可以連接配接到 Kubernetes API 來擷取資訊

( 2 ) Prometheu 的服務發現元件會一直監昕( watch ) Kubernetes 叢集的變化,

當有新主機或加入叢集的時候,會擷取新主機的主機名和主 IP ,如果是新 建的