原文: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 查看效果
使用默認的用戶名和密碼 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配置文件
主要是修改上圖里的項目名稱,這樣在控制后台就好標識出這個項目了,比如把配置 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,不一致可能無法在瀏覽器里查看追蹤的數據
