分散式追蹤 & APM 系統 SkyWalking 源碼分析——調試環境搭建
1. 依賴工具
Maven
Git
JDK
IntelliJ IDEA
2. 源碼拉取
從官方倉庫 github.com/OpenSkywalk… Fork出屬於自己的倉庫。為什麼要 Fork?既然開始閱讀、調試源碼,我們可能會寫一些註釋,有了自己的倉庫,可以進行自由的提交。
使用 IntelliJ IDEA從 Fork出來的倉庫拉取代碼。拉取完成後,Maven會下載依賴包,可能會花費一些時間,耐心等待下。
本文基於 master分支。
3. 啟動 SkyWalking Collector
參考 《官方文檔 —— How to build》
在 IntelliJ IDEA Terminal 中,執行 mvn compile -Dmaven.test.skip=true進行編譯。
Advertisements
設置 gRPC 的自動生成的代碼目錄,為源碼目錄 :
/apm-network/target/generated-sources/protobuf/ 下的 grpc-java和 java目錄
/apm-collector-remote/collector-remote-grpc-provider/target/generated-sources/protobuf/ 下的 grpc-java
和 java目錄
3.運行 org.skywalking.apm.collector.bootCollectorBootStartUp 的 #main(args)方法,啟動 Collector 。
Advertisements
4.訪問 http://127.0.0.1:10800/agent/jetty地址,返回 ["localhost:12800/"],說明啟動成功
4. 啟動 SkyWalking Agent
在 IntelliJ IDEA Terminal 中,執行 mvn compile -Dmaven.test.skip=true進行編譯。在 /packages/skywalking-agent 目錄下,我們可以看到編譯出來的 Agent :
使用 Spring Boot 創建一個簡單的 Web 項目。類似如下 :
友情提示 :這裡一定要注意下。創建的 Web 項目,使用 IntelliJ IDEA 的菜單 File / New / Module 或 File / New / Module from Existing Sources ,保證 Web 項目和 skywalking 項目平級。這樣,才可以使用 IntelliJ IDEA 調試 Agent 。
在 org.skywalking.apm.agent.SkyWalkingAgent的 #premain(...)方法,打上調試斷點。
運行Web 項目的 Application 的 #main(args)方法,並增加 JVM 啟動參數,-javaagent:/path/to/skywalking-agent/skywalking-agent.jar。/path/to參數值為上面我們編譯出來的 /packages/skywalking-agent 目錄的絕對路徑。如下圖 :
如果在【第三步】的調試斷點停住,說明 Agent 啟動成功。
考慮到可能我們會在 Agent 上增加代碼註釋,這樣每次不得不重新編譯 Agent 。可以配置如下圖,自動編譯 Agent :
T 1C clean package -Dmaven.test.skip=true -Dmaven.compile.fork=true
另外,使用 IntelliJ IDEA Remote 遠程調試,也是可以的。如下圖 :