偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

聽(tīng)云廖雄杰:全棧APM--打造端到云的全方位監(jiān)控體系

原創(chuàng)
移動(dòng)開(kāi)發(fā)
4月14日上午WOTA2017主會(huì)場(chǎng),聽(tīng)云研發(fā)副總裁廖雄杰進(jìn)行了主題為《全棧APM--打造端到云的全方位監(jiān)控體系》的精彩演講。以下是演講實(shí)錄,讓我們先睹為快!

【51CTO.com原創(chuàng)稿件】2017年4月14日-15日,由51CTO主辦的WOTA全球架構(gòu)與運(yùn)維技術(shù)峰會(huì)在北京富力萬(wàn)麗酒店隆重召開(kāi)。本次WOTA設(shè)置了15大前沿?zé)狳c(diǎn)技術(shù)論壇,60+來(lái)自Google、LinkedIn、Airbnb、百度、阿里巴巴、騰訊等海內(nèi)外一線(xiàn)互聯(lián)網(wǎng)公司的技術(shù)大咖將帶來(lái)超過(guò)50個(gè)歷經(jīng)沉淀的架構(gòu)實(shí)戰(zhàn)心得與成功經(jīng)驗(yàn)分享案例,攜手打造歷時(shí)2天的行業(yè)***技術(shù)盛會(huì)。

4月14日上午WOTA2017主會(huì)場(chǎng),聽(tīng)云研發(fā)副總裁廖雄杰進(jìn)行了主題為《全棧APM--打造端到云的全方位監(jiān)控體系》的精彩演講。以下是演講實(shí)錄,讓我們先睹為快! 

[[188574]]

聽(tīng)云研發(fā)副總裁廖雄杰

很高興在這里跟大家見(jiàn)面,我今天介紹的是APM五方面的工具集和操作的方法。在運(yùn)維的場(chǎng)景,以及產(chǎn)品應(yīng)用和交互的場(chǎng)景里可能會(huì)遇到一些性能問(wèn)題,也可能是產(chǎn)品運(yùn)營(yíng)的階段,因?yàn)檫@些問(wèn)題是直接影響用戶(hù)最終的體驗(yàn)。

對(duì)于大型的應(yīng)用來(lái)說(shuō),我們也可能涉及到很多的環(huán)節(jié),首先我們會(huì)從最終用戶(hù)APP或者PC瀏覽器的方式訪(fǎng)問(wèn),最終用戶(hù)這一端就會(huì)有些問(wèn)題產(chǎn)生。最終用戶(hù)到我們服務(wù)器之間可能有網(wǎng)絡(luò)CDN和云中間的環(huán)節(jié),服務(wù)器內(nèi)部會(huì)有服務(wù)器和服務(wù)器之間的環(huán)節(jié)要發(fā)生交互,以及各種組件都要發(fā)生交互。

尤其是現(xiàn)在很多公司在推行微服務(wù)化,以及其他的服務(wù)化的架構(gòu)。在這種架構(gòu)下,我們遇到一個(gè)問(wèn)題,就是你的架構(gòu)層級(jí)越來(lái)越復(fù)雜,監(jiān)控對(duì)于運(yùn)維來(lái)說(shuō),它的體量難度和復(fù)雜度也會(huì)隨之加大。

然而出現(xiàn)問(wèn)題之后怎么去監(jiān)控這個(gè)環(huán)節(jié)的問(wèn)題,我們要監(jiān)控網(wǎng)絡(luò)另一端,需要CDN或者是本地運(yùn)營(yíng)商,有可能是用戶(hù)自己網(wǎng)絡(luò)環(huán)境的問(wèn)題,所有的問(wèn)題需要定位出來(lái),到底是哪方面的問(wèn)題,哪些需要去優(yōu)化和解決。對(duì)于服務(wù)器內(nèi)部的各個(gè)組件都有可能發(fā)生的問(wèn)題。

剛才AWS的張俠總介紹了AWS云的概念,這幾年云對(duì)運(yùn)維界來(lái)說(shuō)是很大的福音,現(xiàn)在聽(tīng)云全部的應(yīng)用都在云上面部署。應(yīng)該說(shuō)云解放了運(yùn)維很大一部分的經(jīng)歷,把我們從冷冰冰的機(jī)房里面解放出來(lái),現(xiàn)在很多運(yùn)維基本上不用我們?cè)偃靸深^扛著服務(wù)器滿(mǎn)大街跑。

