skywalking在apache裏全票經過成爲了apache頂級鏈路追蹤系統java
項目地址:github.com/apache/skyw… 官方文檔:github.com/apache/skyw…git
雖然官方文檔很全,可是中文文檔目前還沒徹底翻譯過來,研究文檔須要花費一些時間,下面做者整理總結了官方文檔,能夠幫助讀者快速上手github
skywalking擁有豐富的三方庫追蹤支持,參考: apm-sdk-plugin spring
爲了快速啓動項目,會使用docker技術docker
官方文檔:github.com/apache/skyw… 下載源碼,並下載依賴的git子模塊shell
git clone https://github.com/apache/skywalking.git
git submodule init
git submodule update
複製代碼
執行編譯apache
mvn clean package -Dmaven.test.skip=true
複製代碼
首次編譯須要下載依賴,等待的時間可能會久一些 出現下面的提示就是編譯成功了 瀏覽器
查看dist目錄裏的編譯結果 bash
能夠看到skywalking的部署包成功生成了app
進入docker目錄,編輯docker-compose.yml,爲elasticsearch, oap, ui服務添加時區環境變量爲 Asia/Shanghai 核心代碼以下
environment:
TZ: Asia/Shanghai
複製代碼
完整的docker-compose.yml已上傳github,參考:docker-compose.yml
執行命令 make build
開始構建docker鏡像
使用docker images命令查看構建的容器
能夠看到skywalking部署須要的ui和oap服務已經構建成功了
使用命令docker-compose up -d啓動服務
在瀏覽器裏打開 ip:8080 查看效果
可使用現成的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";
}
複製代碼
把skywalking項目目錄裏的skywalking-agent複製一份到項目裏 而後修改skywalking-agent/config/agent.config配置文件
啓動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管理後臺查看追蹤到的數據
在追蹤頁面能夠看到請求
查看異常的請求
若是使用的組建沒有內置的追蹤支持,能夠自行編寫插件實現,插件編寫參考:Java-Plugin-Development-Guide.md
docker容器裏的時區要設置成和瀏覽器所在的機器的時區一致,好比 Aisa/Shanghai,不一致可能沒法在瀏覽器裏查看追蹤的數據