(4)分布式系統(tǒng)關(guān)鍵技術(shù):全棧監(jiān)控

一窗骑、監(jiān)控系統(tǒng)需要完成的功能為:

全棧監(jiān)控但惶;

關(guān)聯(lián)分析耳鸯;

跨系統(tǒng)調(diào)用的串聯(lián);

實(shí)時(shí)報(bào)警和自動(dòng)處置膀曾;

系統(tǒng)性能分析县爬。

多層體系的監(jiān)控

二、全棧監(jiān)控(就是三層監(jiān)控)

基礎(chǔ)層:CPU添谊、內(nèi)存财喳、網(wǎng)絡(luò)吞吐、硬盤 I/O斩狱、硬盤使用等耳高。

中間層:Nginx、Redis喊废、ActiveMQ、Kafka栗弟、MySQL污筷、Tomcat等。

應(yīng)用層:HTTP 訪問(wèn)的吞吐量乍赫、響應(yīng)時(shí)間瓣蛀、返回碼,調(diào)用鏈路分析雷厂,性能瓶頸惋增,還包括用戶端的監(jiān)控。

監(jiān)控的標(biāo)準(zhǔn)化:

(1)日志數(shù)據(jù)結(jié)構(gòu)化改鲫;

(2)監(jiān)控?cái)?shù)據(jù)格式標(biāo)準(zhǔn)化诈皿;

(3)統(tǒng)一的監(jiān)控平臺(tái)林束;

(4)統(tǒng)一的日志分析。

三稽亏、什么才是好的監(jiān)控系統(tǒng)

1.監(jiān)控做不好壶冒,它們主要有兩個(gè)很大的問(wèn)題。

監(jiān)控?cái)?shù)據(jù)是隔離截歉。因?yàn)楣痉止さ膯?wèn)題胖腾,開發(fā)、應(yīng)用運(yùn)維瘪松、系統(tǒng)運(yùn)維咸作,各管各的,所以很多公司的監(jiān)控系統(tǒng)也是各是各的宵睦,完全串不起來(lái)记罚。

監(jiān)控的數(shù)據(jù)項(xiàng)太多。信息太多等于沒(méi)有信息

2.好的監(jiān)控系統(tǒng)應(yīng)該有以下幾個(gè)特征:

(1)關(guān)注于整體應(yīng)用的 SLA(Service-Level Agreement服務(wù)等級(jí)協(xié)議)状飞。主要從為用戶服務(wù)的 API 來(lái)監(jiān)控整個(gè)系統(tǒng)毫胜。

(2)關(guān)聯(lián)指標(biāo)聚合。 把有關(guān)聯(lián)的系統(tǒng)及其指標(biāo)聚合展示诬辈。主要是三層系統(tǒng)數(shù)據(jù):基礎(chǔ)層酵使、平臺(tái)中間件層和應(yīng)用層。其中焙糟,最重要的是把服務(wù)和相關(guān)的中間件以及主機(jī)關(guān)聯(lián)在一起口渔,服務(wù)有可能運(yùn)行在Docker 中,也有可能運(yùn)行在微服務(wù)平臺(tái)上的多個(gè) JVM 中穿撮,也有可能運(yùn)行在 Tomcat 中缺脉。無(wú)論運(yùn)行在哪里,都要把服務(wù)的具體實(shí)例和主機(jī)關(guān)聯(lián)在一起,否則定位問(wèn)題猶如大海撈針悦穿。

(3)快速故障定位攻礼。 做用戶請(qǐng)求跟蹤的 trace 監(jiān)控,監(jiān)控到所有的請(qǐng)求在分布式系統(tǒng)中的調(diào)用鏈栗柒,做成沒(méi)有侵入性的礁扮。

3.好的監(jiān)控系統(tǒng)主要是為以下兩個(gè)場(chǎng)景所設(shè)計(jì)的

“體檢”

容量管理。 提供一個(gè)全局的系統(tǒng)運(yùn)行時(shí)數(shù)據(jù)的展示瞬沦,可以讓工程師團(tuán)隊(duì)知道是否需要增加機(jī)器或者其它資源太伊。

性能管理」渥辏可以通過(guò)查看大盤僚焦,找到系統(tǒng)瓶頸,并有針對(duì)性地優(yōu)化系統(tǒng)和相應(yīng)代碼曙痘。

“急診”

定位問(wèn)題芳悲×⒅猓可以快速地暴露并找到問(wèn)題的發(fā)生點(diǎn),幫助技術(shù)人員診斷問(wèn)題芭概。

性能分析赛不。當(dāng)出現(xiàn)非預(yù)期的流量提升時(shí),可以快速地找到系統(tǒng)的瓶頸罢洲,并可以幫助開發(fā)人員深入代碼踢故。

四、如何做出一個(gè)好的監(jiān)控系統(tǒng)

1.服務(wù)調(diào)用鏈跟蹤

監(jiān)控系統(tǒng)從對(duì)外的 API 開始惹苗,將后臺(tái)的實(shí)際服務(wù)關(guān)聯(lián)起來(lái)殿较,服務(wù)的依賴服務(wù)給關(guān)聯(lián)起來(lái),直到最后一個(gè)服務(wù)(如 MySQL 或 Redis)桩蓉,整個(gè)系統(tǒng)服務(wù)全部串連淋纲。

對(duì)于 Java 類的服務(wù),使用字節(jié)碼技術(shù)進(jìn)行字節(jié)碼注入院究,做無(wú)侵入式洽瞬。

如下圖所示(截圖來(lái)自我做的一個(gè) APM 的監(jiān)控系統(tǒng))。

