Prometheus 筆記

一庆锦、概述

Prometheus 優(yōu)勢(shì)

  • 由指標(biāo)名稱和鍵/值對(duì)標(biāo)簽標(biāo)識(shí)的時(shí)間序列數(shù)據(jù)組成的多維數(shù)據(jù)模型。
  • 強(qiáng)大的查詢語(yǔ)言 PromQL。
  • 不依賴分布式存儲(chǔ)携御;單個(gè)服務(wù)節(jié)點(diǎn)具有自治能力。
  • 時(shí)間序列數(shù)據(jù)是服務(wù)端通過(guò) HTTP 協(xié)議主動(dòng)拉取獲得的既绕,也可以通過(guò)中間網(wǎng)關(guān)來(lái)推送時(shí)間序列數(shù)據(jù)啄刹。
  • 可以通過(guò)靜態(tài)配置文件或服務(wù)發(fā)現(xiàn)來(lái)獲取監(jiān)控目標(biāo)。
  • 支持多種類型的圖表和儀表盤凄贩。

Prometheus 組件

  • Prometheus Server:作為服務(wù)端誓军,用來(lái)存儲(chǔ)時(shí)間序列數(shù)據(jù)。
  • 客戶端庫(kù)用來(lái)檢測(cè)應(yīng)用程序代碼疲扎。
  • 用于支持臨時(shí)任務(wù)的推送網(wǎng)關(guān)昵时。
  • Exporter:用來(lái)監(jiān)控 HAProxy,StatsD评肆,Graphite 等特殊的監(jiān)控目標(biāo)债查,并向 Prometheus 提供標(biāo)準(zhǔn)格式的監(jiān)控樣本數(shù)據(jù)。
  • alartmanager 用來(lái)處理告警瓜挽。
  • 其他各種周邊工具盹廷。

Prometheus 適用于什么場(chǎng)景

Prometheus 適用于記錄文本格式的時(shí)間序列,它既適用于以機(jī)器為中心的監(jiān)控久橙,也適用于高度動(dòng)態(tài)的面向服務(wù)架構(gòu)的監(jiān)控俄占。在微服務(wù)的世界中,它對(duì)多維數(shù)據(jù)收集和查詢的支持有特殊優(yōu)勢(shì)淆衷。Prometheus 是專為提高系統(tǒng)可靠性而設(shè)計(jì)的缸榄,它可以在斷電期間快速診斷問(wèn)題,每個(gè) Prometheus Server 都是相互獨(dú)立的祝拯,不依賴于網(wǎng)絡(luò)存儲(chǔ)或其他遠(yuǎn)程服務(wù)甚带。當(dāng)基礎(chǔ)架構(gòu)出現(xiàn)故障時(shí),你可以通過(guò) Prometheus 快速定位故障點(diǎn)佳头,而且不會(huì)消耗大量的基礎(chǔ)架構(gòu)資源鹰贵。

Prometheus 不適合什么場(chǎng)景

Prometheus 非常重視可靠性,即使在出現(xiàn)故障的情況下康嘉,你也可以隨時(shí)查看有關(guān)系統(tǒng)的可用統(tǒng)計(jì)信息碉输。如果你需要百分之百的準(zhǔn)確度,例如按請(qǐng)求數(shù)量計(jì)費(fèi)亭珍,那么 Prometheus 不太適合你敷钾,因?yàn)樗占臄?shù)據(jù)可能不夠詳細(xì)完整枝哄。這種情況下,你最好使用其他系統(tǒng)來(lái)收集和分析數(shù)據(jù)以進(jìn)行計(jì)費(fèi)阻荒,并使用 Prometheus 來(lái)監(jiān)控系統(tǒng)的其余部分挠锥。

二、數(shù)據(jù)模型

