天天看點

在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 檢視效果

使用預設的使用者名和密碼 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,不一緻可能無法在浏覽器裡檢視追蹤的資料

看完打開支付寶掃一掃領個紅包吧!

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

繼續閱讀