Prometheus基本介紹

Prometheus(簡稱Prom)前身是SoundCloud的告警工具包喘沿,現(xiàn)已演化成一個獨立的開源監(jiān)控系統(tǒng)闸度。屬于Kurberntes所在的Cloud Native Computing Foundation莺禁。

主要特性

  • 多維度數(shù)據(jù)模型
    • 時間序列數(shù)據(jù)通過 metric 名和鍵值對來區(qū)分哟冬。
    • 所有的 metrics 都可以設置任意的多維標簽楼熄。
    • 數(shù)據(jù)模型更隨意,不需要刻意設置為以點分隔的字符串红符。
    • 可以對數(shù)據(jù)模型進行聚合,切割和切片操作伐债。
    • 支持雙精度浮點類型预侯,標簽可以設為全 unicode。
  • 靈活的查詢語言:在同一個查詢語句峰锁,可以對多個 metrics 進行乘法萎馅、加法、連接虹蒋、取分數(shù)位等操作糜芳。
  • 不依賴任何分布式存儲
  • 通過拉取方式采集數(shù)據(jù),或者通過中間網(wǎng)關推送方式采集數(shù)據(jù)
  • 通過服務發(fā)現(xiàn)或者靜態(tài)配置來發(fā)現(xiàn)監(jiān)控目標
  • 支持多種圖形界面展示方式

架構(gòu)

下圖描述了 Prometheus 的整體架構(gòu)和其生態(tài)內(nèi)魄衅。一些常用組件:

  • Prometheus Server:用于收集和存儲時間序列數(shù)據(jù)峭竣。
  • Client Library: 客戶端庫,為需要監(jiān)控的服務生成相應的 metrics 并暴露給 Prometheus server晃虫。當 Prometheus server 來 pull 時,直接返回實時狀態(tài)的 metrics滥比。
  • Push Gateway:主要用于短期的 jobs山憨。由于這類 jobs 存在時間較短棚亩,可能在 Prometheus 來 pull 之前就消失了纺阔。為此,這次 jobs 可以直接向 Prometheus server 端推送它們的 metrics。這種方式主要用于服務層面的 metrics,對于機器層面的 metrices蝎土,需要使用 node exporter醋拧。
  • Exporters:用于暴露已有的第三方服務的 metrics 給 Prometheus菌赖。
  • Alertmanager:從 Prometheus server 端接收到 alerts 后策幼,會進行去除重復數(shù)據(jù),分組沫浆,并路由到對收的接受方式,發(fā)出報警本股。常見的接收方式有:電子郵件,pagerduty,OpsGenie, webhook 等。
Prometheus 架構(gòu)圖
  1. Prometheus以其Server為核心里伯,用于收集和存儲時間序列數(shù)據(jù)狼电。Prometheus Server 從監(jiān)控目標中拉取數(shù)據(jù)削祈,或通過中間網(wǎng)關間接的把監(jiān)控目標的監(jiān)控數(shù)據(jù)存儲到本地HDD/SSD中。
  2. 用戶接口界面通過各種UI使用PromQL查詢語言從Server獲取數(shù)據(jù)叙凡。
  3. 一旦Server檢測到異常,會推送告警到AlertManager,由告警管理負責去通知相關方燥撞。

Prometheus 核心概念

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

Prometheus 從根本上存儲的所有數(shù)據(jù)都是時間序列數(shù)據(jù)(Time Serie Data锦针,簡稱時序數(shù)據(jù))悉盆。時序數(shù)據(jù)是具有時間戳的數(shù)據(jù)流馋吗,該數(shù)據(jù)流屬于某個度量指標(Metric)和該度量指標下的多個標簽(Label)京髓。除了提供存儲功能堰怨,Prometheus 還可以利用查詢表達式來執(zhí)行非常靈活和復雜的查詢。

度量指標和標簽

每個時間序列(Time Serie雪标,簡稱時序)由度量指標和一組標簽鍵值對唯一確定逆粹。

度量指標名稱描述了被監(jiān)控系統(tǒng)的某個測量特征(比如 http_requests_total 表示 http 請求總數(shù))扭勉。度量指標名稱由 ASCII 字母鹊奖、數(shù)字、下劃線和冒號組成涂炎,須匹配正則表達式 [a-zA-Z_:][a-zA-Z0-9_:]*忠聚。

標簽開啟了 Prometheus 的多維數(shù)據(jù)模型。對于同一個度量指標唱捣,不同標簽值組合會形成特定維度的時序两蟀。Prometheus 的查詢語言可以通過度量指標和標簽對時序數(shù)據(jù)進行過濾和聚合。改變?nèi)魏味攘恐笜松系娜魏螛撕炛嫡痃裕紩纬尚碌臅r序赂毯。標簽名稱可以包含 ASCII 字母、數(shù)字和下劃線,須匹配正則表達式[a-zA-Z_][a-zA-Z0-9_]*党涕,帶有 _下劃線的標簽名稱保留為內(nèi)部使用烦感。標簽值可以包含任意 Unicode 字符,包括中文膛堤。

采樣值(Sample)

時序數(shù)據(jù)其實就是一系列采樣值手趣。每個采樣值包括2部分:

  1. 一個 64 位的浮點數(shù)值
  2. 一個精確到毫秒的時間戳

注解(Notation)

一個注解由一個度量指標和一組標簽鍵值對構(gòu)成。形式如下:

[metric name]{[label name]=[label value], ...}

例如骑祟,度量指標為 api_http_requests_total回懦,標簽為 method="POST"、handler="/messages" 的注解表示如下:

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

度量指標類型

Prometheus 里的度量指標有以下幾種類型次企。

1. 計數(shù)器(Counter)

