分散式追蹤 & APM 系統 SkyWalking 源碼分析——調試環境搭建

1. 依賴工具

  • Maven

  • Git

  • JDK

  • IntelliJ IDEA

2. 源碼拉取

從官方倉庫 github.com/OpenSkywalk… Fork出屬於自己的倉庫。為什麼要 Fork?既然開始閱讀、調試源碼,我們可能會寫一些註釋,有了自己的倉庫,可以進行自由的提交。

使用 IntelliJ IDEAFork出來的倉庫拉取代碼。拉取完成後,Maven會下載依賴包,可能會花費一些時間,耐心等待下。

本文基於 master分支。

3. 啟動 SkyWalking Collector

參考 《官方文檔 —— How to build》

  1. 在 IntelliJ IDEA Terminal 中,執行 mvn compile -Dmaven.test.skip=true進行編譯。

    Advertisements

  2. 設置 gRPC 的自動生成的代碼目錄,為源碼目錄 :

  • /apm-network/target/generated-sources/protobuf/ 下的 grpc-javajava目錄

  • /apm-collector-remote/collector-remote-grpc-provider/target/generated-sources/protobuf/ 下的 grpc-java
    java目錄

從 3.2 開始,網路通訊協議引入 GRPC ,所以增加上述的步驟

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 目錄的絕對路徑。如下圖 :

.

  1. 如果在【第三步】的調試斷點停住,說明 Agent 啟動成功。


考慮到可能我們會在 Agent 上增加代碼註釋,這樣每次不得不重新編譯 Agent 。可以配置如下圖,自動編譯 Agent :

.

  • T 1C clean package -Dmaven.test.skip=true -Dmaven.compile.fork=true


另外,使用 IntelliJ IDEA Remote 遠程調試,也是可以的。如下圖 :

.

Advertisements

你可能會喜歡