SkyWalking 6.x 源码分析 —— 调试环境搭建 (非原创)

Stella981
• 阅读 1020

转自:https://www.codercto.com/a/39625.html  

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

  使用 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 。 SkyWalking 6.x 源码分析 —— 调试环境搭建 (非原创)

    • 将 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 进行登录。
  3. SkyWalking 6.x 源码分析 —— 调试环境搭建 (非原创)

6. 启动 SkyWalking Agent

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

SkyWalking 6.x 源码分析 —— 调试环境搭建 (非原创)

  1. 使用 Spring Boot 创建一个简单的 Web 项目,注意端口不要使用 8080 ,因为 SkyWalking UI 使用了 8080 端口。类似如下 :

SkyWalking 6.x 源码分析 —— 调试环境搭建 (非原创)

  1. 友情提示 : 这里一定要注意下 。创建的 Web 项目,使用 IntelliJ IDEA 的 菜单 File / New / Module 或 File / New / Module from Existing Sources , 保证 Web 项目和 SkyWalking 项目平级 。这样,才可以使用 IntelliJ IDEA 调试 Agent 。SkyWalking 6.x 源码分析 —— 调试环境搭建 (非原创)

SkyWalking 6.x 源码分析 —— 调试环境搭建 (非原创)

SkyWalking 6.x 源码分析 —— 调试环境搭建 (非原创)

  1. 在 org.skywalking.apm.agent.SkyWalkingAgent 的 #premain(...) 方法,打上调试断点。

  2. 运行 Web 项目的 Application 的 #main(args) 方法,并增加 JVM 启动参数, -javaagent:/path/to/skywalking-agent/skywalking-agent.jar 。 /path/to 参数值 为上面我们编译出来的 /packages/skywalking-agent 目录的绝对路径。如下图 :

SkyWalking 6.x 源码分析 —— 调试环境搭建 (非原创)

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

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

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

SkyWalking 6.x 源码分析 —— 调试环境搭建 (非原创)

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

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

SkyWalking 6.x 源码分析 —— 调试环境搭建 (非原创)

666. 彩蛋

SkyWalking 6.x 源码分析 —— 调试环境搭建 (非原创)

因为准备重新读 SkyWalking 6.x 的代码,所以又简单的整理了下,这次的完成度更低,哈哈哈哈:

另外,超级推荐看看胖友在录制的 SkyWalking 的视频,快来点击传送门 。

 SkyWalking 6.x 源码分析 —— 调试环境搭建 (非原创)

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
35岁是技术人的天花板吗?
35岁是技术人的天花板吗?我非常不认同“35岁现象”,人类没有那么脆弱,人类的智力不会说是35岁之后就停止发展,更不是说35岁之后就没有机会了。马云35岁还在教书,任正非35岁还在工厂上班。为什么技术人员到35岁就应该退役了呢?所以35岁根本就不是一个问题,我今年已经37岁了,我发现我才刚刚找到自己的节奏,刚刚上路。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这