SkyWalking 6.x 源碼分析 —— 調試環境搭建 (非原創)


轉自:https://www.codercto.com/a/39625.html  

  從官方倉庫 https://github.com/apache/incubator-skywalking Fork 出屬於自己的倉庫。為什么要 Fork ?既然開始閱讀、調試源碼,我們可能會寫一些注釋,有了自己的倉庫,可以進行自由的提交。:smiling_imp:

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

  本文基於 master 分支,使用 SkyWalking 6.0.0-beta-SNAPSHOT 版本。

3. 編譯 SkyWalking

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

  1. 打開 IntelliJ IDEA Terminal 中,執行輸入命令:

    1. git submodule init ,初始化子模塊。
    2. git submodule update ,更新子模塊。
    3. mvn package -Dmaven.test.skip=true ,進行編譯。這個編譯的過程中,依賴 npm環境。一般情況下,我們不需要編譯 SkyWalking UI 項目,所以我們可以把 apm-webapp/pom.xml 的如下部分,進行注釋掉。
  2. 設置 gRPC 的 自動生成 的代碼目錄,為 源碼 目錄 :

將 apm-protocol/apm-network/target/generated-sources/protobuf 目錄下面 grpc-java 和 java 目錄 右鍵 設置為 Generated Rources Root 。 

    • 將 oap-server/server-core/target/generated-sources/protobuf 目錄下面 grpc-java 和 java 目錄 右鍵 設置為 Generated Rources Root 。
    • 將 oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/target/generated-sources/protobuf 目錄下面 grpc-java 和 java 目錄 右鍵設置為 Generated Rources Root 。

4. 啟動 SkyWalking OAP Server

  1. 安裝 ElasticSearch 6.x 因為 SkyWalking 的 Tracing 的數據存儲在它上面。具體的安全過程,胖友看看 《ElasticSearch 6.x 學習筆記:1.下載安裝與配置》 。

  2. 運行 oap-server 的 server-starter 的 org.apache.skywalking.oap.server.starter.OAPServerStartUp 的 #main(args) 方法,啟動 SkyWalking OAP Server 。

  3. 啟動成功日志。

    2018-11-19 17:12:26,331 - org.eclipse.jetty.server.Server - 71 [main] INFO [] - Started @5389ms

5. 啟動 SkyWalking UI

  1. 運行 apm-webapp 的 org.apache.skywalking.apm.webapp.ApplicationStartUp 的 #main(args) 方法,啟動 SkyWalking UI 。
  2. 瀏覽器打開 http://127.0.0.1:8080 ,輸入賬號密碼 admin / admin 進行登錄。
  3.  

     

6. 啟動 SkyWalking Agent

  1. 在 skywalking-agent 目錄下,我們可以看到編譯出來的 skywalking-agent.jar

 

 

  1. 使用 Spring Boot 創建一個簡單的 Web 項目,注意端口不要使用 8080 ,因為 SkyWalking UI 使用了 8080 端口。類似如下 :

  1. 友情提示 : 這里一定要注意下 。創建的 Web 項目,使用 IntelliJ IDEA 的 菜單 File / New / Module 或 File / New / Module from Existing Sources , 保證 Web 項目和 SkyWalking 項目平級 。這樣,才可以使用 IntelliJ IDEA 調試 Agent 。

 

 

  1. 在 org.skywalking.apm.agent.SkyWalkingAgent 的 #premain(...) 方法,打上調試斷點。

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

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

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

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

 

 

 

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

 

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

 

 

666. 彩蛋

 

 

因為准備重新讀 SkyWalking 6.x 的代碼,所以又簡單的整理了下,這次的完成度更低,哈哈哈哈:

另外,超級推薦看看胖友在錄制的 SkyWalking 的視頻,快來點擊傳送門 。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM