開源監(jiān)控系統(tǒng)Prometheus中的一些概念

Prometheus從根本上是將所有數(shù)據(jù)存儲為時間序列(屬于同一度量的時間戳值和相同的標記維度集)奏路。除了存儲的時間序列啊研,Prometheus還可以生成臨時派生的時間序列作為查詢的結果吮铭。

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

每個時間序列都由指標名稱(metric name)和一組 鍵值對(lables)來唯一標識雏门。

指標名稱(metric name)表示被測量的系統(tǒng)的某一特性(例如http_requests_total表示接收到的HTTP請求的總數(shù))伤柄。它可能包含ASCII字母和數(shù)字牧氮,以及下劃線和冒號象泵。它必須匹配正則表達式[a-zA-Z_:][a-zA-Z0-9_:]*寞秃。

標簽(lable)表示了Prometheus數(shù)據(jù)模型的維度:同一指標名稱的任何給定標簽組合都標識該度量標準的特定維度實例化(例如:使用POST方法用于/api/tracks處理程序的所有HTTP請求)。查詢語言允許基于這些維度進行過濾和聚合偶惠。更改任何標簽值(包括添加或刪除標簽)將創(chuàng)建新的時間序列春寿。

標簽名稱可以包含ASCII字母,數(shù)字以及下劃線洲鸠。他們必須匹配正則表達式[a-zA-Z_][a-zA-Z0-9_]*堂淡。其中以__作為前綴的標簽,是系統(tǒng)保留的關鍵字扒腕,只能在系統(tǒng)內(nèi)部使用绢淀。

指標

給定指標名稱和一組標簽,通常使用此表示法標識時間序列瘾腰。所有的指標(Metric)都通過如下格式標示:

<metric name>{<label name>=<label value>, ...}

例如皆的,一個時間序列指標名稱api_http_requests_total和標簽method="POST"和handler="/messages"可以這樣寫:

api_http_requests_total{method="POST", handler="/messages"}

樣本

在時間序列中的每一個點稱為一個樣本(sample),樣本形成實際的時間序列數(shù)據(jù)蹋盆。樣本由以下三部分組成:

  • 指標(metric):metric name和描述當前樣本特征的labelsets;
  • 時間戳(timestamp):一個精確到毫秒的時間戳;
  • 樣本值(value): 一個folat64的浮點型數(shù)據(jù)表示當前樣本的值费薄。

例如:

<--------------- metric ---------------------><-timestamp -><-value->
http_request_total{status="200", method="GET"}@1434417560938 => 94355
http_request_total{status="200", method="GET"}@1434417561287 => 94334
?
http_request_total{status="404", method="GET"}@1434417560938 => 38473
http_request_total{status="404", method="GET"}@1434417561287 => 38544
?
http_request_total{status="200", method="POST"}@1434417560938 => 4748
http_request_total{status="200", method="POST"}@1434417561287 => 4785

指標類型

Prometheus在客戶端庫提供了四種不同的指標類型(metric type)。Counter(計數(shù)器)栖雾、Gauge(儀表盤)楞抡、Histogram(直方圖)、Summary(摘要)析藕。這些目前僅在客戶端庫中區(qū)分(以區(qū)分針對特定類型的使用而定制的API)召廷。Prometheus服務器尚未使用類型信息,并將所有數(shù)據(jù)都看做是無類型區(qū)分的時間序列。這種情況可能在將來會發(fā)生變化竞慢。

Counter

Counter類型的指標其工作方式和計數(shù)器一樣先紫,只增不減(除非系統(tǒng)發(fā)生重置)。常見的監(jiān)控指標筹煮,如http_requests_total遮精,node_cpu都是Counter類型的監(jiān)控指標。 一般在定義Counter類型指標的名稱時推薦使用_total作為后綴败潦。

Counter是一個簡單但有強大的工具本冲,例如我們可以在應用程序中記錄某些事件發(fā)生的次數(shù),通過以時序的形式存儲這些數(shù)據(jù)变屁,我們可以輕松的了解該事件產(chǎn)生速率的變化眼俊。PromQL內(nèi)置的聚合操作和函數(shù)可以用戶對這些數(shù)據(jù)進行進一步的分析。

Gauge

與Counter不同粟关,Gauge類型的指標側重于反應系統(tǒng)的當前狀態(tài)。因此這類指標的樣本數(shù)據(jù)可增可減环戈。常見指標如:node_memory_MemFree(主機當前空閑的內(nèi)存大忻瓢濉)、node_memory_MemAvailable(可用內(nèi)存大性喝)都是Gauge類型的監(jiān)控指標遮晚。