今天介紹APM概念,對(duì)于運(yùn)維來(lái)說(shuō)怎么樣了解應(yīng)用的各個(gè)環(huán)節(jié),當(dāng)遇到問(wèn)題和出現(xiàn)問(wèn)題的時(shí)候,怎樣進(jìn)行排查。大家猛一看到這個(gè)是研發(fā)團(tuán)隊(duì)相關(guān)人員干的事情,實(shí)際上這個(gè)問(wèn)題對(duì)于運(yùn)維人員來(lái)說(shuō)是很大的苦惱,當(dāng)出現(xiàn)問(wèn)題的時(shí)候首先肯定是運(yùn)維這邊首先要介入,你要定位到底是基礎(chǔ)環(huán)境出現(xiàn)問(wèn)題,還是應(yīng)用本身內(nèi)部出現(xiàn)問(wèn)題。只有把權(quán)責(zé)定位清楚以后,你才有可能把問(wèn)題交給研發(fā)或者留給運(yùn)維處理。

今天首先介紹一下APM幾大功能緯度,其實(shí)也是APM的組件,我們實(shí)施APM幾種常用的方法。

首先是DEM,不管是從外部或者是內(nèi)部對(duì)應(yīng)用本身進(jìn)行可用性和性能的監(jiān)控,這是我們最直觀(guān)的監(jiān)控。應(yīng)該說(shuō)我們的用戶(hù)出現(xiàn)問(wèn)題的時(shí)候,首先它應(yīng)該也是跟這個(gè)有關(guān)系。我們首先把這個(gè)狀態(tài)持續(xù)監(jiān)控出來(lái),我們才有可能再往后面排查有沒(méi)有更深層次的問(wèn)題。DEM是比較大的方面和功能緯度,這里面主要的工具集,分成兩種,一種是RUM,這個(gè)是真實(shí)用戶(hù)的性能監(jiān)控。通常會(huì)基于有Web端和移動(dòng)端,用戶(hù)訪(fǎng)問(wèn)的時(shí)候客戶(hù)集中在Web瀏覽器或者是移動(dòng)端。從每一個(gè)正式用戶(hù)向應(yīng)用發(fā)生請(qǐng)求的時(shí)候,在這個(gè)過(guò)程當(dāng)中通過(guò)一定的方式,比如像瀏覽器通過(guò)嵌碼的方式,移動(dòng)端有更復(fù)雜的嵌碼的方式,這個(gè)需要自動(dòng)的嵌碼,因?yàn)檫@個(gè)不能在研發(fā)的接單把監(jiān)控代碼嵌進(jìn)去,這兩個(gè)嵌碼的過(guò)程應(yīng)該完全是自動(dòng)化的。

首先是真實(shí)用戶(hù)的監(jiān)測(cè),另外一個(gè)方式跟它相對(duì)應(yīng)的是STM模擬事務(wù)監(jiān)控,這個(gè)跟剛才那個(gè)有什么不太一樣的地方呢?真實(shí)用戶(hù)的監(jiān)測(cè),拿Web瀏覽器舉例子有什么樣的缺陷,表現(xiàn)上來(lái)看是從真實(shí)用戶(hù)的角度發(fā)起監(jiān)測(cè),這肯定是最合理的,出問(wèn)題的時(shí)候我們最關(guān)注的也是用戶(hù)。但是這種監(jiān)測(cè)方式有比較致命的缺陷,我們說(shuō)監(jiān)控首先可用性和性能肯定都需要監(jiān)控起來(lái)。