計數(shù)器是一種累計型的度量指標怯晕,它是一個只能遞增的數(shù)值。計數(shù)器主要用于統(tǒng)計類似于服務請求數(shù)缸棵、任務完成數(shù)和錯誤出現(xiàn)次數(shù)這樣的數(shù)據(jù)舟茶。

2. 計量器(Gauge)

計量器表示一個既可增又可減的度量指標值。計量器主要用于測量類似于溫度堵第、內(nèi)存使用量這樣的瞬時數(shù)據(jù)吧凉。

3. 直方圖(Histogram)

直方圖對觀察結(jié)果(通常是請求持續(xù)時間或者響應大小這樣的數(shù)據(jù))進行采樣,并在可配置的桶中對其進行統(tǒng)計踏志。有以下幾種方式來產(chǎn)生直方圖(假設度量指標為 <basename>):

  • 按桶計數(shù)阀捅,相當于 <basename>_bucket{le="<upper inclusive bound>"}
  • 采樣值總和,相當于<basename>_sum
  • 采樣值總數(shù)针余,相當于 <basename>_count 饲鄙,也等同于把所有采樣值放到一個桶里來計數(shù) <basename>_bucket{le="+Inf"}

Histogram可以理解為柱狀圖,典型的應用如:請求持續(xù)時間圆雁,響應大小忍级。可以對觀察結(jié)果采樣伪朽,分組及統(tǒng)計轴咱。
例如,查詢 http_request_duration_microseconds_sum{job="Prometheus", handler="query"} 時烈涮,返回結(jié)果如下:


4. 匯總(Summary)

類似于直方圖朴肺,匯總也對觀察結(jié)果進行采樣。除了可以統(tǒng)計采樣值總和和總數(shù)坚洽,它還能夠按分位數(shù)統(tǒng)計宇挫。有以下幾種方式來產(chǎn)生匯總(假設度量指標為 <basename>):

  • 按分位數(shù),也就是采樣值小于該分位數(shù)的個數(shù)占總數(shù)的比例小于 φ酪术,相當于 <basename>{quantile="<φ>"}
  • 采樣值總和器瘪,相當于 <basename>_sum
  • 采樣值總數(shù)翠储,相當于 <basename>_count
5. 任務(Job)和實例(Instance)

在 Prometheus 里,可以從中抓取采樣值的端點稱為實例橡疼,為了性能擴展而復制出來的多個這樣的實例形成了一個任務援所。

例如下面的 api-server 任務有四個相同的實例:

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: 抓取來源實例
    另外每次抓取時住拭,Prometheus 還會自動在以下時序里插入采樣值:
  • up{job="[job-name]", instance="instance-id"}:采樣值為 1 表示實例健康,否則為不健康
  • scrape_duration_seconds{job="[job-name]", instance="[instance-id]"}:采樣值為本次抓取消耗時間
  • scrape_samples_post_metric_relabeling{job="<job-name>", instance="<instance-id>"}:采樣值為重新打標簽后的采樣值個數(shù)
  • scrape_samples_scraped{job="<job-name>", instance="<instance-id>"}:采樣值為本次抓取到的采樣值個數(shù)
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末历帚,一起剝皮案震驚了整個濱河市滔岳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挽牢,老刑警劉巖谱煤,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異禽拔,居然都是意外死亡刘离,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門睹栖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來硫惕,“玉大人,你說我怎么就攤上這事野来∧粘” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵曼氛,是天一觀的道長豁辉。 經(jīng)常有香客問我,道長搪锣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任彩掐,我火速辦了婚禮构舟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘堵幽。我一直安慰自己狗超,他們只是感情好,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布朴下。 她就那樣靜靜地躺著努咐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪殴胧。 梳的紋絲不亂的頭發(fā)上渗稍,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天佩迟,我揣著相機與錄音,去河邊找鬼竿屹。 笑死报强,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的拱燃。 我是一名探鬼主播秉溉,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼碗誉!你這毒婦竟也來了召嘶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤哮缺,失蹤者是張志新(化名)和其女友劉穎弄跌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蝴蜓,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡碟绑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了茎匠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片格仲。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖诵冒,靈堂內(nèi)的尸體忽然破棺而出凯肋,到底是詐尸還是另有隱情,我是刑警寧澤汽馋,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布侮东,位于F島的核電站,受9級特大地震影響豹芯,放射性物質(zhì)發(fā)生泄漏悄雅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一铁蹈、第九天 我趴在偏房一處隱蔽的房頂上張望宽闲。 院中可真熱鬧,春花似錦握牧、人聲如沸容诬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽览徒。三九已至,卻和暖如春颂龙,著一層夾襖步出監(jiān)牢的瞬間习蓬,已是汗流浹背纽什。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留友雳,地道東北人稿湿。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像押赊,于是被迫代替她去往敵國和親饺藤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

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

  • Prometheus 是什么流礁? Prometheus是一套開源的監(jiān)控&報警&時間序列數(shù)據(jù)庫的組合涕俗,起始是由Soun...
    上弦月Tt閱讀 10,784評論 1 6
  • Prometheus Prometheus是一套開源的監(jiān)控&報警&時間序列數(shù)據(jù)庫的組合,起始是由SoundClou...
    YichenWong閱讀 19,323評論 0 6
  • Prometheus TSDB是什么? (Time Series Database) 簡單的理解為.一個優(yōu)化后用來...
    ilkkzm閱讀 19,234評論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理神帅,服務發(fā)現(xiàn)再姑,斷路器,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 原來的品牌傳播主要依靠電視,所以一開口就是習慣性的“高大上”“偉光正”的詞霎桅,這樣才顯得自己有范兒栖疑、有氣勢。比如視覺...
    一施工隊閱讀 451評論 0 0