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》

  1. 在 IntelliJ IDEA Terminal 中,执行 mvn compile -Dmaven.test.skip=true 进行编译。

  2. 设置 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 调试环境。

  1. 在 IntelliJ IDEA Terminal 中,执行 mvn compile -Dmaven.test.skip=true 进行编译。在 /packages/skywalking-agent 目录下,我们可以看到编译出来的 Agent :

  2. 使用 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 环境搭建完成,胖友们可以起飞,源码读起来。

这会是个系列文章,笔者会慢慢更新。

如下是笔者对代码量和用途的简单整理,完善度比较低,可能有一丢丢的帮助 :


©著作权归作者所有:来自51CTO博客作者mb5ff80520dfa04的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 分布式事务 TCC-Transaction 源码分析 —— 项目实战
  2. 注册中心 Eureka 源码解析 —— 项目结构简介
  3. 给Python初学者的最好练手项目,进来看就对了!
  4. 小奎因的 PYTHON 项目部署与调度直播分享来了
  5. 项目里文件名永远不要用中文!永远不要!
  6. P2P网贷信用评分项目分享(一)
  7. 同学,你这简历上没项目啊!
  8. 大学历经几十个落地项目,小鹿教科书式经验总结!
  9. 老大,我可以在实际项目中尝试新技术吗?

随机推荐

  1. php之接口与前端数据交互实现示例代码
  2. 一起看看php实现产品加入购物车功能(1)
  3. 了解php操作redis的几种常用方法
  4. 几款你绝对不知道的PHP集成开发环境软件
  5. PHP session如何实现购物车功能
  6. PHP如何操作json?方法介绍
  7. 实现详解Ajax+php数据交互并且局部刷新页
  8. 实现简单的php购物车代码
  9. 十分钟带你了解PHP实现爬虫的过程
  10. PHP与Web页面交互操作实例解析