如果是Web瀏覽器的方式,目前絕大部分都是GS的方式就是嵌碼,這意味著你的瀏覽器,你當(dāng)前的頁(yè)面至少需要正常的請(qǐng)求和完成,之后你的GS才有可能被正常運(yùn)行。如果在這個(gè)過(guò)程當(dāng)中出現(xiàn)網(wǎng)絡(luò)異?;蛘咧皇琼?yè)面GS的錯(cuò)誤,導(dǎo)致你的監(jiān)控腳本根本沒(méi)有辦法加載或者運(yùn)行,所以有一個(gè)很大的問(wèn)題,當(dāng)它出現(xiàn)異常的時(shí)候,你通過(guò)這種方式監(jiān)控是比較困難的。所以STM在這方面有比較大的優(yōu)勢(shì),STM它是模擬用戶(hù),你可以有針對(duì)性的,在機(jī)房或者也可以在最終用戶(hù),在最終的機(jī)器上面部署一些機(jī)器人的節(jié)點(diǎn),它可能不是真實(shí)的用戶(hù),但是它跟真實(shí)用戶(hù)一樣,它其實(shí)是最終用戶(hù)的訪(fǎng)問(wèn),你可以控制瀏覽器把網(wǎng)絡(luò)事件和性能的各種指標(biāo)抓出來(lái),這是比較重要的兩個(gè)監(jiān)測(cè)方式,一個(gè)是DEM,一個(gè)是RUM,一個(gè)是STM。

然后,APM的第二大功能是DATD,這個(gè)是什么意思呢?剛才說(shuō)從最終用戶(hù)的角度,不管是正式用戶(hù)或者是模擬的監(jiān)測(cè),它都是最終用戶(hù)的角度來(lái)觀(guān)察應(yīng)用。所以這個(gè)方式的應(yīng)用內(nèi)部,比如訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)或者說(shuō)訪(fǎng)問(wèn)MQ,這種是DEM無(wú)法監(jiān)測(cè)的,因?yàn)樗谟脩?hù)的遠(yuǎn)端看不到,最多到網(wǎng)絡(luò)這一端,到服務(wù)器內(nèi)部就看不到了。所以這里面需要用到第二個(gè)功能范疇,就是ADTD,你需要描述服務(wù)器內(nèi)部,尤其是微服務(wù)架構(gòu),A服務(wù)于B服務(wù)之間的調(diào)用關(guān)系是什么樣的,調(diào)用的過(guò)程中有沒(méi)有問(wèn)題,有問(wèn)題到底是A服務(wù)出現(xiàn)問(wèn)題,還是B服務(wù)出現(xiàn)問(wèn)題。所以這些追溯都應(yīng)該在這里面被描述出來(lái),如果數(shù)據(jù)不描繪出來(lái),監(jiān)控就無(wú)從談起。

對(duì)于第二大領(lǐng)域來(lái)說(shuō)還有一個(gè)比較重要的特性,就是除了描述它們之間的關(guān)聯(lián)關(guān)系,還有性能之外,一旦發(fā)現(xiàn)問(wèn)題可以深度的鉆取,最終用戶(hù)訪(fǎng)問(wèn)到應(yīng)用內(nèi)部的時(shí)候,應(yīng)用內(nèi)部看到它進(jìn)來(lái),后端與其他服務(wù)之間的交互,跟數(shù)據(jù)庫(kù)、緩存、MQ之間的交互,所有的組件都應(yīng)該被鉆取出來(lái),否則的話(huà)最終看到的是服務(wù)出現(xiàn)了問(wèn)題,但是問(wèn)題出在哪里不知道,所以深度鉆取也是必須要有的。當(dāng)它出現(xiàn)問(wèn)題的時(shí)候,其實(shí)我們有手段做到行級(jí)代碼的分析,是哪一行代碼出現(xiàn)了問(wèn)題。因?yàn)樵趹?yīng)用內(nèi)部,通常通過(guò)合理的方式,通過(guò)代碼植入的方式,我們可以拿到代碼出現(xiàn)的信息。當(dāng)出現(xiàn)問(wèn)題的時(shí)候甚至可以定義到行級(jí)代碼的區(qū)別,這個(gè)對(duì)于運(yùn)維來(lái)說(shuō),這應(yīng)該是非常有用的工具。因?yàn)椴恍枰私饷恳粋€(gè)應(yīng)用開(kāi)發(fā)的細(xì)節(jié),也就可以很快的把問(wèn)題定位出來(lái),所有的這些都是工具化的。

