Prometheus 性能實驗報告 - 序言(一)

眾所周知,Prometheus從CNCF畢業(yè)后,已經(jīng)成為運維磚工喜愛的系統(tǒng)監(jiān)控框架。

由于本公司的磚工之前都沒有用過Prometheus,使用的是比Prometheus更挫的Falcon拨黔。在大范圍使用Prometheus之前,需要對Prometheus的基本性能簡單測試绰沥,獲得一些數(shù)據(jù)用于估算Scalability和Capacity篱蝇。

(本文所述,"磚"即"監(jiān)控數(shù)據(jù)"徽曲;“工人”即"Prometheus"零截;"路"即"網(wǎng)絡(luò)信道")

Prometheus的角色分配如下:
  • 搬磚工人: Prometheus
  • 磚廠: 任意程序 (業(yè)務(wù)程序、Kubelet秃臣、ElasticSearch...)
  • 磚: 各個程序提供的涧衙、符合Prometheus格式的數(shù)據(jù)接口
  • 倉庫: 時間序列數(shù)據(jù)庫 (PromuTSDB、OpenTSDB奥此、InfluxDB...)
  • 監(jiān)工: 管理搬磚工人的工具
  • 消費者: 讀數(shù)據(jù)的 (Grafana弧哎、Kabana...)

Prometheus是標準的數(shù)據(jù)搬運系統(tǒng)數(shù)據(jù)搬運系統(tǒng)即字面的意思稚虎,Prometheus不產(chǎn)生數(shù)據(jù)撤嫩,只從系統(tǒng)各處搬運數(shù)據(jù)到數(shù)據(jù)庫

我們先看一下"磚"是什么樣子的蠢终。

(以下指標數(shù)據(jù)都是由業(yè)務(wù)程序提供的)

下面是一個Prometheus指標的例子:

container_cpu_usage_seconds_total{container_name="abc",cpu="total",id="123",name="def"} 4751.708280444

以上述指標為例序攘,Promethues指標由如下基本部分組成:

  • 指標名字 - metric name - container_cpu_usage_seconds_total
  • 值 - sampling value(float64) - 4751.708280444
  • 標簽 - label name, value - container_name="abc"...
  • 時間戳 - timestamp (Prometheus維護)

也可以定義一個“指標的集合”茴她,如下所示

# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0
go_gc_duration_seconds{quantile="0.25"} 0
...

以下部分組成“指標的集合”:

  • 說明 - HELP <name> <descriptions> - go_gc_duration_seconds ...
  • 集合名字 - TYPE <name> <type> - go_gc_duration_seconds summary <summary>

具體細節(jié)詳見官方文檔-教你寫Client官方文檔-數(shù)據(jù)模型程奠、官方文檔-指標類型丈牢、官方文檔-推薦指標輸出格式。另外梦染,可以參考這個博客開始簡單的例子赡麦。

總之朴皆,每個程序按照格式帕识,以Web服務(wù)的形式暴露自己的指標,Prometheus就可以抓取啦遂铡。


Prometheus的基本結(jié)構(gòu)

Prometheus運行的基本結(jié)構(gòu)如下圖1所示肮疗。


圖1 Prometheus官方架構(gòu)圖
  • 指標數(shù)據(jù)在業(yè)務(wù)提供的服務(wù)上以Web服務(wù)的形式暴露出來,由配置文件服務(wù)發(fā)現(xiàn)機制通知Prometheus去指定位置抓取數(shù)據(jù)扒接。
  • Prometheus抓取指標后伪货,搬運到本地(PromuTSDB)、遠程倉庫(OpenTSDB钾怔、InfluxDB...)
  • 其他消費者碱呼,包括Grafana、Prometheus的自身的Web服務(wù)宗侦,從時間序列數(shù)據(jù)庫中取數(shù)據(jù)

所以愚臀,實際上Prometheus真正的架構(gòu)應(yīng)該是這樣子的。

圖2 Prometheus實際架構(gòu)圖

作為一個搬磚工人矾利,Prometheus需要知道如下信息姑裂。

  • 磚在哪? - 配置文件、服務(wù)發(fā)現(xiàn)組件提供地址
  • 怎么搬? - Prometheus Query配置
  • 搬哪去? - 數(shù)據(jù)存儲配置

磚在哪?
根據(jù)配置文件和服務(wù)發(fā)現(xiàn)組件男旗,Prometheus會生成一些Target舶斧。Prometheus會定期訪問這些Target


