原文: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,不一緻可能無法在浏覽器裡檢視追蹤的資料
看完打開支付寶掃一掃領個紅包吧!