2.服務(wù)調(diào)用時(shí)長(zhǎng)分布

下圖是 Zipkin 的服務(wù)調(diào)用時(shí)間分布业汰』锴裕可以看到一個(gè)服務(wù)調(diào)用鏈上的時(shí)間分布,知道最耗時(shí)的服務(wù)是什么样漆。

3.服務(wù)的 TOP N 視圖

三種排名的方法:a)按調(diào)用量排名为障,b) 按請(qǐng)求最耗時(shí)排名,c)按熱點(diǎn)排名(一個(gè)時(shí)間段內(nèi)的請(qǐng)求次數(shù)的響應(yīng)時(shí)間和)放祟。

4.數(shù)據(jù)庫(kù)操作關(guān)聯(lián)

對(duì)于 Java 應(yīng)用鳍怨,我們可以很方便地通過(guò) JavaAgent 字節(jié)碼注入技術(shù)拿到JDBC 執(zhí)行數(shù)據(jù)庫(kù)操作的執(zhí)行時(shí)間和相關(guān)的請(qǐng)求對(duì)應(yīng)起來(lái)。

5.服務(wù)資源跟蹤跪妥。

我們的服務(wù)可能運(yùn)行在物理機(jī)/虛擬機(jī)里/Docker 的容器里(運(yùn)行在物理機(jī)或是虛擬機(jī)上)鞋喇。我們需要把服務(wù)運(yùn)行的機(jī)器節(jié)點(diǎn)上的數(shù)據(jù)(如 CPU、MEM眉撵、I/O侦香、DISK、NETWORK)關(guān)聯(lián)起來(lái)执桌。到如下的目標(biāo)鄙皇。

????當(dāng)一臺(tái)機(jī)器掛掉是因?yàn)?CPU 或 I/O 過(guò)高芜赌、SQL 操作過(guò)慢仰挣、消息隊(duì)列擁塞的時(shí)候,我們馬上可以知道其會(huì)影響到哪些對(duì)外服務(wù)API缠沈。

????當(dāng)一個(gè)服務(wù)響應(yīng)過(guò)慢的時(shí)候膘壶,我們馬上能關(guān)聯(lián)出來(lái)是否在做 Java GC错蝴,或是其所在的計(jì)算結(jié)點(diǎn)上是否有資源不足的情況,或是依賴的服務(wù)是否出現(xiàn)了問(wèn)題颓芭。

一旦發(fā)現(xiàn)某個(gè)服務(wù)過(guò)慢是因?yàn)?CPU 使用過(guò)多顷锰,我們就可以做彈性伸縮

一旦發(fā)現(xiàn)某個(gè)服務(wù)過(guò)慢是因?yàn)?MySQL 出現(xiàn)了一個(gè)慢查詢亡问,做流量限制或降級(jí)操作了官紫。

所以,一個(gè)分布式系統(tǒng)州藕,或是一個(gè)自動(dòng)化運(yùn)維系統(tǒng)束世,或是一個(gè) Cloud Native 的云化系統(tǒng),最重要的事就是把監(jiān)控系統(tǒng)做好床玻。在把數(shù)據(jù)收集好毁涉、關(guān)聯(lián)好。這樣锈死,我們才可能很快地定位故障贫堰,進(jìn)而才能進(jìn)行自動(dòng)化調(diào)度。

上圖只是簡(jiǎn)單地展示了一個(gè)分布式系統(tǒng)的服務(wù)調(diào)用鏈接上都在報(bào)錯(cuò)待牵,其根本原因是數(shù)據(jù)庫(kù)鏈接過(guò)多其屏,服務(wù)不過(guò)來(lái)。另外一個(gè)原因是洲敢,Java 在做 Full GC 導(dǎo)致處理過(guò)慢漫玄。于是,消息隊(duì)列出現(xiàn)消息堆積堵塞压彭。這個(gè)圖只是一個(gè)示例睦优,其形象地體現(xiàn)了在分布式系統(tǒng)中監(jiān)控?cái)?shù)據(jù)關(guān)聯(lián)的重要性。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末壮不,一起剝皮案震驚了整個(gè)濱河市汗盘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌询一,老刑警劉巖隐孽,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異健蕊,居然都是意外死亡菱阵,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門缩功,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)晴及,“玉大人,你說(shuō)我怎么就攤上這事嫡锌÷羌冢” “怎么了琳钉?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蛛倦。 經(jīng)常有香客問(wèn)我歌懒,道長(zhǎng),這世上最難降的妖魔是什么溯壶? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任及皂,我火速辦了婚禮,結(jié)果婚禮上且改,老公的妹妹穿的比我還像新娘躲庄。我一直安慰自己,他們只是感情好钾虐,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布噪窘。 她就那樣靜靜地躺著,像睡著了一般效扫。 火紅的嫁衣襯著肌膚如雪倔监。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天菌仁,我揣著相機(jī)與錄音浩习,去河邊找鬼。 笑死济丘,一個(gè)胖子當(dāng)著我的面吹牛谱秽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播摹迷,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼疟赊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了峡碉?” 一聲冷哼從身側(cè)響起近哟,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鲫寄,沒(méi)想到半個(gè)月后吉执,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡地来,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年戳玫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片未斑。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡咕宿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情荠列,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布载城,位于F島的核電站肌似,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏诉瓦。R本人自食惡果不足惜川队,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望睬澡。 院中可真熱鬧固额,春花似錦、人聲如沸煞聪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)昔脯。三九已至啄糙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間云稚,已是汗流浹背隧饼。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留静陈,地道東北人燕雁。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像鲸拥,于是被迫代替她去往敵國(guó)和親拐格。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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