前面主要介紹的是數(shù)據(jù)的來(lái)源,我們?cè)趺醋ト∵@些數(shù)據(jù),有了這些數(shù)據(jù)之后,我們可以通過(guò)機(jī)器學(xué)習(xí)和統(tǒng)計(jì)推斷的手段發(fā)現(xiàn)數(shù)據(jù)性能異常的來(lái)源或者是根源。我們認(rèn)為經(jīng)常有報(bào)警,你是A服務(wù)、B服務(wù)、C服務(wù)全部發(fā)生報(bào)警到底是什么問(wèn)題,這個(gè)時(shí)候需要追溯根源,可以通過(guò)統(tǒng)計(jì)學(xué)習(xí)的方法、機(jī)器學(xué)習(xí)的方法來(lái)分析這些數(shù)據(jù)得出來(lái)的結(jié)論,這是后期的數(shù)據(jù)加工的問(wèn)題。

剛才給大家介紹了一下APM主要的實(shí)現(xiàn)方式,我們把APM主要的實(shí)現(xiàn)方式,包括它的功能緯度都描述了一下。現(xiàn)在我們實(shí)際看一下,我們能夠做到要全棧,我們通過(guò)這個(gè)圖看一下,我們每個(gè)點(diǎn)能做什么呢?我們的APP可能有原生的APP,也有可能是H5開(kāi)發(fā)的,在你的APP內(nèi)部工作,這一塊是RUM的APP的一部分,分為兩部分,這兩個(gè)技術(shù)手段都完全可以做到從最終端監(jiān)測(cè),前端看到網(wǎng)絡(luò)性能的情況,這些都可以做到。包括前端性能的情況,比如說(shuō)有一段腳本執(zhí)行的有問(wèn)題,你至少可以定位出來(lái)大概在哪一塊,瀏覽器渲染的時(shí)候有問(wèn)題,在前端可以監(jiān)測(cè)出來(lái)。

中間這一部分是網(wǎng)絡(luò)這一層,是STM工作的區(qū)域,可以***程度的發(fā)現(xiàn)一些網(wǎng)絡(luò)的問(wèn)題,它為什么是網(wǎng)絡(luò)放在這一端,模擬的意味著我們可以把它部署在任何地方。比如說(shuō)我們部署在機(jī)房里面,你可以部署在最終用戶(hù)的機(jī)器上面,你的機(jī)房和最終用戶(hù),你也可以按你關(guān)心的區(qū)域運(yùn)營(yíng)商,按你的比例分配監(jiān)測(cè)的資源,你不用像正式用戶(hù)一樣返回多少是多少??梢岳眠@些時(shí)間做更多的事情,而且有一個(gè)好處,就是STM的方式,通常它的監(jiān)控方式,本質(zhì)上是我們開(kāi)發(fā)一個(gè)專(zhuān)門(mén)的A政策,這個(gè)意味著你可以獲取到瀏覽器更多的事情,我們知道GS工作在真實(shí)用戶(hù)的瀏覽器里面,你能做的事情其實(shí)是比較少的。你想獲取到的很多數(shù)據(jù),可能因?yàn)榘踩蛘呤羌夹g(shù)方面的限制,你是無(wú)法實(shí)現(xiàn)的。在STM這一塊可以抓到盡可能細(xì)的數(shù)據(jù),可以把問(wèn)題分析的更透徹,通過(guò)STM你可以定位,它是CDN的問(wèn)題,還是本地網(wǎng)絡(luò)的問(wèn)題,還是本地的運(yùn)營(yíng)商網(wǎng)絡(luò)有問(wèn)題,還是說(shuō)骨干網(wǎng)絡(luò)出現(xiàn)了問(wèn)題,這些都可以定位出來(lái)。可以通過(guò)你的節(jié)點(diǎn)在不同的位置部署,這樣就可以區(qū)分很多的緯度。

后面服務(wù)器內(nèi)部,包括云內(nèi)部服務(wù)器的應(yīng)用是ADTD工作的領(lǐng)域,可以監(jiān)測(cè)應(yīng)用,理論上來(lái)說(shuō)從應(yīng)用發(fā)起訪(fǎng)問(wèn)的地方,訪(fǎng)問(wèn)本身是可以監(jiān)控的。數(shù)據(jù)通過(guò)JDBC監(jiān)控,把監(jiān)控代碼嵌上,訪(fǎng)問(wèn)的數(shù)據(jù)庫(kù)就出來(lái)了。所有的嵌碼應(yīng)該說(shuō)在技術(shù)上都是統(tǒng)一化的,不像我們說(shuō)的可能有很多專(zhuān)業(yè)的監(jiān)控,比如說(shuō)數(shù)據(jù)庫(kù)每一種都是針對(duì)不同的協(xié)議和不同的服務(wù)器部署。對(duì)于APM的實(shí)現(xiàn)方式,一般情況下我們會(huì)通過(guò)統(tǒng)一的方式實(shí)現(xiàn),因?yàn)閼?yīng)用出現(xiàn)問(wèn)題的時(shí)候,最終關(guān)心的是應(yīng)用向某個(gè)組件發(fā)起訪(fǎng)問(wèn)的時(shí)候到底有沒(méi)有問(wèn)題,有問(wèn)題你能給我定位出來(lái)就可以了。

