轉自: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
-
打開 IntelliJ IDEA Terminal 中,執行輸入命令:
git submodule init
,初始化子模塊。git submodule update
,更新子模塊。mvn package -Dmaven.test.skip=true
,進行編譯。這個編譯的過程中,依賴 npm環境。一般情況下,我們不需要編譯 SkyWalking UI 項目,所以我們可以把apm-webapp/pom.xml
的如下部分,進行注釋掉。
-
設置 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
-
安裝 ElasticSearch 6.x 因為 SkyWalking 的 Tracing 的數據存儲在它上面。具體的安全過程,胖友看看 《ElasticSearch 6.x 學習筆記:1.下載安裝與配置》 。
-
運行
oap-server
的server-starter
的org.apache.skywalking.oap.server.starter.OAPServerStartUp
的#main(args)
方法,啟動 SkyWalking OAP Server 。 -
啟動成功日志。
2018-11-19 17:12:26,331 - org.eclipse.jetty.server.Server - 71 [main] INFO [] - Started @5389ms
5. 啟動 SkyWalking UI
- 運行
apm-webapp
的org.apache.skywalking.apm.webapp.ApplicationStartUp
的#main(args)
方法,啟動 SkyWalking UI 。 - 瀏覽器打開
http://127.0.0.1:8080
,輸入賬號密碼admin / admin
進行登錄。
6. 啟動 SkyWalking Agent
- 在
skywalking-agent
目錄下,我們可以看到編譯出來的skywalking-agent.jar
- 使用 Spring Boot 創建一個簡單的 Web 項目,注意端口不要使用 8080 ,因為 SkyWalking UI 使用了 8080 端口。類似如下 :
-
友情提示 : 這里一定要注意下 。創建的 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 目錄的絕對路徑。如下圖 :
-T 1C clean package -Dmaven.test.skip=true -Dmaven.compile.fork=true
。
- 如果在【 第三步 】的調試斷點停住,說明 Agent 啟動 成功 。
考慮到可能我們會在 Agent 上增加代碼注釋,這樣每次不得不重新編譯 Agent 。可以配置如下圖,自動編譯 Agent :
-T 1C clean package -Dmaven.test.skip=true -Dmaven.compile.fork=true
。
- 另外,使用 IntelliJ IDEA Remote 遠程調試,也是可以的。如下圖 :
666. 彩蛋
因為准備重新讀 SkyWalking 6.x 的代碼,所以又簡單的整理了下,這次的完成度更低,哈哈哈哈:
另外,超級推薦看看胖友在錄制的 SkyWalking 的視頻,快來點擊傳送門 。