1. 依赖工具

  • Maven

  • Git

  • JDK 8

    艿艿:注意,JDK 的版本一定要是 8 ,不然执行 maven package命令时,会发生报错。

  • IntelliJ IDEA

  • NPM

    艿艿:关于它的安装,胖友自己查询下噢。记得安装 nvm 。

2. 源码拉取

从官方仓库 https://github.com/apache/incubator-skywalkingFork 出属于自己的仓库。为什么要 Fork ?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。

使用 IntelliJ IDEA 从 Fork 出来的仓库拉取代码。拉取完成后,Maven 会下载依赖包,可能会花费一些时间,耐心等待下。

本文基于 master 分支,使用 SkyWalking 6.0.0-beta-SNAPSHOT 版本。

3. 编译 SkyWalking

参考 《官方文档 —— How to build》

  1. 打开 IntelliJ IDEA Terminal 中,执行输入命令:

    1. git submodule init ,初始化子模块。
    2. git submodule update ,更新子模块。
    3. mvn package -Dmaven.test.skip=true ,进行编译。这个编译的过程中,依赖 npm 环境。一般情况下,我们不需要编译 SkyWalking UI 项目,所以我们可以把 apm-webapp/pom.xml的如下部分,进行注释掉。
  2. 设置 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

  1. 安装 ElasticSearch 6.x 因为 SkyWalking 的 Tracing 的数据存储在它上面。具体的安全过程,胖友看看 《ElasticSearch 6.x 学习笔记:1.下载安装与配置》 。

  2. 运行 oap-server 的 server-starter 的  org.apache.skywalking.oap.server.starter.OAPServerStartUp 的 #main(args) 方法,启动 SkyWalking OAP Server 。

  3. 启动成功日志。

    2018-11-19 17:12:26,331 - org.eclipse.jetty.server.Server - 71 [main] INFO  [] - Started @5389ms

5. 启动 SkyWalking UI

  1. 运行 apm-webapp 的  org.apache.skywalking.apm.webapp.ApplicationStartUp 的 #main(args) 方法,启动 SkyWalking UI 。
  2. 浏览器打开 http://127.0.0.1:8080 ,输入账号密码 admin / admin 进行登录。

6. 启动 SkyWalking Agent

  1. 在 skywalking-agent 目录下,我们可以看到编译出来的 skywalking-agent.jar :

  2. 使用 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 目录的绝对路径。如下图 :

如果在【第三步】的调试断点停住,说明 Agent 启动成功


考虑到可能我们会在 Agent 上增加代码注释,这样每次不得不重新编译 Agent 。可以配置如下图,自动编译 Agent :

  • -T 1C clean package -Dmaven.test.skip=true -Dmaven.compile.fork=true 。

另外,使用 IntelliJ IDEA Remote 远程调试,也是可以的。如下图 :


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

更多相关文章

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

随机推荐

  1. 如何控制html代码中DL标签的颜色?
  2. html提示框插件
  3. IE旧版本如何让HTML4转换并且支持HTML5的
  4. PHP选择具有特定宽度的图像并构建网格
  5. 【转载】HTML5 中的一些新特性
  6. 使用img src加载图像会在Mozilla / Chrom
  7. 工作中遇到的几个CSS样式表的问题
  8. 解析HTML前期准备工作备忘
  9. 2016.3.7__HTML 基础_第一天
  10. HTML5--1,html5的生前身后