Prometheus 所有采集的監(jiān)控?cái)?shù)據(jù)均以指標(biāo)(metric)的形式保存在內(nèi)置的時(shí)間序列數(shù)據(jù)庫(kù)當(dāng)中(TSDB):屬于同一指標(biāo)名稱侨赡,同一標(biāo)簽集合的瘪贱、有時(shí)間戳標(biāo)記的數(shù)據(jù)流。除了存儲(chǔ)的時(shí)間序列辆毡,Prometheus 還可以根據(jù)查詢請(qǐng)求產(chǎn)生臨時(shí)的、衍生的時(shí)間序列作為返回結(jié)果甜害。

指標(biāo)名稱和標(biāo)簽

每一條時(shí)間序列由指標(biāo)名稱(Metrics Name)以及一組標(biāo)簽(鍵值對(duì))唯一標(biāo)識(shí)舶掖。

指標(biāo)名稱

指標(biāo)(metric name):可以反映被監(jiān)控樣本的含義(例如,http_requests_total — 表示當(dāng)前系統(tǒng)接收到的 HTTP 請(qǐng)求總量)尔店,指標(biāo)名稱只能由 ASCII 字符眨攘、數(shù)字、下劃線以及冒號(hào)組成嚣州,同時(shí)必須匹配正則表達(dá)式 [a-zA-Z_:][a-zA-Z0-9_:]鲫售。

注意:冒號(hào)用來(lái)表示用戶自定義的記錄規(guī)則,不能在 exporter 中或監(jiān)控對(duì)象直接暴露的指標(biāo)中使用冒號(hào)來(lái)定義指標(biāo)名稱该肴。

標(biāo)簽

標(biāo)簽:通過(guò)標(biāo)簽Prometheus 開(kāi)啟了強(qiáng)大的多維數(shù)據(jù)模型情竹。

對(duì)于相同的指標(biāo)名稱,通過(guò)不同標(biāo)簽列表的集合匀哄,會(huì)形成特定的度量維度實(shí)例(例如:所有包含度量名稱為 /api/tracks 的 http 請(qǐng)求秦效,打上 method=POST 的標(biāo)簽,就會(huì)形成具體的 http 請(qǐng)求)涎嚼。該查詢語(yǔ)言在這些指標(biāo)和標(biāo)簽列表的基礎(chǔ)上進(jìn)行過(guò)濾和聚合阱州。改變?nèi)魏味攘恐笜?biāo)上的任何標(biāo)簽值(包括添加或刪除指標(biāo)),都會(huì)創(chuàng)建新的時(shí)間序列法梯。

標(biāo)簽的名稱只能由 ASCII 字符苔货、數(shù)字以及下劃線組成并滿足正則表達(dá)式 [a-zA-Z_][a-zA-Z0-9_]。

其中以 __ 作為前綴的標(biāo)簽立哑,是系統(tǒng)保留的關(guān)鍵字夜惭,只能在系統(tǒng)內(nèi)部使用。標(biāo)簽的值則可以包含任何 Unicode 編碼的字符刁憋。

樣本

在時(shí)間序列中的每一個(gè)點(diǎn)稱為一個(gè)樣本(sample)滥嘴,樣本由以下三部分組成:

  • 指標(biāo)(metric):指標(biāo)名稱和描述當(dāng)前樣本特征的 labelsets;
  • 時(shí)間戳(timestamp):一個(gè)精確到毫秒的時(shí)間戳至耻;
  • 樣本值(value): 一個(gè) folat64 的浮點(diǎn)型數(shù)據(jù)表示當(dāng)前樣本的值若皱。

三镊叁、指標(biāo)類型

Prometheus 的客戶端庫(kù)中提供了四種核心的指標(biāo)類型。但這些類型只是在客戶端庫(kù)(客戶端可以根據(jù)不同的數(shù)據(jù)類型調(diào)用不同的 API 接口)和在線協(xié)議中走触,實(shí)際在 Prometheus server 中并不對(duì)指標(biāo)類型進(jìn)行區(qū)分晦譬,而是簡(jiǎn)單地把這些指標(biāo)統(tǒng)一視為無(wú)類型的時(shí)間序列。

Counter(計(jì)數(shù)器)

Counter 類型代表一種樣本數(shù)據(jù)單調(diào)遞增的指標(biāo)互广,即只增不減敛腌,除非監(jiān)控系統(tǒng)發(fā)生了重置。