Gauge通常用于測量值,如溫度或當前內(nèi)存使用情況拦止,但也可用于可以上下的“計數(shù)”县遣,例如并發(fā)請求的數(shù)量。

Histogram

Histogram主用用于統(tǒng)計和分析樣本的分布情況汹族。在大多數(shù)情況下人們都傾向于使用某些量化指標的平均值萧求,例如CPU的平均使用率、頁面的平均響應時間顶瞒。

Histogram類型的樣本會反應當前指標的記錄的總數(shù)(以_count作為后綴)以及其值的總量(以_sum作為后綴)夸政。

Summary

與Histogram類似,Summary采樣觀察數(shù)據(jù)(通常是請求持續(xù)時間和響應大小等)榴徐。雖然它還提供觀察的總數(shù)和所有觀測值的總和守问,但它在滑動時間窗口上計算可配置的分位數(shù)。

同時對于Histogram的指標坑资,我們還可以通過histogram_quantile()函數(shù)計算出其值的分位數(shù)耗帕。不同在于Histogram通過histogram_quantile函數(shù)是在服務器端計算的分位數(shù)。 而Sumamry的分位數(shù)則是直接在客戶端計算完成袱贮。因此對于分位數(shù)的計算而言仿便,Summary在通過PromQL進行查詢時有更好的性能表現(xiàn),而Histogram則會消耗更多的資源。

任務和實例

在Prometheus中探越,每一個暴露監(jiān)控樣本數(shù)據(jù)的HTTP服務稱為一個實例狡赐。例如在當前主機上運行的node exporter可以被稱為一個實例(Instance)。

而一組用于相同采集目的的實例钦幔,或者同一個采集進程的多個副本則通過一個一個任務(Job)進行管理枕屉。

例如,具有四個復制實例的API服務器任務:

job: api-server
instance 1: 1.2.3.4:5670
instance 2: 1.2.3.4:5671
instance 3: 5.6.7.8:5670
instance 4: 5.6.7.8:5671

當Prometheus抓取目標時鲤氢,它會自動將一些標簽附加到抓取的時間序列中搀擂,用于識別被抓取的目標:

  • job:目標所屬的已配置任務名稱。
  • instance:<host>:<port>已抓取的目標URL 的一部分卷玉。

對于每次實例抓取哨颂,Prometheus都會在以下時間序列中存儲樣本:

  • up{job="<job-name>", instance="<instance-id>"}:1代表實例是健康的,即可達相种,0代表抓取失敗威恼。
  • scrape_duration_seconds{job="<job-name>", instance="<instance-id>"}:抓取的持續(xù)時間。
  • scrape_samples_post_metric_relabeling{job="<job-name>", instance="<instance-id>"}:應用度量標準重新標記后剩余的樣本數(shù)寝并。
  • scrape_samples_scraped{job="<job-name>", instance="<instance-id>"}:目標暴露的樣本數(shù)箫措。

up時間序列對實例的可用性監(jiān)控非常重要。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末衬潦,一起剝皮案震驚了整個濱河市斤蔓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌镀岛,老刑警劉巖弦牡,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異漂羊,居然都是意外死亡驾锰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進店門拨与,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稻据,“玉大人,你說我怎么就攤上這事买喧∧砻酰” “怎么了?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵淤毛,是天一觀的道長今缚。 經(jīng)常有香客問我,道長低淡,這世上最難降的妖魔是什么姓言? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任瞬项,我火速辦了婚禮,結果婚禮上何荚,老公的妹妹穿的比我還像新娘囱淋。我一直安慰自己,他們只是感情好餐塘,可當我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布妥衣。 她就那樣靜靜地躺著,像睡著了一般戒傻。 火紅的嫁衣襯著肌膚如雪税手。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天需纳,我揣著相機與錄音芦倒,去河邊找鬼。 笑死不翩,一個胖子當著我的面吹牛兵扬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播口蝠,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼周霉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了亚皂?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤国瓮,失蹤者是張志新(化名)和其女友劉穎灭必,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乃摹,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡禁漓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了孵睬。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片播歼。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖掰读,靈堂內(nèi)的尸體忽然破棺而出秘狞,到底是詐尸還是另有隱情,我是刑警寧澤蹈集,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布烁试,位于F島的核電站,受9級特大地震影響拢肆,放射性物質(zhì)發(fā)生泄漏减响。R本人自食惡果不足惜靖诗,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望支示。 院中可真熱鬧刊橘,春花似錦、人聲如沸颂鸿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽据途。三九已至绞愚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間颖医,已是汗流浹背位衩。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留熔萧,地道東北人糖驴。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像佛致,于是被迫代替她去往敵國和親贮缕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,666評論 2 350

推薦閱讀更多精彩內(nèi)容