live-demo
與 skywalking
源碼聯調找一個目錄執行以下命令java
git clone https://github.com/apache/skywalking.git # clone skywalking項目 cd skywalking # 進入skywalking目錄 git checkout v8.4.0 # 切換到v8.4.0版本 git checkout -b new_v8.4.0 # 建立一個新分支 git submodule init # 初始化子模塊 git submodule update # 更新子模塊,注意:可能由於網絡問題失敗,若是失敗屢次嘗試便可 ./mvnw clean package -DskipTests # 執行maven命令,構建skywalking項目,時間會比較長,耐心等待... cd .. # 進入上級目錄 git clone https://github.com/SkyAPMTest/skywalking-live-demo # clone live-demo skywalking案例項目 cd skywalking-live-demo # 進入skywalking-live-demo目錄 mvn clean package # 構建demo項目 cd .. # 進入上級目錄
構建成功後會在以下兩個目錄生成安裝包git
. ├── skywalking │ └── dist │ │ ├── apache-skywalking-apm-bin-es7.tar.gz # es7的安裝包 │ │ └── apache-skywalking-apm-bin.tar.gz └── skywalking-live-demo └── live-demo-assembly.tar.gz # demo項目
skywalking
部分模塊構建# 打包 agent 模塊,會出現skywalking-agent目錄 ./mvnw package -Pagent -DskipTests # 打包 agent 模塊,而後打包到dist目錄 ./mvnw package -Pagent,dist -DskipTests # 打包 backend 模塊,而後打包到dist目錄 ./mvnw package -Pbackend,dist -DskipTests # 打包 UI 模塊,而後打包到dist目錄 ./mvnw package -Pui,dist -DskipTests
skywalking
做爲模塊導入 skywalking-live-demo
項目IDEA
中打開 skywalking-live-demo
項目skywalking-live-demo
項目中使用 Module from Existing Sources
的方式導入 Skywalking
PS:導入 skywalking
項目的時候可能會出現 skywalking
的子模塊被忽略的狀況,可使用以下方式取消忽略github
OAP
服務執行 org.apache.skywalking.oap.server.starter.OAPServerStartUp#main
方法,啓動 OAP
服務shell
skywalking-agent
cd skywalking # 進入skywalking目錄 ./mvnw package -Pagent -DskipTests # 打包 agent 模塊,會出現skywalking-agent目錄
生成後的 skywalking-agent
目錄結構以下所示:apache
skywalking └── skywalking-agent ├── activations ├── bootstrap-plugins ├── config ├── logs ├── optional-plugins ├── optional-reporter-plugins ├── plugins └── skywalking-agent.jar
JVM
啓動參數ProjectA
、 ProjectB
、 ProjectC
、 ProjectD
項目都須要配置,這裏以 ProjectA
爲例bootstrap
-javaagent:{須要替換成項目目錄}/skywalking/skywalking-agent/skywalking-agent.jar -Dskywalking.collector.grpc_channel_check_interval=2 -Dskywalking.collector.app_and_service_register_check_interval=2 -Dcollector.discovery_check_interval=2 -Dskywalking.collector.backend_service=localhost:11800 -Dskywalking.agent.service_name=business-zone::projectA -Dskywalking.logging.level=info -Dskywalking.plugin.toolkit.log.grpc.reporter.server_host=localhost -Dskywalking.plugin.toolkit.log.grpc.reporter.server_port=11800 -Dskywalking.plugin.toolkit.log.grpc.reporter.max_message_size=10485760 -Dskywalking.plugin.toolkit.log.grpc.reporter.upstream_timeout=30
agent
斷點是否生效在 org.apache.skywalking.apm.agent.SkyWalkingAgent#premain
方法中任一語句打上斷點,啓動 ProjectA
網絡
UI
上驗證 trace
是否生成Kafka
、 Eureka
、 ProjectB
、 ProjectC
、 ProjectD
、 ProjectA
curl "http://localhost:8764/projectA/test"
$ curl "http://localhost:8764/projectA/test" {"traceId":"20b7bb868a384b7bac5130efb5f76f17.82.16244120942450001"}%
traceId
,在 UI
中查詢,能夠獲得以下結果PS:注意 ProjectA
、 ProjectB
、 ProjectC
、 ProjectD
、 Eureka
均可以在 IDEA
源碼啓動,但 Kafka
須要經過命令啓動,能夠參考 live-demo/bin/startup.sh
腳本app
無論是研究源碼執行流程仍是本身寫一些插件、擴展一些功能, debug
源碼是最基本的操做。 Skywalking
有些不同的是,它的客戶端這塊是沒法直接執行,須要附加在其餘應用上。curl
分享並記錄所學所見jvm