鏈路追蹤 SkyWalking 原始碼分析 —— 除錯環境搭建

芋道原始碼發表於2019-02-21

點選上方“芋道原始碼”,選擇“設為星標

做積極的人,而不是積極廢人!

原始碼精品專欄

 

摘要: 原創出處 http://www.iocoder.cn/SkyWalking/build-debugging-environment/ 「芋道原始碼」歡迎轉載,保留摘要,謝謝!

本文主要基於 SkyWalking 3.2.6 正式版

  • 1. 依賴工具

  • 2. 原始碼拉取

  • 3. 啟動 SkyWalking Collector

  • 4. 啟動 SkyWalking Agent

  • 5. 啟動 SkyWalking Web UI

  • 6. 彩蛋


1. 依賴工具

  • Maven

  • Git

  • JDK

  • IntelliJ IDEA

2. 原始碼拉取

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

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

本文基於 master 分支。

3. 啟動 SkyWalking Collector

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

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

  2. 設定 gRPC 的自動生成的程式碼目錄,為原始碼目錄 :

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

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

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

  • 640?wx_fmt=jpeg

執行 org.skywalking.apm.collector.bootCollector.BootStartUp 的 #main(args) 方法,啟動 Collector 。

訪問 http://127.0.0.1:10800/agent/jetty 地址,返回 ["localhost:12800/"] ,說明啟動成功

4. 啟動 SkyWalking Agent

感謝 吳晟 指導如何搭建 Agent 除錯環境。

  1. 在 IntelliJ IDEA Terminal 中,執行 mvn compile -Dmaven.test.skip=true 進行編譯。在 /packages/skywalking-agent 目錄下,我們可以看到編譯出來的 Agent :

    640?wx_fmt=jpeg
  2. 使用 Spring Boot 建立一個簡單的 Web 專案。類似如下 :

    640?wx_fmt=jpeg

    友情提示 :這裡一定要注意下。建立的 Web 專案,使用 IntelliJ IDEA 的選單 File / New / Module 或 File / New / Module from Existing Sources ,保證 Web 專案和 skywalking 專案平級。這樣,才可以使用 IntelliJ IDEA 除錯 Agent 。

  • 640?wx_fmt=jpeg
  • 640?wx_fmt=jpeg

在 org.skywalking.apm.agent.SkyWalkingAgent 的 #premain(…) 方法,打上除錯斷點。

執行 Web 專案的 Application 的 #main(args) 方法,並增加 JVM 啟動引數,-javaagent:/path/to/skywalking-agent/skywalking-agent.jar/path/to 引數值為上面我們編譯出來的 /packages/skywalking-agent 目錄的絕對路徑。如下圖 :

640?wx_fmt=jpeg

如果在【第三步】的除錯斷點停住,說明 Agent 啟動成功


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

640?wx_fmt=jpeg
  • -T 1C clean package -Dmaven.test.skip=true -Dmaven.compile.fork=true 。


另外,使用 IntelliJ IDEA Remote 遠端除錯,也是可以的。如下圖 :

640?wx_fmt=jpeg

5. 啟動 SkyWalking Web UI

考慮到除錯過程中,我們要看下是否收集到追蹤日誌,可以安裝 SkyWalking Web UI 進行檢視。

參考 《官方文件 —— Sky Walking Web UI》 安裝。

666. 彩蛋

SkyWalking 環境搭建完成,胖友們可以起飛,原始碼讀起來。

這會是個系列文章,筆者會慢慢更新。

如下是筆者對程式碼量和用途的簡單整理,完善度比較低,可能有一丟丟的幫助 :

640?wx_fmt=jpeg




歡迎加入我的知識星球,一起探討架構,交流原始碼。加入方式,長按下方二維碼噢

640?wx_fmt=jpeg

已在知識星球更新原始碼解析如下:

640?wx_fmt=png

640?

640?wx_fmt=png

如果你喜歡這篇文章,喜歡,轉發。

生活很美好,明天見(。・ω・。)ノ♡

相關文章