Guage(儀表盤)

Guage 類型代表一種樣本數(shù)據(jù)可以任意變化的指標(biāo)惫皱,即可增可減像樊。guage 通常用于像溫度或者內(nèi)存使用率這種指標(biāo)數(shù)據(jù),也可以表示能隨時(shí)增加或減少的“總數(shù)”旅敷,例如:當(dāng)前并發(fā)請(qǐng)求的數(shù)量生棍。

Histogram(直方圖)

Histogram 在一段時(shí)間范圍內(nèi)對(duì)數(shù)據(jù)進(jìn)行采樣(通常是請(qǐng)求持續(xù)時(shí)間或響應(yīng)大小等),并將其計(jì)入可配置的存儲(chǔ)桶(bucket)中媳谁,后續(xù)可通過(guò)指定區(qū)間篩選樣本涂滴,也可以統(tǒng)計(jì)樣本總數(shù),最后一般將數(shù)據(jù)展示為直方圖晴音。
Histogram 類型的樣本會(huì)提供三種指標(biāo)(假設(shè)指標(biāo)名稱為 <basename>):

  • 樣本的值分布在 bucket 中的數(shù)量柔纵,命名為 <basename>_bucket{le="<上邊界>"}。解釋的更通俗易懂一點(diǎn)锤躁,這個(gè)值表示指標(biāo)值小于等于上邊界的所有樣本數(shù)量搁料。
 // 在總共2次請(qǐng)求當(dāng)中。http 請(qǐng)求響應(yīng)時(shí)間 <=0.005 秒 的請(qǐng)求次數(shù)為0
 io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.005",} 0.0
 // 在總共2次請(qǐng)求當(dāng)中系羞。http 請(qǐng)求響應(yīng)時(shí)間 <=0.01 秒 的請(qǐng)求次數(shù)為0
 io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.01",} 0.0
 // 在總共2次請(qǐng)求當(dāng)中加缘。http 請(qǐng)求響應(yīng)時(shí)間 <=0.025 秒 的請(qǐng)求次數(shù)為0
 io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.025",} 0.0
 io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.05",} 0.0
 io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.075",} 0.0
 io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.1",} 0.0
 io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.25",} 0.0
 io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.5",} 0.0
 io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.75",} 0.0
 io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="1.0",} 0.0
 io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="2.5",} 0.0
 io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="5.0",} 0.0
 io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="7.5",} 2.0
 // 在總共2次請(qǐng)求當(dāng)中。http 請(qǐng)求響應(yīng)時(shí)間 <=10 秒 的請(qǐng)求次數(shù)為 2
 io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="10.0",} 2.0
 io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="+Inf",} 2.0
  • 所有樣本值的大小總和觉啊,命名為 <basename>_sum
  // 實(shí)際含義: 發(fā)生的2次 http 請(qǐng)求總的響應(yīng)時(shí)間為 13.107670803000001 秒
  io_namespace_http_requests_latency_seconds_histogram_sum{path="/",method="GET",code="200",} 13.107670803000001

  • 樣本總數(shù)拣宏,命名為 <basename>_count。值和 <basename>_bucket{le="+Inf"} 相同杠人。
  // 實(shí)際含義: 當(dāng)前一共發(fā)生了 2 次 http 請(qǐng)求
  io_namespace_http_requests_latency_seconds_histogram_count{path="/",method="GET",code="200",} 2.0

注意:bucket 可以理解為是對(duì)數(shù)據(jù)指標(biāo)值域的一個(gè)劃分勋乾,劃分的依據(jù)應(yīng)該基于數(shù)據(jù)值的分布。注意后面的采樣點(diǎn)是包含前面的采樣點(diǎn)的嗡善,假設(shè) xxx_bucket{...,le="0.01"} 的值為 10辑莫,而 xxx_bucket{...,le="0.05"} 的值為 30,那么意味著這 30 個(gè)采樣點(diǎn)中罩引,有 10 個(gè)是小于 10 ms 的各吨,其余 20 個(gè)采樣點(diǎn)的響應(yīng)時(shí)間是介于 10 ms 和 50 ms 之間的.