這是基本的拓?fù)鋱D,***個(gè)看到的是概覽的情況。第二個(gè)是真實(shí)用戶(hù)的情況,這個(gè)是IOS的應(yīng)用,可以看到它的每一個(gè)網(wǎng)絡(luò)訪(fǎng)問(wèn)請(qǐng)求,它的曲線(xiàn)有一個(gè)時(shí)間段,它的訪(fǎng)問(wèn)時(shí)間標(biāo)上去了,通過(guò)分析大量的真實(shí)用戶(hù)的數(shù)據(jù),然后把這個(gè)數(shù)據(jù)通過(guò)圖表的方式、可視化的方式展現(xiàn)出來(lái),這個(gè)符合運(yùn)維的基本原則。所有的監(jiān)控?cái)?shù)據(jù)都應(yīng)該是指標(biāo)度量出來(lái)之后,然后可視化出來(lái),這樣的話(huà)才能成為一個(gè)工具。

這是真實(shí)的用戶(hù)體驗(yàn),然后在這里可以看到網(wǎng)絡(luò)的切片情況,看到網(wǎng)絡(luò)包括什么,可能比較關(guān)心的DS解析化了多長(zhǎng)時(shí)間,建立連接的時(shí)候用了多長(zhǎng)時(shí)間,然后會(huì)有首報(bào)時(shí)間,就是服務(wù)服務(wù)響應(yīng)的時(shí)間?;旧峡梢远ㄎ怀鰜?lái)到底是網(wǎng)絡(luò)端的問(wèn)題,還是服務(wù)器端的問(wèn)題。如果是服務(wù)器端的問(wèn)題,可以通過(guò)其他技術(shù)手段,剛才說(shuō)了通過(guò)STM監(jiān)控方式,網(wǎng)絡(luò)切片,其他的像建連比較正常,可以判斷由于服務(wù)器內(nèi)部發(fā)生阻塞,導(dǎo)致阻塞了一段時(shí)間向客戶(hù)端發(fā)送一個(gè)首報(bào),我們會(huì)把一次完整的請(qǐng)求到它響應(yīng)回來(lái),網(wǎng)絡(luò)不同的階段都可以做出非常詳細(xì)的切片,這是網(wǎng)絡(luò)的一部分。

剛才說(shuō)了ADTD,這一塊我們可以做什么。在塊展示了后端訪(fǎng)問(wèn)到不同的服務(wù),服務(wù)跟服務(wù)之間的交互,服務(wù)跟數(shù)據(jù)庫(kù)和MQ等等,通過(guò)拓?fù)涞姆绞娇梢宰詣?dòng)發(fā)現(xiàn)出來(lái)。應(yīng)該說(shuō)這個(gè)圖運(yùn)維也是比較喜聞樂(lè)見(jiàn)的,畢竟架構(gòu)越來(lái)越復(fù)雜,基本上當(dāng)應(yīng)用越來(lái)越復(fù)雜的時(shí)候,更多時(shí)候會(huì)發(fā)現(xiàn)很難去掌控它后端的架構(gòu)。比如說(shuō)應(yīng)用跟應(yīng)用之間關(guān)系是怎么交互的,應(yīng)用跟組件之間它們的依賴(lài)關(guān)系是怎么交互的,包括每一個(gè)服務(wù),每一個(gè)組件,它的調(diào)用次數(shù)、吞吐量和錯(cuò)誤率,這些都是可以以直觀(guān)的方式展現(xiàn)出來(lái)。

