前言
在微服務開發如火如荼的今天,微服務也引入了一些額外問題。微服務開發&運維過程中會經常調用到其他服務暴露的接口,項目足夠大時,內部調用會非常復雜,這種復雜性會導致很難去定位問題,出現問題的時候容易互相推諉進而導致效率低下,所以需要在微服務構建的系統中引入服務調用鏈路追蹤工具,方便開發人員快速定位問題。
解決方案對比
目前市面上比較流行的鏈路追蹤工具有Zipkin、CAT、Pinpoint、SkyWalking等等
簡單介紹
- Zipkin是Twitter開源的調用鏈分析工具,目前基於SpringCloud Sleuth得到了廣泛的使用,輕量,使用部署簡單。
- SkyWalking是本土開源的基於字節碼注入的調用鏈分析,以及應用監控分析工具。特點是支持多種插件,UI友好,非侵入式接入。目前已加入Apache孵化器。
- CAT是大眾點評開源的基於編碼和配置的調用鏈分析,應用監控分析,日志采集,監控報警等一系列的監控平台工具。
- Pinpoint是韓國開源的基於字節碼注入的調用鏈分析,以及應用監控分析工具。特點是支持多種插件,UI功能強大,接入端無代碼侵入。
對比
截止至2020/04/20
類別 | SkyWalking | CAT | Zipkin | Pinpoint |
---|---|---|---|---|
可視化界面 | 是 | 是 | 是 | 是 |
報表 | 豐富 | 很豐富 | 近似於無 | 有 |
接入方式 | 非侵入式 | 侵入式 | 侵入式 | 非侵入式 |
UI是否友好 | 是 | 是 | 否 | 是 |
顆粒度 | 方法級 | 代碼級 | 接口級 | 方法級 |
數據存儲 | ES,H2 | mysql,hdfs | ES,mysql,Cassandra,內存 | Hbase |
社區活躍度 | 13.1k star | 13.1k star | 12.7k star | 10.2k star |
實現方式 | 攔截請求,發送(HTTP,mq)數據至zipkin服務 | java探針,字節碼增強 | java探針,字節碼增強 | 代碼埋點(攔截器,注解,過濾器等) |
下載
ElasticSearch7 API變更比較多,故官網拆分出兩個包,可根據ElasticSearch版本選擇下載
下載頁
SkyWalking 7.0.0
SkyWalking 7.0.0-ES7版本
所有歷史版本
- 可以在歸檔庫中,找到SkyWalking所有的歷史發布版本
- 孵化器階段發行版歸檔庫包含SkyWalking還在孵化器時的發布版本。
安裝&啟動
-
將下載好的壓縮包解壓至用戶目錄
-
修改config/application.yml修改配置,由於我本地安裝的是ES7版本,故將儲存引擎由默認的H2修改為ElasticSearch7
-
啟動SkyWalking之前確保ElasticSearch服務啟動成功,然后執行oapService.bat(linux下執行oapService.sh)再執行webappService.bat(webappService.sh),或者直接執行startup.bat(startup.sh)
-
確保啟動無誤之后瀏覽器訪問localhost:8080)
端口可在webapp/webapp.yml中修改
Java接入
將skywalking根目錄下的agent目錄拷貝至用戶目錄,新建一個spring-boot項目,
在啟動JVM參數中添加以下配置
-javaagent:D:\Apache-Skywalking\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=你的項目名
啟動項目,並訪問一個接口可以看到如下拓撲圖
本地新建了一個服務,如果是微服務項目服務間調用會非常明顯的展示出來