Summary(摘要)

與 Histogram 類型類似,用于表示一段時(shí)間內(nèi)的數(shù)據(jù)采樣結(jié)果(通常是請(qǐng)求持續(xù)時(shí)間或響應(yīng)大小等)袁铐,但它直接存儲(chǔ)了分位數(shù)(通過(guò)客戶端計(jì)算揭蜒,然后展示出來(lái))横浑,而不是通過(guò)區(qū)間來(lái)計(jì)算。
Summary 類型的樣本也會(huì)提供三種指標(biāo)(假設(shè)指標(biāo)名稱為 ):

  • 樣本值的分位數(shù)分布情況屉更,命名為 <basename>{quantile="<φ>"}徙融。
  // 含義:這 12 次 http 請(qǐng)求中有 50% 的請(qǐng)求響應(yīng)時(shí)間是 3.052404983s
  io_namespace_http_requests_latency_seconds_summary{path="/",method="GET",code="200",quantile="0.5",} 3.052404983
  // 含義:這 12 次 http 請(qǐng)求中有 90% 的請(qǐng)求響應(yīng)時(shí)間是 8.003261666s
  io_namespace_http_requests_latency_seconds_summary{path="/",method="GET",code="200",quantile="0.9",} 8.003261666
  • 所有樣本值的大小總和,命名為 <basename>_sum瑰谜。
  // 含義:這12次 http 請(qǐng)求的總響應(yīng)時(shí)間為 51.029495508s
  io_namespace_http_requests_latency_seconds_summary_sum{path="/",method="GET",code="200",} 51.029495508
  • 樣本總數(shù)欺冀,命名為 <basename>_count。
  // 含義:當(dāng)前一共發(fā)生了 12 次 http 請(qǐng)求
  io_namespace_http_requests_latency_seconds_summary_count{path="/",method="GET",code="200",} 12.0

Histogram 與 Summary 的異同

  • 它們都包含了 <basename>_sum 和 <basename>_count 指標(biāo)
  • Histogram 需要通過(guò) <basename>_bucket 來(lái)計(jì)算分位數(shù)萨脑,而 Summary 則直接存儲(chǔ)了分位數(shù)的值隐轩。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市渤早,隨后出現(xiàn)的幾起案子龙助,更是在濱河造成了極大的恐慌,老刑警劉巖蛛芥,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異军援,居然都是意外死亡仅淑,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門胸哥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)涯竟,“玉大人,你說(shuō)我怎么就攤上這事空厌÷” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵嘲更,是天一觀的道長(zhǎng)筐钟。 經(jīng)常有香客問(wèn)我,道長(zhǎng)赋朦,這世上最難降的妖魔是什么篓冲? 我笑而不...
    開(kāi)封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮宠哄,結(jié)果婚禮上壹将,老公的妹妹穿的比我還像新娘。我一直安慰自己毛嫉,他們只是感情好诽俯,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著承粤,像睡著了一般暴区。 火紅的嫁衣襯著肌膚如雪闯团。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天颜启,我揣著相機(jī)與錄音偷俭,去河邊找鬼。 笑死缰盏,一個(gè)胖子當(dāng)著我的面吹牛涌萤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播口猜,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼负溪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了济炎?” 一聲冷哼從身側(cè)響起川抡,我...
    開(kāi)封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎须尚,沒(méi)想到半個(gè)月后崖堤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡耐床,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年密幔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撩轰。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胯甩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出堪嫂,到底是詐尸還是另有隱情偎箫,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布皆串,位于F島的核電站淹办,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏恶复。R本人自食惡果不足惜娇唯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望寂玲。 院中可真熱鬧塔插,春花似錦、人聲如沸拓哟。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至流纹,卻和暖如春糜烹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背漱凝。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工疮蹦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人茸炒。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓愕乎,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親壁公。 傳聞我的和親對(duì)象是個(gè)殘疾皇子感论,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345