再其次是運(yùn)維和研發(fā)比較關(guān)注的,當(dāng)出現(xiàn)問(wèn)題的時(shí)候,肯定是想知道到底是哪行代碼出現(xiàn)了問(wèn)題。***一步,當(dāng)你定位問(wèn)題之后,我們可以通過(guò)提前把代碼調(diào)用,以及其他的信息,如果是SQL調(diào)出可以自動(dòng)抓取出來(lái),協(xié)助你后面的開(kāi)發(fā)進(jìn)行進(jìn)一步的分析。

比如說(shuō)這里簡(jiǎn)單的展示不同的調(diào)用組件,它們之間占用的時(shí)間。左邊那個(gè)圖展現(xiàn)了不同的組件它的調(diào)用數(shù),以及每一個(gè)組件調(diào)用時(shí)間的比例。

現(xiàn)在我們簡(jiǎn)單總結(jié)一下,現(xiàn)在我們說(shuō)全棧APM簡(jiǎn)單的幾步,真實(shí)用戶(hù)性能,這邊用的是DEM,主要還是RUM。在網(wǎng)絡(luò)切片這塊,我們主要用到DEM里面的STM就是模擬監(jiān)測(cè)的方式,網(wǎng)絡(luò)切片做的是最細(xì)的。另外一個(gè)是NPM沒(méi)有介紹,可能也有運(yùn)維團(tuán)隊(duì)有過(guò)這樣的經(jīng)驗(yàn),NPM你可以把你機(jī)房里面的交換機(jī),通過(guò)專(zhuān)門(mén)的軟件分析流量的每一個(gè)包,然后從流量的包里面分析它的性能和各個(gè)之間的關(guān)系。但是這個(gè)比較局限,從服務(wù)器拿到流量包可能有很多信息已經(jīng)丟失了,你只有一個(gè)包數(shù)據(jù),它能分析出來(lái)的內(nèi)容相對(duì)來(lái)說(shuō)比較有限一點(diǎn)。

后臺(tái)應(yīng)用邏輯拓?fù)?,包括拓?fù)淅锩婷恳粋€(gè)組件和性能的監(jiān)控是通過(guò)ADTD的方式,包括代碼級(jí)的監(jiān)控可以監(jiān)控到應(yīng)用過(guò)程,每一個(gè)請(qǐng)求有多少次,它的平均時(shí)間是多少。

介紹完全棧APM,我相信對(duì)于運(yùn)維應(yīng)該都會(huì)有一個(gè)強(qiáng)迫癥。就是剛才說(shuō)了這么多監(jiān)控手段,我們能不能把它串起來(lái)做成一站式的監(jiān)控。比如說(shuō)剛才說(shuō)從真實(shí)用戶(hù)到服務(wù)器,到我們后端的組件。到真實(shí)用戶(hù)發(fā)現(xiàn)問(wèn)題的時(shí)候,能不能從真實(shí)用戶(hù)一步一步直接排查到***端,***的定位到底是網(wǎng)絡(luò)端的問(wèn)題,還是服務(wù)器端的問(wèn)題。如果是服務(wù)器端的問(wèn)題,它到底是哪個(gè)組件的問(wèn)題。包括如果是服務(wù)器端,后端某一個(gè)服務(wù)調(diào)用時(shí)候出現(xiàn)了問(wèn)題,導(dǎo)致前端的響應(yīng)變慢,能不能一站式的暴露出來(lái),并且包括剛才說(shuō)的行級(jí)代碼的分析,這些方式都可以結(jié)合起來(lái)用。

剛才說(shuō)了Web的RUB,我們?cè)趺礃拥椒?wù)器,就是瀏覽器到服務(wù)器怎么樣追溯一個(gè)問(wèn)題。包括關(guān)聯(lián)它們性能之間的關(guān)系,首先我們從瀏覽器的監(jiān)控里面,監(jiān)控方式后面會(huì)稍微介紹一下,我們監(jiān)控到一個(gè)請(qǐng)求它的響應(yīng)時(shí)間比較長(zhǎng)。

我們看下面這個(gè)圖,我們把它分解成服務(wù)器端的響應(yīng)時(shí)間,以及網(wǎng)絡(luò)層以及前端的渲染。展示的時(shí)候首先把服務(wù)器端的時(shí)間單獨(dú)作為一個(gè)指標(biāo),在這個(gè)圖上你可以看出來(lái),它到底是服務(wù)器端發(fā)生的問(wèn)題,還是前端的網(wǎng)絡(luò)發(fā)生了問(wèn)題。

