live-demo 与 skywalking 源码联调构建项目找一个目录执行如下命令
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 .. # 进入上级目录构建成功后会在如下两个目录生成安装包
.├── 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 的子模块被忽略的情况,可以使用如下方式取消忽略
文章插图

文章插图
启动
OAP 服务执行 org.apache.skywalking.oap.server.starter.OAPServerStartUp#main 方法,启动 OAP 服务生成
skywalking-agentcd skywalking # 进入skywalking目录./mvnw package -Pagent -DskipTests # 打包 agent 模块,会出现skywalking-agent目录生成后的 skywalking-agent 目录结构如下所示:skywalking└── skywalking-agent ├── activations ├── bootstrap-plugins ├── config ├── logs ├── optional-plugins ├── optional-reporter-plugins ├── plugins └── skywalking-agent.jar配置项目 JVM 启动参数ProjectA 、 ProjectB 、 ProjectC 、 ProjectD 项目都需要配置,这里以 ProjectA 为例-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 脚本总结不管是研究源码执行流程还是自己写一些插件、扩展一些功能,
debug 源码是最基本的操作 。Skywalking 有些不一样的是,它的客户端这块是无法直接执行,需要附加在其他应用上 。参考文档
- skywalking-live-demo
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
