一. 什么是APM?
APM (Application Performance Management) 即應(yīng)用性能管理,屬于IT運(yùn)維管理(ITOM)范疇。主要是針對(duì)企業(yè) 關(guān)鍵業(yè)務(wù)的IT應(yīng)用性能和用戶體驗(yàn)的監(jiān)測、優(yōu)化,提高企業(yè)IT應(yīng)用的可靠性和質(zhì)量,保證用戶得到良好的服務(wù),降 低IT總擁有成本(TCO)。

二. 介紹
(1)追蹤一切
無論是業(yè)務(wù)服務(wù)還是微服務(wù),要做到收取流失的數(shù)據(jù),還有所有組件健康檢查,還要做到數(shù)據(jù)的分析。

服務(wù)關(guān)聯(lián)元數(shù)據(jù)
監(jiān)控是分層的,只知道一個(gè)服務(wù)有問題,并不能定位這個(gè)服務(wù)的根本原因是什么,就需要使用元數(shù)據(jù)。

服務(wù)動(dòng)態(tài)拓?fù)?/p>
隨時(shí)間的推移去變化

服務(wù)調(diào)用鏈分析

APM總體架構(gòu)

APM核心能力

性能測試

構(gòu)建“部署 + 監(jiān)控 + 告警 + 報(bào)障”閉環(huán)

告警平臺(tái)


通過故障分類系統(tǒng)、支持組,快速將接入的各監(jiān)控系統(tǒng)報(bào)障通知給相應(yīng)維護(hù)人員, 并通過配置的SLA及組織架構(gòu),對(duì)未及時(shí)響應(yīng)的報(bào)障進(jìn)行上告處理,以達(dá)到卓越運(yùn)維的目的。

大數(shù)據(jù)能力的充分釋放-自動(dòng)異常點(diǎn)檢測


比較
1.代碼入侵性
pinpoint和skywalking:基于字節(jié)碼注入技術(shù),可以做到完全的代碼無侵入。對(duì)現(xiàn)有系統(tǒng)的改造極小。
zipkin和cat:對(duì)代碼有一定的侵入性
2.社區(qū)比較
pinpoint:韓國公司開發(fā),在社區(qū)交流上會(huì)有一定滯后
skywalking:剛完成apache孵化,已成為 Apache 基金會(huì)頂級(jí)項(xiàng)目。skywalking完全由國人主導(dǎo)開發(fā),在國內(nèi)社區(qū)相當(dāng)活躍。我們能夠進(jìn)入官方群(Apache SkyWalking交流群:392443393)
2,支持語言比較
Pinpoint:只支持Java和PHP,
skywalking:支持5種語言:Java, C#, PHP, Node.js, Go。如果公司的服務(wù)涉及到多個(gè)開發(fā)語言,那么skywalking會(huì)是你更好的選擇。并且,如果你要實(shí)現(xiàn)自己的探針(比如python語言),skywalking的二次開發(fā)成本也比Pinpoint更低。
3,存儲(chǔ)比較
在大數(shù)據(jù)方面,底層存儲(chǔ)架構(gòu)決定上層功能。
pingpoint:只支持hbase,這就意味著,使用pinpoint必須有能力運(yùn)維住一套Hbase集群。
skywalking:支持es,h2,mysql,TiDb,sharding-sphere??蛇x類型比較多,可以根據(jù)自己團(tuán)隊(duì)的技術(shù)實(shí)力選擇。其實(shí)生產(chǎn)上來說還是用es的較多。
hbase和es比較,hbase強(qiáng)在存儲(chǔ)能力,es強(qiáng)在查詢能力。
4,UI比較
原生ui上比較,pinpoint要比skywalking好。
但是skywalking有一款第三方定制UI,做的又比pinpoint漂亮


5,JVM監(jiān)控
skywalking支持監(jiān)控:Heap, Non-Heap, GC(YGC和FGC)。 Pinpoint能夠監(jiān)控的指標(biāo)主要有:Heap, Non-Heap, FGC, DirectBufferMemory, MappedBufferMemory,但是沒有YGC。另外,Pinpoint還支持多個(gè)指標(biāo)同一時(shí)間點(diǎn)查看的功能。如下圖所示:
所以,對(duì)JVM的監(jiān)控方面,Pinpoint更勝一籌。
6,服務(wù)監(jiān)控
包括操作系統(tǒng),和部署的服務(wù)實(shí)例的監(jiān)控。 Pinpoint支持的維度有:CPU使用率,Open File Descriptor,數(shù)據(jù)源,活動(dòng)線程數(shù),RT,TPS。 skywalking支持的維度有:CPU使用率,SLA,RT,CPM(Call Per Minutes)。 所以,這方面兩者旗鼓相當(dāng),沒有明顯的差距。
7,跟蹤粒度比較
Pinpoint在這方面做的非常好,跟蹤粒度非常細(xì)。如下圖所示,是Pinpoint對(duì)某個(gè)接口的trace信息:

而同一個(gè)接口skywalking的trace信息如下圖所示:


通過對(duì)比發(fā)現(xiàn),在跟蹤粒度方面,Pinpoint更勝一籌。
8,過濾追蹤
Pinpoint和skywalking都可以實(shí)現(xiàn),而且配置的表達(dá)式都是基于ant風(fēng)格。 Pinpoint在Web UI上配置 filter wizard 即可自定義過濾追蹤。 skywalking通過加載apm-trace-ignore-plugin插件就能自定義過濾跟蹤,skywalking這種方式更靈活,比如一臺(tái)高配服務(wù)器上有若干個(gè)服務(wù),在共用的agent配置文件apm-trace-ignore-plugin.config中可以配置通用的過濾規(guī)則,然后通過-D的方式為每個(gè)服務(wù)配置個(gè)性化過濾。
所以,在過濾追蹤方面,skywalking更勝一籌。
總結(jié)
經(jīng)過前面對(duì)skywalking和Pinpoint全方位對(duì)比后我們發(fā)現(xiàn),對(duì)于兩款非常優(yōu)秀的APM軟件,有一種既生瑜何生亮的感覺。Pinpoint的優(yōu)勢在于:追蹤數(shù)據(jù)粒度非常細(xì)、功能強(qiáng)大的用戶界面,以及使用HBase作為存儲(chǔ)帶來的海量存儲(chǔ)能力。而skywalking的優(yōu)勢在于:非?;钴S的中文社區(qū),支持多種語言的探針,對(duì)國產(chǎn)開源軟件非常全面的支持,以及使用es作為底層存儲(chǔ)帶來的強(qiáng)大的檢索能力,并且skywalking的擴(kuò)展性以及定制化要更優(yōu)于Pinpoint:
如果你有海量的日志存儲(chǔ)需求,推薦Pinpoint。如果你更看重二次開發(fā)的便捷性,推薦skywalking。最后,參考上面的對(duì)比,結(jié)合你的需求,哪些不能妥協(xié),哪些可以舍棄,從而更好的選擇一款最適合你的APM軟件。