我們可以通過(guò)鉆取的方式直接鉆取到后端關(guān)聯(lián)出問(wèn)題的應(yīng)用,這個(gè)已經(jīng)到達(dá)服務(wù)器端對(duì)應(yīng)的請(qǐng)求,這個(gè)請(qǐng)求點(diǎn)開(kāi)之后,我們會(huì)看到某一個(gè)組件,它是往另外一個(gè)后端的服務(wù),它的響應(yīng)時(shí)間比較高,我們可以一次鉆取把它全都關(guān)聯(lián)出來(lái)。

我們?cè)偻罂吹脑?huà),既然已經(jīng)到達(dá)服務(wù)器那端。其實(shí)后端應(yīng)該沒(méi)有必要詳細(xì)說(shuō)了,因?yàn)榛旧洗蟛糠值腁DTD里面的東西,剛才已經(jīng)簡(jiǎn)單介紹了,因?yàn)橐呀?jīng)到達(dá)服務(wù)器后端,再往下鉆取可以發(fā)現(xiàn)到底是哪一個(gè)組件,這個(gè)是瀏覽器詳細(xì)的分析。每一個(gè)元素我們頁(yè)面瀏覽響應(yīng)的時(shí)間都可以展示出來(lái),我們看到其中有一個(gè)元素時(shí)間比較長(zhǎng)。然后我們給它從元素的級(jí)別開(kāi)始,每一個(gè)元素我們可以往后鉆取。比如說(shuō)請(qǐng)求比較慢,它的后端可能對(duì)應(yīng)另外一個(gè)應(yīng)用,能不能從這里鉆取到后端的應(yīng)用里面去。

鉆取到后端的應(yīng)用之后,我們可以通過(guò)ADTD后端的分析。比如說(shuō)我們可以看到它請(qǐng)求后端再后端另外的URL,請(qǐng)求的時(shí)候發(fā)生了問(wèn)題,響應(yīng)時(shí)間比較長(zhǎng)。再往后看,我們可以看到它到底是哪個(gè)方法,哪一行代碼出現(xiàn)了問(wèn)題。

具體的實(shí)現(xiàn)方式簡(jiǎn)單介紹一下,其實(shí)也比較簡(jiǎn)單,我們要把瀏覽器和服務(wù)器端,首先它會(huì)自動(dòng)嵌碼,服務(wù)器端也會(huì)自動(dòng)嵌碼。嵌完碼之后,我們要干的事情,從這個(gè)請(qǐng)求,從瀏覽器端一直發(fā)到服務(wù)器端,再?gòu)姆?wù)器端回到瀏覽器端。我們把請(qǐng)求和響應(yīng)的過(guò)程用一個(gè)東西放到某一個(gè)地方傳到服務(wù)器,然后再傳回來(lái)就可以了。對(duì)于瀏覽器的方式,我們可以直接把Ajax改掉,但是主頁(yè)面的請(qǐng)求你沒(méi)有辦法改HTTP頭的,但是有什么辦法嗎?服務(wù)器端我們也是通過(guò)嵌碼的方式嵌進(jìn)去的,事實(shí)上我們可以在服務(wù)器端嵌碼的時(shí)候直接攔截JSP、PHP編譯的過(guò)程,我們直接輸出一些可以關(guān)聯(lián)起來(lái)的信息。比如說(shuō)生成一個(gè)東西放到頁(yè)面里面,然后帶回來(lái)就可以了,總會(huì)有一些技術(shù)的手段實(shí)現(xiàn)這個(gè)過(guò)程。所以我們有辦法把它關(guān)聯(lián)起來(lái)。

Java可以自動(dòng)修改,把我們要干的事情,其實(shí)在一個(gè)函數(shù)的前后打上時(shí)間傳上來(lái)就可以了。包括出現(xiàn)異常的時(shí)候,也可以監(jiān)測(cè)出來(lái)傳到服務(wù)器這端來(lái),服務(wù)器端最終是通過(guò)這套代碼攔截的方式,訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),你最終都是通過(guò)調(diào)用API某一個(gè)函數(shù)實(shí)現(xiàn)的,所以我們要攔截的就是這樣一些函數(shù)。

