点击上方“芋道源码”,选择“设为星标”
做积极的人,而不是积极废人!
源码精品专栏
摘要: 原创出处 http://www.iocoder.cn/SkyWalking/6/build-debugging-environment/ 「芋道源码」欢迎转载,保留摘要,谢谢!
1. 依赖工具
2. 源码拉取
3. 编译 SkyWalking
4. 启动 SkyWalking OAP Server
5. 启动 SkyWalking UI
6. 启动 SkyWalking Agent
666. 彩蛋
1. 依赖工具
Maven
Git
JDK 8
艿艿:注意,JDK 的版本一定要是 8 ,不然执行
maven package
命令时,会发生报错。IntelliJ IDEA
NPM
艿艿:关于它的安装,胖友自己查询下噢。记得安装 nvm 。
2. 源码拉取
从官方仓库 https://github.com/apache/incubator-skywalking Fork
出属于自己的仓库。为什么要 Fork
?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。????
使用 IntelliJ IDEA
从 Fork
出来的仓库拉取代码。拉取完成后,Maven
会下载依赖包,可能会花费一些时间,耐心等待下。
本文基于 master
分支,使用 SkyWalking 6.0.0-beta-SNAPSHOT
版本。
3. 编译 SkyWalking
参考 《官方文档 —— How to build》
打开 IntelliJ IDEA Terminal 中,执行输入命令:
git submodule init
,初始化子模块。git submodule update
,更新子模块。mvn package -Dmaven.test.skip=true
,进行编译。这个编译的过程中,依赖 npm 环境。一般情况下,我们不需要编译 SkyWalking UI 项目,所以我们可以把apm-webapp/pom.xml
的如下部分,进行注释掉。
设置 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
安装 ElasticSearch 6.x 因为 SkyWalking 的 Tracing 的数据存储在它上面。具体的安全过程,胖友看看 《ElasticSearch 6.x 学习笔记:1.下载安装与配置》 。
运行
oap-server
的server-starter
的org.apache.skywalking.oap.server.starter.OAPServerStartUp
的#main(args)
方法,启动 SkyWalking OAP Server 。启动成功日志。
2018-11-19 17:12:26,331 - org.eclipse.jetty.server.Server - 71 [main] INFO [] - Started @5389ms
5. 启动 SkyWalking UI
运行
apm-webapp
的org.apache.skywalking.apm.webapp.ApplicationStartUp
的#main(args)
方法,启动 SkyWalking UI 。浏览器打开
http://127.0.0.1:8080
,输入账号密码admin / admin
进行登录。
6. 启动 SkyWalking Agent
在
skywalking-agent
目录下,我们可以看到编译出来的skywalking-agent.jar
:使用 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 远程调试,也是可以的。如下图 :
欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:
已在知识星球更新源码解析如下:
最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。
提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
如果你喜欢这篇文章,喜欢,转发。
生活很美好,明天见(。・ω・。)ノ♡