怎么搬?
如果單個Prometheus不能支持足夠大的數(shù)據(jù)搬運量察皇,可以開發(fā)簡單的管理程序茴厉,進行target對應(yīng)的配置文件分片,則很容易橫向拓展什荣。

在2.0版本之前矾缓,除了搬運文本數(shù)據(jù)外,還支持搬運Protobuf類型的數(shù)據(jù)(現(xiàn)不支持
獲取訪問Target的HTTP Body溃睹,并在解析之后而账,存儲到數(shù)據(jù)庫中。

搬哪去?
Prometheus默認提供了PromuTSDB因篇,數(shù)據(jù)以壓縮文件的形式存儲在本地泞辐。但在Prometheus抓取目標增多時笔横,本地磁盤顯然是存不下這么多數(shù)據(jù)的,因此Prometheus提供了Remote Storage接口咐吼。

根據(jù)Remote Storage接口吹缔,用戶可以使用自己維護的后端存儲,如OpenTSDB锯茄、InfluxDB厢塘、PostgreSQL,存儲指標數(shù)據(jù)肌幽。在使用過程中晚碾,用戶需要自己實現(xiàn)一個Remote Storage Adapter。

這個Adapter提供轉(zhuǎn)發(fā)功能喂急,包括Remote Read和Remote Write格嘁。(允許只實現(xiàn)一種)

  • Remote Write: Prometheus發(fā)送規(guī)定格式的數(shù)據(jù)給Adapter,Adapter轉(zhuǎn)義后發(fā)送給數(shù)據(jù)庫廊移。
  • Remote Read: Prometheus規(guī)定Adapter需要解析四種運算符 "=","!=","=~","!~"糕簿。 用戶在界面上查詢時,Prometheus發(fā)送查詢命令給Adapter狡孔,Adapter轉(zhuǎn)義后發(fā)送給數(shù)據(jù)庫懂诗。

為了保證充分評估Prometheus的性能,我們可以按照這個圖2思路苗膝,逐個對每條路徑殃恒、組件開展性能實驗,估算出系統(tǒng)的性能瓶頸荚醒。

在接下來的文章里芋类,我們會提供詳細的Prometheus性能實驗報告及代碼,討論如下問題

  • 每個工人能搬多少磚? - 單個Prometheus容量
  • 工人取一塊磚平均要多久界阁? - 取數(shù)據(jù)延遲
  • 工人送一塊磚到倉庫要多久? - 存數(shù)據(jù)網(wǎng)絡(luò)延遲
  • 倉庫能放多少磚? - 數(shù)據(jù)庫容量
  • 工人搬磚的時候侯繁,會不會把路占了,讓別人走不了泡躯?- 占用網(wǎng)絡(luò)帶寬

敬請期待贮竟。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市较剃,隨后出現(xiàn)的幾起案子咕别,更是在濱河造成了極大的恐慌,老刑警劉巖写穴,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惰拱,死亡現(xiàn)場離奇詭異,居然都是意外死亡啊送,警方通過查閱死者的電腦和手機偿短,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門欣孤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人昔逗,你說我怎么就攤上這事降传。” “怎么了勾怒?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵婆排,是天一觀的道長。 經(jīng)常有香客問我笔链,道長段只,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任卡乾,我火速辦了婚禮翼悴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘幔妨。我一直安慰自己,他們只是感情好谍椅,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布误堡。 她就那樣靜靜地躺著,像睡著了一般雏吭。 火紅的嫁衣襯著肌膚如雪锁施。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天杖们,我揣著相機與錄音嫌佑,去河邊找鬼讯榕。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的倦挂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼进倍,長吁一口氣:“原來是場噩夢啊……” “哼福侈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起谈飒,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤岂座,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后杭措,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體费什,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年手素,在試婚紗的時候發(fā)現(xiàn)自己被綠了鸳址。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赘那。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖氯质,靈堂內(nèi)的尸體忽然破棺而出募舟,到底是詐尸還是另有隱情,我是刑警寧澤闻察,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布拱礁,位于F島的核電站,受9級特大地震影響辕漂,放射性物質(zhì)發(fā)生泄漏呢灶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一钉嘹、第九天 我趴在偏房一處隱蔽的房頂上張望鸯乃。 院中可真熱鬧,春花似錦跋涣、人聲如沸缨睡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奖年。三九已至,卻和暖如春沛贪,著一層夾襖步出監(jiān)牢的瞬間陋守,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工利赋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留水评,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓媚送,卻偏偏與公主長得像中燥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子季希,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

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