APM監控--(一) 分散式系統服務跟蹤技術選型參考
阿新 • • 發佈:2018-12-24
選型目的
隨著公司業務的與日俱增,各個系統也越來越複雜,服務間的呼叫,服務的依賴,以及分析服務的效能問題也越棘手,因此引入服務追蹤系統尤為重要。現有的服務追蹤體系,基本都是參考Google的Dapper的體系來做的。通過跟蹤請求的處理過程,來對應用系統在前後端處理、服務端呼叫的效能消耗進行跟蹤(每個請求的完整呼叫鏈路,收集呼叫鏈路上每個服務的效能資料),方便工程師能夠快速定位問題。
主要選型技術
Zipkin
Pinpoint
一,Zipkin
簡介
twitter開源出來的,參考Dapper的體系實現,為分散式鏈路呼叫監控系統,聚合各業務系統呼叫延遲資料,達到鏈路呼叫監控跟蹤的目的。實現
二,Pinpoint
簡介
pinpoint是開源在github上的一款APM監控工具,它是用Java編寫的,用於大規模分散式系統監控。它對效能的影響最小(只增加約3%資源利用率),安裝agent是無侵入式的。實現
通過JavaAgent的機制來做位元組碼程式碼植入,實現加入traceid和抓取效能資料的目的。三,對比
侵入性
pinPoint採用的是Java Agent向節點應用指定的函式前注入before和after邏輯,向伺服器傳送訊息,因此基本不用修改程式碼,只需簡單修改一下配置;--零侵入zipKin採用的是布點等方式,需要修改程式原始碼進行預埋點,相對麻煩一點;
dubbo實現Filter、http新增攔截器等方式進行布點。 ---侵入、更靈活
效能
Pinpoint 採用二進位制格式、非同步、UDP的方式進行取樣,zipkin非同步傳輸。擴充套件性
pinPoint原理是Java Agent,因此支援的模組不多,如下:• Tomcat 6/7/8, Jetty 8/9
• Spring, Spring Boot
• Apache HTTP Client 3.x/4.x, JDK HttpConnector, GoogleHttpClient, OkHttpClient, NingAsyncHttpClient
• Thrift Client, Thrift Service
• MySQL, Oracle, MSSQL, CUBRID, DBCP, POSTGRESQL
• Arcus, Memcached, Redis
• iBATIS, MyBatis
• gson, Jackson, Json Lib
• log4j, Logback
zipKin基本可以支援所有的應用、所有的語言,並接提供了各種客戶端,例如java的brave客戶端,js的zipkin-js客戶端
資料展示
zipKin提供最簡單的展示介面,只是簡單的展示鏈路所用時間;
pinPoint的展示介面要豐富的多,並且提供各種統計方式;
相關部署手冊: