From Wikipedia:在希臘神話中,是泰坦神族的神明之一,名字的意思是“先見之明”。普羅米修斯與智慧女神雅典娜共同創(chuàng)造了人類,普羅米修斯負責用泥土雕塑出人的形狀,雅典娜則為泥人灌注靈魂,并教會了人類很多知識。 Prometheus 是什么? --------------- Prometheus 是一個由 SoundCloud 公司開發(fā)并開源的監(jiān)控和告警工具。主要功能包括監(jiān)控指標的收集,存儲,查詢以及以此為基" />
摘要:普羅米修斯是誰在希臘神話中,是泰坦神族的神明之一,名字的意思是先見之明。普羅米修斯與智慧女神雅典娜共同創(chuàng)造了人類,普羅米修斯負責用泥土雕塑出人的形狀,雅典娜則為泥人灌注靈魂,并教會了人類很多知識。
From Wikipedia:在希臘神話中,是泰坦神族的神明之一,名字的意思是“先見之明”。普羅米修斯與智慧女神雅典娜共同創(chuàng)造了人類,普羅米修斯負責用泥土雕塑出人的形狀,雅典娜則為泥人灌注靈魂,并教會了人類很多知識。
Prometheus 是一個由 SoundCloud 公司開發(fā)并開源的監(jiān)控和告警工具。主要功能包括監(jiān)控指標的收集,存儲,查詢以及以此為基礎(chǔ)的告警管理,其內(nèi)部包含一個用來存儲指標的單機時序數(shù)據(jù)庫。它的開發(fā)受到了Google內(nèi)部監(jiān)控系統(tǒng) Borgmon 的啟發(fā)。
Borgman 的特點是不使用特定的腳本來判斷系統(tǒng)是否正常工作,而是依靠一種標準數(shù)據(jù)分析模型進行報警。這使得批量、大規(guī)模、低成本的數(shù)據(jù)收集變得可能,而不需要執(zhí)行復(fù)雜的子進程以及建立特殊的網(wǎng)絡(luò)鏈接。
利用 Prometheus 和自動服務(wù)發(fā)現(xiàn), 我們可以采用 pull mode 而不是 push mode 來收集服務(wù)的指標,pull mode 對于服務(wù)端的實現(xiàn)成本更低。
閑言:一個系統(tǒng)是采用 pull mode 還是 push mode 是很值得思考的問題。pull mode 的實現(xiàn)可能更簡單,數(shù)據(jù)的提供方只需要被動的等待數(shù)據(jù)的需求方來拉取數(shù)據(jù)就可以了,減少了很多 sync 的工作,但是因為會在 pipeline 產(chǎn)生 bubble,性能可能會不好。而 push mode 會使 pipeline 開足馬力運行,會帶來更好的性能,但同時會增加系統(tǒng)設(shè)計的復(fù)雜度,比如 sync,retry 等工作。
Google SRE 這本書中介紹主要有四個原因:
同樣來自 Google SRE 一書:
? 服務(wù)處理某個請求所需要的時間。需要區(qū)分成功請求和失敗請求很重要。2
2.流量
? 使用系統(tǒng)中的某個高層次的指標針對系統(tǒng)負載進行的度量。
3.錯誤
? 請求失敗的頻率,可以是顯示失?。ɡ鏗TTP 500),隱式失?。ɡ鏗TTP 200 但是包含了錯誤內(nèi)容)或者是某種策略原因?qū)е碌氖。ɡ珥憫?yīng)超時)
4.飽和度
? 衡量服務(wù)容量有多“滿”,通常是系統(tǒng)中最為受限的某種資源的某個具體指標的度量(比如內(nèi)存,IO)。
碎語:一本好書
Prometheus 將收集的監(jiān)控指標數(shù)據(jù)作為時序數(shù)據(jù)進行存儲,一條時序數(shù)據(jù)流(stream)由指標名稱(metric name)和標簽(label)以及被打賞時間戳的數(shù)據(jù)組成:
{
例如用來記錄一個 API 網(wǎng)關(guān)中注冊的一臺服務(wù)器的健康狀態(tài)(1 代表健康):
api_gray_gateway_upstream_health{usptream="product-test",id="0",name="192.168.152.194:8000",backup="false"} 1
api_gray_gateway_upstream_health{usptream="product-test",id="1",name="192.168.152.195:8000",backup="false"} 0
通過這種簡單的數(shù)據(jù)模型我們可以組合出四種典型的指標類型。
我們的 HTTP 網(wǎng)關(guān)是使用 OpenResty 實現(xiàn)的,具有良好的擴展性。實現(xiàn)這一特性,只需要在 /metrics 接口中增加查詢后端服務(wù)器狀態(tài)的邏輯(使用 lua-upstream-nginx-module 模塊的 API),并使用Gauge 類型的指標記錄健康狀態(tài),然后將結(jié)果返回給Prometheus,如:
最后在 Grafana 中(Prometheus作為數(shù)據(jù)源)建立圖表,還可以通過設(shè)置一些變量方便業(yè)務(wù)方查詢不同的 Upstream 中 Server 的健康狀態(tài),當然這里的圖表還可以更美觀一些(我用的 Grafana 版本有點老)并且集成到其他 WEB 頁面中,下圖中狀態(tài) 1 表示 Server 健康,0 表示不健康。
在這個應(yīng)用中,我利用了 Prometheus 簡單的編程模型和查詢能力,以及 Grafana 的圖表生成能力,快速構(gòu)建了監(jiān)控系統(tǒng)。
背景:TiDB 是一個由 Pingcap 公司主導的開源分布式 NewSQL 數(shù)據(jù)庫,TiDB 使用 TiKV 作為存儲。TiKV 一個由 Pingcap 公司主導的開源分布式 Key-value 數(shù)據(jù)庫。Raft是 一個工業(yè)領(lǐng)域內(nèi)常用的分布式一致性算法,而 TiKV 使用的正是 Raft 算法,更具體的是一種 Multi Raft Group。下圖的示例中,每個 Store 是一個實際的存儲節(jié)點(一個進程),因為性能的原因數(shù)據(jù)會分成多個 Region 存儲(不同 Region 存儲不同 Key 范圍的數(shù)據(jù)),為了實現(xiàn)高可用同一個 Region 的數(shù)據(jù)在不同的 Store 中會有多個副本(Peer),同一個 Region 的不同 Peer 構(gòu)成一個 Raft 共識:
當我們需要對系統(tǒng)進行擴容時,可以添加一個 Store,并由 PD (Placement Driver for TiKV)完成 Region 的 Peer 在 Store 中分布的調(diào)整。這些調(diào)整是在線調(diào)整的,如果 Peer 的遷移速度過快會影響系統(tǒng)的性能,因而需要對速度進行限制,PD 中采用了令牌桶算法實現(xiàn)了限速的特性。
為了監(jiān)控限速模塊的工作狀態(tài),需要設(shè)計一些監(jiān)控指標。我在 https://github.com/pingcap/pd/pull/2404 這個 PR 中完成了對限速模塊監(jiān)控指標的改進。
改進后的指標有:
指標收集的時機:
這里我們需要關(guān)注的是需要根據(jù)指標的含義選擇指標類型,需要合理利用不同指標類型,收集與之相適應(yīng)的監(jiān)控數(shù)據(jù)。
思考:在工作之余參與其他開源項目(比如 TiDB,Kubernetes)可以開拓視野,收獲行業(yè)內(nèi)的一些先進經(jīng)驗,避免思維的僵化。
本文介紹了 Prometheus 的特定,數(shù)據(jù)模型,指標類型以及監(jiān)控指標設(shè)計方面的準則,以及一些閑言碎語。最后介紹了兩個實際工作和業(yè)余參與的開源項目中的實際應(yīng)用。
本文作者:
王任錚 UCloud 后臺研發(fā)工程師
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/125985.html
摘要:有點基礎(chǔ)的人一定都知道,命令會將源文件編譯成字節(jié)碼文件,即文件,其中就包含了大量的字節(jié)碼指令。關(guān)于字節(jié)碼指令的分類,可以從兩個維度進行一是指令的功能,二是指令操作的數(shù)據(jù)類型。 前言 隨著Java開發(fā)技術(shù)不斷被推到新的高度,對于Java程序員來講越來越需要具備對更深入的基礎(chǔ)性技術(shù)的理解,比如Java字節(jié)碼指令。不然,可能很難深入理解一些時下的新框架、新技術(shù),盲目一味追新也會越來越感乏力。...
摘要:以后會持續(xù)更新,也歡迎各路前端大神交流技術(shù)。我想在前端的小路上走遠一點,再遠一點。 Welcome to my home Lycoris_cty ! 歡迎大家來我的FE小站。以后會持續(xù)更新,也歡迎各路前端大神交流技術(shù)。PS: 我想在前端的小路上走遠一點,再遠一點。Thanks!
摘要:根據(jù)配置文件,對接收到的警報進行處理,發(fā)出告警。在默認情況下,用戶只需要部署多套,采集相同的即可實現(xiàn)基本的。通過將監(jiān)控與數(shù)據(jù)分離,能夠更好地進行彈性擴展。參考文檔本文為容器監(jiān)控實踐系列文章,完整內(nèi)容見 系統(tǒng)架構(gòu)圖 1.x版本的Prometheus的架構(gòu)圖為:showImg(https://segmentfault.com/img/remote/1460000018372350?w=14...
閱讀 3670·2023-04-25 20:09
閱讀 3831·2022-06-28 19:00
閱讀 3193·2022-06-28 19:00
閱讀 3227·2022-06-28 19:00
閱讀 3341·2022-06-28 19:00
閱讀 2999·2022-06-28 19:00
閱讀 3236·2022-06-28 19:00
閱讀 2777·2022-06-28 19:00