瀏覽器就更簡(jiǎn)單了,想必大家應(yīng)該都會(huì)看過(guò)類(lèi)似的GS的代碼,我們很多廣告分析,以及用戶(hù)分析,很多網(wǎng)站都有,對(duì)于APM來(lái)說(shuō)我們要獲取它的性能,在很早以前是直接用GS的方式,但也有很多時(shí)候是獲取不到的。比如說(shuō)在瀏覽器的內(nèi)部,它沒(méi)有通過(guò)GS的API開(kāi)放出來(lái)。在2011年、2012年之后W3C把這兩個(gè)標(biāo)準(zhǔn)開(kāi)放出來(lái),大部分主流的瀏覽器也都實(shí)現(xiàn)了這樣的標(biāo)準(zhǔn),其實(shí)實(shí)現(xiàn)的方式比較簡(jiǎn)單,簡(jiǎn)單看一下它有一個(gè)Navigation timing的接口,它是在哪個(gè)時(shí)間開(kāi)始,在哪個(gè)時(shí)間結(jié)束,對(duì)應(yīng)的解析的時(shí)間、渲染的時(shí)間和建鏈的時(shí)間都可以拿到。我們把代碼注入進(jìn)去之后,你可以拿到所有你要的前端網(wǎng)絡(luò),以及前端的解析和性能監(jiān)控的數(shù)據(jù),完了之后對(duì)它做一些簡(jiǎn)單的分析,這樣一個(gè)監(jiān)控的界面就出來(lái)了。

剛才我們大概介紹了Browser到Server,怎么做一站式APM的溯源。其實(shí)對(duì)于APP來(lái)講也有類(lèi)似的方式,監(jiān)控?cái)?shù)據(jù)都拿到了,代碼都嵌入進(jìn)去了,肯定有技術(shù)手段。

包括后端的服務(wù)跟服務(wù)之間,服務(wù)跟數(shù)據(jù)庫(kù)之間。主要是服務(wù)跟服務(wù)之間,我們說(shuō)跨應(yīng)用,包括要實(shí)現(xiàn)服務(wù)跟服務(wù)之間的追蹤,API微服務(wù)可能用的比較多一點(diǎn)。當(dāng)我們拿到了這么多的數(shù)據(jù)之后,可以對(duì)它調(diào)用鏈的追蹤方式,所有的請(qǐng)求從A服務(wù)到B服務(wù)、C服務(wù),所有的調(diào)用鏈都可以描述出來(lái),當(dāng)多個(gè)服務(wù)同時(shí)報(bào)警的時(shí)候,如何拿這些數(shù)據(jù)對(duì)它問(wèn)題的根因,到底是什么原因?qū)е碌?,做一個(gè)根因分析。

本次給大家介紹了APM使用場(chǎng)景,包括APM套件里面主要的工具,APM套件里面幾個(gè)主要的實(shí)現(xiàn)方式。我的演講就到這里,謝謝大家。

51CTO記者將持續(xù)為您帶來(lái)WOTA2017全球運(yùn)維與架構(gòu)技術(shù)峰會(huì)前方精彩報(bào)道,敬請(qǐng)期待!

 

【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】

 

責(zé)任編輯:陳琳 來(lái)源: 51CTO.com
相關(guān)推薦

2017-04-20 10:02:04

APM

2017-04-21 11:59:12

廖雄杰APM

2015-08-18 20:33:28

DevOpsAPMSaaS

2015-11-24 13:18:02

WOT2015

2009-10-26 13:41:49

機(jī)房監(jiān)控

2015-11-28 10:45:50

大數(shù)據(jù)性能管理

2014-12-17 10:53:02

APM聽(tīng)云CTOAWS

2017-03-17 14:46:04

互聯(lián)網(wǎng)

2022-07-26 07:47:14

架構(gòu)

2012-10-15 09:50:29

應(yīng)用云計(jì)算云計(jì)算

2012-06-15 08:56:12

Windows Azu云計(jì)算微軟

2015-10-23 12:55:34

聽(tīng)云

2013-12-03 20:43:16

西部數(shù)據(jù)百度云服務(wù)

2011-12-15 10:44:01

微軟云計(jì)算

2015-09-24 13:39:06

2015-12-08 14:42:52

2011-12-14 10:33:35

云計(jì)算

2024-01-05 10:43:50

金山云人工智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)