链路追踪 SkyWalking 源码分析 —— 调试环境搭建
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》
在 IntelliJ IDEA Terminal 中,执行
mvn compile -Dmaven.test.skip=true
进行编译。设置 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
目录
运行 org.skywalking.apm.collector.bootCollector.BootStartUp
的 #main(args)
方法,启动 Collector 。
访问 http://127.0.0.1:10800/agent/jetty
地址,返回 ["localhost:12800/"]
,说明启动成功。
4. 启动 SkyWalking Agent
感谢 吴晟 指导如何搭建 Agent 调试环境。
在 IntelliJ IDEA Terminal 中,执行
mvn compile -Dmaven.test.skip=true
进行编译。在 /packages/skywalking-agent 目录下,我们可以看到编译出来的 Agent :使用 Spring Boot 创建一个简单的 Web 项目。类似如下 :
友情提示 :这里一定要注意下。创建的 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 目录的绝对路径。如下图 :
如果在【第三步】的调试断点停住,说明 Agent 启动成功。
考虑到可能我们会在 Agent 上增加代码注释,这样每次不得不重新编译 Agent 。可以配置如下图,自动编译 Agent :
-T 1C clean package -Dmaven.test.skip=true -Dmaven.compile.fork=true
。
另外,使用 IntelliJ IDEA Remote 远程调试,也是可以的。如下图 :
5. 启动 SkyWalking Web UI
考虑到调试过程中,我们要看下是否收集到追踪日志,可以安装 SkyWalking Web UI 进行查看。
参考 《官方文档 —— Sky Walking Web UI》 安装。
666. 彩蛋
SkyWalking 环境搭建完成,胖友们可以起飞,源码读起来。
这会是个系列文章,笔者会慢慢更新。
如下是笔者对代码量和用途的简单整理,完善度比较低,可能有一丢丢的帮助 :
更多相关文章
- 分布式事务 TCC-Transaction 源码分析 —— 项目实战
- 注册中心 Eureka 源码解析 —— 项目结构简介
- 给Python初学者的最好练手项目,进来看就对了!
- 小奎因的 PYTHON 项目部署与调度直播分享来了
- 项目里文件名永远不要用中文!永远不要!
- P2P网贷信用评分项目分享(一)
- 同学,你这简历上没项目啊!
- 大学历经几十个落地项目,小鹿教科书式经验总结!
- 老大,我可以在实际项目中尝试新技术吗?