在spring boot中三分鍾上手apache頂級分布式鏈路追蹤系統skywalking


原文:https://juejin.im/post/5cd10e81e51d453b560f2d53

 

 

skywalking在apache里全票通過成為了apache頂級鏈路追蹤系統

項目地址:github.com/apache/skyw… 官方文檔:github.com/apache/skyw…

雖然官方文檔很全,但是中文文檔目前還沒完全翻譯過來,研究文檔需要花費一些時間,下面作者整理總結了官方文檔,可以幫助讀者快速上手

skywalking擁有豐富的三方庫追蹤支持,參考: apm-sdk-plugin

常用的組件比如dubbo, httpclient, rocketmq, jdbc, hystrix等都已官方支持了

 

為了快速啟動項目,會使用docker技術

下載編譯

官方文檔:github.com/apache/skyw… 下載源碼,並下載依賴的git子模塊

git clone https://github.com/apache/skywalking.git
git submodule init
git submodule update
復制代碼

執行編譯

mvn clean package -Dmaven.test.skip=true
復制代碼

首次編譯需要下載依賴,等待的時間可能會久一些 出現下面的提示就是編譯成功了

 

查看dist目錄里的編譯結果

 

可以看到skywalking的部署包成功生成了

構建skywalking運行的docker鏡像

docker時區修改為 Asia/Shanghai

進入docker目錄,編輯docker-compose.yml,為elasticsearch, oap, ui服務添加時區環境變量為 Asia/Shanghai 核心代碼如下

environment:  TZ: Asia/Shanghai 復制代碼

完整的docker-compose.yml已上傳github,參考:docker-compose.yml

構建docker鏡像

執行命令 make build 開始構建docker鏡像

 

使用docker images命令查看構建的容器

 

可以看到skywalking部署需要的ui和oap服務已經構建成功了

啟動skywalking服務

使用命令docker-compose up -d啟動服務

 

在瀏覽器里打開 ip:8080 查看效果

Snipaste_2019-05-07_09-18-50使用默認的用戶名和密碼 admin admin登陸管理后台

 

編寫測試代碼

可以使用現成的spring boot項目,也可以在 start.spring.io/ 創建一個新的spring boot項目

下面編寫幾個請求來試用下skywalking的追蹤功能 核心案例代碼如下

普通請求

@RequestMapping("test1") public String test1() { return "Hello World"; } 復制代碼

異常請求

@RequestMapping("test2") public String test2() { if (true) { throw new RuntimeException("a exception occured"); } return "Hello World2"; } 復制代碼

超時請求

@RequestMapping("test3") public String test3() throws InterruptedException { Thread.sleep(10000); return "Hello World3"; } 復制代碼

將項目打成jar,帶上skywalking啟動

把skywalking項目目錄里的skywalking-agent復制一份到項目里 然后修改skywalking-agent/config/agent.config配置文件

skywalking-config主要是修改上圖里的項目名稱,這樣在控制后台就好標識出這個項目了,比如把配置 agent.service_name修改成myskywalking

 

啟動spring boot項目

mvn clean package -Dmaven.test.skip=true java -javaagent:項目所在目錄/skywalking-agent/skywalking-agent.jar -jar target/myskywalking-0.0.1-SNAPSHOT.jar 復制代碼

然后在瀏覽器里請求上面編寫的測試代碼,可以使用curl,比如:

curl -k -vvv http://127.0.0.1:8080/test/test1
curl -k -vvv http://127.0.0.1:8080/test/test2
curl -k -vvv http://127.0.0.1:8080/test/test3
復制代碼

然后在skywalking管理后台查看追蹤到的數據

 

在追蹤頁面可以看到請求

默認skywalking會抓取100%的請求,可以修改agent.config配置文件中的agent.sample_n_per_3_secs配置項配置抓取的請求的百分比

 

查看異常的請求

可以看到異常請求調用的堆棧信息被記錄,這個在排查問題的過程中一般都會用到

 

一些注意的點

如果使用的組建沒有內置的追蹤支持,可以自行編寫插件實現,插件編寫參考:Java-Plugin-Development-Guide.md

docker容器里的時區要設置成和瀏覽器所在的機器的時區一致,比如 Aisa/Shanghai,不一致可能無法在瀏覽器里查看追蹤的數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM