開源APM工具

 Application Performance Management 


相對於傳統的監控軟件(Falcon、Zabbix)的區別,APM跟關注在對於系統內部執行、系統間調用的性能瓶頸分析,這樣更有利於定位到問題的具體原因,傳統監控軟件只提供一些零散的監控點和指標,就算告警了也不知道問題是出在哪裏。

現代APM體系,基本都是參考Google的Dapper(大規模分佈式系統的跟蹤系統)的體系來做的。
通過跟蹤請求的處理過程,來對應用系統在前後端處理、服務端調用的性能消耗進行跟蹤,關於Dapper的介紹(Dapper,大規模分佈式系統的跟蹤系統 by bigbully)可以看這個鏈接:http://bigbully.github.io/Dapper-translation/


我所知道相對有名的APM系統主要有以下幾個:
1、Pinpoint
github地址:https://github.com/naver/pinpoint
是用JAVA開發的,在這個項目的主頁還有些別的監控項目也不錯https://github.com/naver/,這個是通過JavaAgent的機制來做字節碼代碼植入,實現加入traceid和抓取性能數據的目的。
NewRelic、Oneapm之類的工具在java平臺上的性能分析也是類似的機制。

2、Zipkin
官網:https://zipkin.io/ 
github地址:https://github.com/openzipkin/zipkin
這個是twitter開源出來的,也是參考Dapper的體系來做的。

Zipkin的java應用端是通過一個叫Brave的組件來實現對應用內部的性能分析數據採集。
Brave的github地址:https://github.com/openzipkin/brave

這個組件通過實現一系列的java攔截器,來做到對http/servlet請求、數據庫訪問的調用過程跟蹤。
然後通過在spring之類的配置文件里加入這些攔截器,完成對java應用的性能數據採集。

3、CAT
github地址:https://github.com/dianping/cat
這個是大衆點評開源出來的,實現的功能也還是蠻豐富的,國內也有一些公司在用了。
不過他實現跟蹤的手段,是要在代碼裏硬編碼寫一些“埋點”,也就是侵入式的。
這樣做有利有弊,好處是可以在自己需要的地方加埋點,比較有針對性;壞處是必須改動現有系統,很多開發團隊不願意。

4、SkyWalking
github地址:https://github.com/apache/incubator-skywalking
這也是一個對JAVA分佈式應用程序集羣的業務運行情況進行追蹤、告警和分析的系統。
 

 

5、Xhprof/Xhgui
這兩個工具的組合,是針對PHP應用提供APM能力的工具,也是非侵入式的。
Xhprof github地址:https://github.com/preinheimer/xhprof
Xhgui github地址:https://github.com/perftools/xhgui
 

 

參考:https://www.zhihu.com/question/27994350

 

https://blog.csdn.net/mbugatti/article/category/6548054


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章