運(yùn)維監(jiān)控系統(tǒng)之Prometheus介紹及數(shù)據(jù)類型
簡介
Prometheus 是由 SoundCloud 開源監(jiān)控告警解決方案,特別適合現(xiàn)在容器化的監(jiān)控。
架構(gòu)圖

Prometheus的特點(diǎn)
- 多維數(shù)據(jù)模型,包含key/value標(biāo)識標(biāo)簽的時間序列數(shù)據(jù);
 - PromQL,一種靈活的查詢語言 ,內(nèi)置的函數(shù)可以讓我們快速運(yùn)算得到我們想要的結(jié)果;
 - 不依賴分布式存儲,默認(rèn)是本地存儲,也可以選擇遠(yuǎn)程讀寫;
 - 通過http請求拉取(pull)exporter數(shù)據(jù);
 - 也可以通過網(wǎng)關(guān)(gateway)推送(push)數(shù)據(jù);
 - 配置可以通過服務(wù)發(fā)現(xiàn)或靜態(tài)配置發(fā)現(xiàn)監(jiān)控目標(biāo);
 - 多種圖形和儀表板支持模式,特別是grafana的支持,讓我們可以快速完成好看的圖表。
 
數(shù)據(jù)格式
prometheus存儲的是時序數(shù)據(jù):即按相同時序(相同名稱和標(biāo)簽),以時間維度存儲連續(xù)的數(shù)據(jù)的集合。
時序(time series)是由名稱(Metric)以及一組key/value標(biāo)簽定義的,具有相同的名字以及標(biāo)簽屬于相同時序。
- metric名字:表示需要記錄的數(shù)據(jù)的名稱以及數(shù)據(jù)類型,如http_request_total。時序的名字由 ASCII 字符,數(shù)字,下劃線,以及冒號組成,它必須滿足正則表達(dá)式 [a-zA-Z:][a-zA-Z0-9:]*, 其名字應(yīng)該具有語義化,一般表示一個可以度量的指標(biāo),例如 http_requests_total, 可以表示 http 請求的總數(shù)。
 - 標(biāo)簽:用來表示一類資源,例如:同一個集群可以使用同一個標(biāo)簽,就可以通過標(biāo)簽獲取到整個集群的同一個指標(biāo)。
 - 指標(biāo)值:按照某個時序以時間維度采集的數(shù)據(jù),稱之為樣本。實際的時間序列,每個序列包括一個float64的值和一個毫秒級的unix 時間戳
 
Prometheus 四種指標(biāo)類型
1.Counter (計算器):單調(diào)遞增的指標(biāo),即只增不減,除非監(jiān)控系統(tǒng)發(fā)生了重置。
2.Gauge(儀表盤):可以任意變化的指標(biāo),即可增可減。
3.Histogram(直方圖):在一段時間范圍內(nèi)對數(shù)據(jù)進(jìn)行采樣,并將其計入可配置的存儲桶中,后續(xù)可通過指定區(qū)間篩選樣本,也可以統(tǒng)計樣本總數(shù),最后一般將數(shù)據(jù)展示為直方圖,
- 樣本的值分布在 bucket 中的數(shù)量,命名為 <basename>_bucket{le="<上邊界>"}。解釋的更通俗易懂一點(diǎn),這個值表示指標(biāo)值小于等于上邊界的所有樣本數(shù)量
 - 所有樣本值的大小總和,命名為 <basename>_sum。
 - 樣本總數(shù),命名為 <basename>_count。值和 <basename>_bucket{le="+Inf"} 相同。
 
4.Summary(摘要):Histogram類似類型,用于表示一段時間內(nèi)的數(shù)據(jù)采樣結(jié)果(通常是請求持續(xù)時間或響應(yīng)大小等),但它直接存儲了分位數(shù)(通過客戶端計算,然后展示出來),而不是通過區(qū)間計算
- 樣本值的分位數(shù)分布φ-quantiles (0 ≤ φ ≤ 1) 情況,命名為 <basename>{quantile="<φ>"}
 - 所有樣本值的大小總和,命名為 <basename>_sum
 
Histogram與Summary的異同
它們都包含了
總結(jié)
prometheus的數(shù)據(jù)格式規(guī)范,可以使用PromQL語句快速查詢,特別是結(jié)合grafana,完成一個圖表是分分鐘的事情。















 
 
 





 
 
 
 