什么是真正的APM?
近年來(lái)APM行業(yè)被越來(lái)越多的企業(yè)所關(guān)注,尤其是在2014年末,NewRelic的成功上市,更加激發(fā)了人們對(duì)這個(gè)行業(yè)前景的無(wú)限遐想。那么究竟什么是APM?APM的目的是什么?要求我們做什么?有不少企業(yè)對(duì)APM的理解其實(shí)是有偏差的,本文將向您闡述一個(gè)真正完整的APM概念。
APM 是Application Performance Managment的縮寫(xiě),字面意思很容易理解,“應(yīng)用性能管理”。它是由Gartner歸納抽象出的一個(gè)管理模型。注意,這個(gè)管理模型的由來(lái),是經(jīng)過(guò)大量調(diào)研與分析后的歸納與抽象,這些切實(shí)需求由來(lái)已久,IT從業(yè)者們對(duì)它的理解與實(shí)踐也幾乎是從IT誕生至今就已開(kāi)始,這并不是一次發(fā)明。
從上圖中可以清楚看到APM模型中一共分了五個(gè)層次,下面就這五個(gè)層次逐一說(shuō)明。
1. End User Experience
What:終端用戶(hù)體驗(yàn)。APM首先關(guān)注的是終端用戶(hù)對(duì)應(yīng)用性能的真實(shí)體驗(yàn)。
Why:不是監(jiān)測(cè)點(diǎn)的,也不是骨干網(wǎng)核心機(jī)房的,而是真實(shí)用戶(hù)的切實(shí)體驗(yàn)到的性能。可能一個(gè)電影播放服務(wù)的性能優(yōu)化做得很棒,但是用戶(hù)打開(kāi)瀏覽器或打開(kāi)APP,發(fā)現(xiàn)點(diǎn)播某個(gè)電影時(shí)卻慢得離譜,問(wèn)題會(huì)出在哪里呢?用戶(hù)不清楚點(diǎn)擊播放按鈕之后,發(fā)生的一切事情,用戶(hù)只是感知到了慢、不能播放、往復(fù)播放等等很多不好的體驗(yàn),用戶(hù)反饋了問(wèn)題或投訴了,產(chǎn)品和研發(fā)不能準(zhǔn)確重現(xiàn),問(wèn)題來(lái)了。
也許用戶(hù)瀏覽器太過(guò)陳舊,也許是某個(gè)JS腳本的兼容性問(wèn)題,也許用戶(hù)本地網(wǎng)絡(luò)丟包嚴(yán)重、首字節(jié)響應(yīng)時(shí)間很長(zhǎng),也許是服務(wù)器集群網(wǎng)絡(luò)不穩(wěn)定、某組機(jī)器脫離了均衡池…… 太多也許了。而這些猜測(cè)是,最不好把控的,就是用戶(hù)客戶(hù)端環(huán)境,Server端好比自家的菜地,菜好菜賴(lài)總是清楚的,可再好的菜賣(mài)到飯館,廚子怎么樣菜農(nóng)怎么知道?
幫助應(yīng)用管理者準(zhǔn)確、詳盡地了解真實(shí)的用戶(hù)體驗(yàn)是什么樣子,這是APM首先要解決的問(wèn)題。
How:對(duì)于Web應(yīng)用來(lái)說(shuō),在用戶(hù)請(qǐng)求到的每一個(gè)頁(yè)面下面追加一段js腳本,用js收集并發(fā)回?cái)?shù)據(jù),是最普遍的做法;對(duì)于移動(dòng)App來(lái)說(shuō),在APP發(fā)布前build進(jìn)SDK,通過(guò)系統(tǒng)與語(yǔ)言Hook來(lái)收集數(shù)據(jù),也是很直截了當(dāng)?shù)摹V劣谶@二者具體的做法,容后文再細(xì)聊,此篇不贅。下列簡(jiǎn)單截取了幾張圖片,來(lái)源透視寶。
?
?
?
?
2. Runtime Application Architecture
What:應(yīng)用架構(gòu)映射。
Why: 曾經(jīng)與多名CTO深入探討過(guò)這個(gè)問(wèn)題(其中不乏已經(jīng)上市的企業(yè)):你們有完整的應(yīng)用架構(gòu)圖嗎?得到的回答不少是閃爍其詞的,有的CTO很直接地?fù)u搖頭。更有甚者是這么回答的,公司應(yīng)用系統(tǒng)年代久遠(yuǎn),就算目前所有的架構(gòu)師專(zhuān)職繪圖,也很難在短時(shí)間內(nèi)完成全部的應(yīng)用架構(gòu)圖。
大多數(shù)企業(yè)的應(yīng)用架構(gòu),是黑盒或灰盒,這就是現(xiàn)狀。
假如應(yīng)用架構(gòu)圖是完整的,那么還有一個(gè)需求即:針對(duì)于某次故障請(qǐng)求的真實(shí)請(qǐng)求鏈路拓?fù)洹J堑?#xff0c;負(fù)載均衡一共分發(fā)了N臺(tái)機(jī)器作為集群,但承接某次具體請(qǐng)求的是集群中的某些機(jī)器,那么,是哪些機(jī)器?它們當(dāng)時(shí)的性能是什么樣子?請(qǐng)求順序是怎樣的?
How: 云智慧透視寶實(shí)現(xiàn)了應(yīng)用的完整架構(gòu):
與單次請(qǐng)求的應(yīng)用架構(gòu):
可以看到,在上面的示例中,完美了解決了我們?cè)趹?yīng)用架構(gòu)層面遇到的問(wèn)題。
具體做法,我們將在后續(xù)文章中單獨(dú)介紹,其中包含了web容器插件、編程語(yǔ)言Hook插件等技術(shù)細(xì)節(jié)。
3. Business Transactions
What:應(yīng)用事務(wù)分析
Why:當(dāng)然這里說(shuō)的事務(wù)不是DB事務(wù)。這里指應(yīng)用與用戶(hù)交互的操作事務(wù)。舉個(gè)例子:用戶(hù)登錄網(wǎng)站后,使用搜索功能搜索了耳機(jī),從耳機(jī)列表中,選擇了自己喜歡的耳機(jī),打開(kāi)查看詳情,款式音效價(jià)格看來(lái)都不錯(cuò),放入購(gòu)物車(chē),然后打開(kāi)購(gòu)物車(chē)進(jìn)行購(gòu)買(mǎi),完成支付。
整個(gè)例子中,我們所說(shuō)的事務(wù)可以抽象為:
登錄 -> 搜索 -> 挑選 -> 購(gòu)買(mǎi) -> 支付
所以,單純的記錄登錄成功率、購(gòu)買(mǎi)成功率的意義不會(huì)至于大到分析整個(gè)應(yīng)用的健壯穩(wěn)定程度,準(zhǔn)確地分析出整體事務(wù)的相互影響象限,才會(huì)。
How:熟悉GA的朋友都知道,GA花費(fèi)了大量的力量以實(shí)現(xiàn)上述我們所描述的應(yīng)用事務(wù)。但令開(kāi)發(fā)者痛苦的是,必須要在代碼中“埋點(diǎn)”,即在代碼中的關(guān)鍵位置寫(xiě)入一行代碼,以實(shí)現(xiàn)在關(guān)鍵位置的追蹤,而業(yè)務(wù)總不是一成不變的,于是隨著業(yè)務(wù)發(fā)展,“埋點(diǎn)”這個(gè)事情使得應(yīng)用總在不停地修改、發(fā)布、修改、發(fā)布。
其實(shí),用戶(hù)在客戶(hù)端(瀏覽器、APP)所進(jìn)行的所有操作,很明顯,是有序的。要完成應(yīng)用事務(wù)的記錄,要完成的需求其實(shí)只是兩個(gè)惟一性:
1、確定上下文的事務(wù)操作,是同一個(gè)用戶(hù);
2、確定所有事務(wù)操作的每一個(gè)步驟,是惟一一個(gè)動(dòng)作。
于是我們便可對(duì)某一個(gè)應(yīng)用取得的數(shù)據(jù)分析出以下應(yīng)用事務(wù),而整個(gè)過(guò)程中,用戶(hù)不需要修改任何一行代碼(無(wú)須埋點(diǎn))。具體的實(shí)現(xiàn)細(xì)節(jié),后續(xù)會(huì)專(zhuān)門(mén)出文介紹。
?
4. Deep Dive Component Monitoring
What:深度應(yīng)用診斷
Why:關(guān)鍵詞是“深度”。比如某在線(xiàn)商城,接到了上海用戶(hù)的反饋,登錄慢,不響應(yīng)。這其中可能出現(xiàn)問(wèn)題的環(huán)節(jié)太多了:CDN可能有問(wèn)題、Web Server或DB Server負(fù)載可能過(guò)高、業(yè)務(wù)代碼中可能有bug、中間件可能不響應(yīng)、甚至任何一個(gè)環(huán)節(jié)的物理磁盤(pán)或物理網(wǎng)卡可能出現(xiàn)了故障,等等。想要準(zhǔn)確地找到問(wèn)題所在,即使不經(jīng)一番寒徹骨,八成也要先打個(gè)冷戰(zhàn)。
How:這里有幾個(gè)難點(diǎn)是:
1、在不修改用戶(hù)代碼的前提下,取得代碼運(yùn)行時(shí)性能數(shù)據(jù);
2、終端用戶(hù)數(shù)據(jù)、運(yùn)行時(shí)性能數(shù)據(jù)、物理指標(biāo)數(shù)據(jù)、服務(wù)運(yùn)行指標(biāo)數(shù)據(jù),有效關(guān)聯(lián);
3、有太多需關(guān)注的點(diǎn),怎樣方便快捷地部署采集端;
4、不影響或很少影響原應(yīng)用性能。
以上也正是APM提出的需求。
一鍵式的、無(wú)干預(yù)的安裝部署與更新升級(jí),以替代繁瑣的部署與升級(jí);采用各個(gè)語(yǔ)言的底層Hook來(lái)針對(duì)性地編寫(xiě)語(yǔ)言Agent插件,以此實(shí)現(xiàn)不修改用戶(hù)代碼而取得運(yùn)行時(shí)性能數(shù)據(jù);通過(guò)主機(jī)、應(yīng)用、服務(wù)、請(qǐng)求的惟一標(biāo)識(shí),來(lái)進(jìn)行有效的數(shù)據(jù)關(guān)聯(lián);通過(guò)特有的數(shù)據(jù)采樣算法來(lái)達(dá)到2%以下的性能影響;一體化的數(shù)據(jù)模型,以替代密集的數(shù)據(jù)孤島。這段特征,描述的是云智慧透視寶的Smart Agent。(同樣,實(shí)現(xiàn)細(xì)節(jié)請(qǐng)待后文。)
?
5. Analytics / Reporting
What:分析與報(bào)告
Why:簡(jiǎn)單地講,APM對(duì)數(shù)據(jù)有兩點(diǎn)要求:
1、數(shù)據(jù)處理要及時(shí),必要時(shí)候要做到實(shí)時(shí)的處理,問(wèn)題可能隨時(shí)都會(huì)發(fā)生;
2、數(shù)據(jù)的分析報(bào)告要精確,大量的數(shù)據(jù)本身是無(wú)價(jià)值的,按照業(yè)務(wù)模型進(jìn)行精確分析、預(yù)測(cè)才有其價(jià)值體現(xiàn)。
How:APM數(shù)據(jù)是天然的大數(shù)據(jù),符合4V特征。因此難點(diǎn)幾乎與大數(shù)據(jù)處理的難點(diǎn)相重合:
1、數(shù)據(jù)模型語(yǔ)言要統(tǒng)一
2、數(shù)據(jù)存儲(chǔ)與查詢(xún)
3、大量復(fù)雜數(shù)據(jù)的關(guān)系建模
可以看到,云智慧透視寶架構(gòu)中Pipe Cluster的設(shè)計(jì)是對(duì)流數(shù)據(jù)的處理的核心部分,分布式、集群部署的Pipe Worker可實(shí)現(xiàn)實(shí)時(shí)的消息消費(fèi),同時(shí)基于此架構(gòu)的Data Platform與Alter Engine可實(shí)時(shí)對(duì)任意維度的數(shù)據(jù)進(jìn)行分析與預(yù)警。目前數(shù)據(jù)采集量720億條/每天,共存儲(chǔ)200,000億條數(shù)據(jù)。(后續(xù)將對(duì)此架構(gòu)進(jìn)行專(zhuān)文介紹。)
下圖是對(duì)比了國(guó)內(nèi)外APM行業(yè)的各廠(chǎng)商對(duì)以上APM模型中五個(gè)層次的認(rèn)識(shí)與支持程度:
轉(zhuǎn)載于:https://www.cnblogs.com/beautiful-code/p/6124558.html
總結(jié)
以上是生活随笔為你收集整理的什么是真正的APM?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: selenium IE 浏览器驱动下载地
- 下一篇: (十七)linux网络命令 vconfi