Skywalking-03:Skywalking本地调试
live-demo 与 skywalking 源码联调
构建项目
找一个目录执行如下命令
git clone https://github.com/apache/skywalking.git # clone skywalking项目
cd skywalking # 进入skywalking目录
git checkout v8.4.0 # 切换到v8.4.0版本
git checkout -b new_v8.4.0 # 创建一个新分支
git submodule init # 初始化子模块
git submodule update # 更新子模块,注意:可能因为网络问题失败,如果失败多次尝试即可
./mvnw clean package -DskipTests # 执行maven命令,构建skywalking项目,时间会比较长,耐心等待...
cd .. # 进入上级目录
git clone https://github.com/SkyAPMTest/skywalking-live-demo # clone live-demo skywalking案例项目
cd skywalking-live-demo # 进入skywalking-live-demo目录
mvn clean package # 构建demo项目
cd .. # 进入上级目录
构建成功后会在如下两个目录生成安装包
.
├── skywalking
│ └── dist
│ │ ├── apache-skywalking-apm-bin-es7.tar.gz # es7的安装包
│ │ └── apache-skywalking-apm-bin.tar.gz
└── skywalking-live-demo
└── live-demo-assembly.tar.gz # demo项目
skywalking 部分模块构建
# 打包 agent 模块,会出现skywalking-agent目录
./mvnw package -Pagent -DskipTests
# 打包 agent 模块,然后打包到dist目录
./mvnw package -Pagent,dist -DskipTests
# 打包 backend 模块,然后打包到dist目录
./mvnw package -Pbackend,dist -DskipTests
# 打包 UI 模块,然后打包到dist目录
./mvnw package -Pui,dist -DskipTests
将 skywalking 作为模块导入 skywalking-live-demo 项目
- 在
IDEA中打开skywalking-live-demo项目 - 在打开的
skywalking-live-demo项目中使用Module from Existing Sources的方式导入Skywalking

- 成功导入后,会出现如下两个模块

PS:导入 skywalking 项目的时候可能会出现 skywalking 的子模块被忽略的情况,可以使用如下方式取消忽略


启动 OAP 服务
执行 org.apache.skywalking.oap.server.starter.OAPServerStartUp#main 方法,启动 OAP 服务
生成 skywalking-agent
cd skywalking # 进入skywalking目录
./mvnw package -Pagent -DskipTests # 打包 agent 模块,会出现skywalking-agent目录
生成后的 skywalking-agent 目录结构如下所示:
skywalking
└── skywalking-agent
├── activations
├── bootstrap-plugins
├── config
├── logs
├── optional-plugins
├── optional-reporter-plugins
├── plugins
└── skywalking-agent.jar
配置项目 JVM 启动参数
ProjectA 、 ProjectB 、 ProjectC 、 ProjectD 项目都需要配置,这里以 ProjectA 为例
-javaagent:{需要替换成项目目录}/skywalking/skywalking-agent/skywalking-agent.jar
-Dskywalking.collector.grpc_channel_check_interval=2
-Dskywalking.collector.app_and_service_register_check_interval=2
-Dcollector.discovery_check_interval=2
-Dskywalking.collector.backend_service=localhost:11800
-Dskywalking.agent.service_name=business-zone::projectA
-Dskywalking.logging.level=info
-Dskywalking.plugin.toolkit.log.grpc.reporter.server_host=localhost
-Dskywalking.plugin.toolkit.log.grpc.reporter.server_port=11800
-Dskywalking.plugin.toolkit.log.grpc.reporter.max_message_size=10485760
-Dskywalking.plugin.toolkit.log.grpc.reporter.upstream_timeout=30

验证
验证 agent 断点是否生效
在 org.apache.skywalking.apm.agent.SkyWalkingAgent#premain 方法中任一语句打上断点,启动 ProjectA

在 UI 上验证 trace 是否生成
- 启动
Kafka、Eureka、ProjectB、ProjectC、ProjectD、ProjectA - 在命令行执行
curl "http://localhost:8764/projectA/test"
$ curl "http://localhost:8764/projectA/test"
{"traceId":"20b7bb868a384b7bac5130efb5f76f17.82.16244120942450001"}%
- 使用上一步执行拿到的
traceId,在UI中查询,可以得到如下结果

PS:注意 ProjectA 、 ProjectB 、 ProjectC 、 ProjectD 、 Eureka 都可以在 IDEA 源码启动,但 Kafka 需要通过命令启动,可以参考 live-demo/bin/startup.sh 脚本
总结
不管是研究源码执行流程还是自己写一些插件、扩展一些功能, debug 源码是最基本的操作。 Skywalking 有些不一样的是,它的客户端这块是无法直接执行,需要附加在其他应用上。
参考文档
分享并记录所学所见
Skywalking-03:Skywalking本地调试的更多相关文章
- Adnc如何本地调试 - 一个轻量级的.Net Core微服务开发框架
前言 Adnc是一个轻量级的.Net Core微服务开发框架,同样适用于单体架构系统的开发. 如果只是想本地调试,只需要安装必备软件,必备软件除开发工具外,其它软件建议大家都使用`do ...
- ReactNative新手学习之路03真机调试
React Native新手入门03真机调试(iOS) 从设备访问开发服务器 在启用开发服务器的情况下,你可以快速的迭代修改应用,然后在设备上查看结果.这样做的前提是你的电脑和设备必须在同一个wifi ...
- mapreduce 本地调试需要注意的问题
1.写好的程序直接在hadoop集群里面执行 2.如果需要在本地调试,需要注释掉mapred-site.xml <configuration> <!-- <property&g ...
- 开源分布式实时计算引擎 Iveely Computing 之 本地调试Topology(4)
当我们写完一个比较复杂的Topology之后,倘若直接提交到服务器上运行,难免会有很多问题,如何进行本地的调试Topology,是我们非常关心的问题.我们依然以WordCount作为代码示例. 首先, ...
- OpenCart本地调试环境搭建
OpenCart简介: 免费开源网络版电子商务系统,是建立在线商务网站首选之一.有众多用户和开发基础,结合其丰富特性与模板插件,可最大化定制在线商店.(也就是用来方便开网店的) 本地调试准备: Fir ...
- 在本地调试微信项目(C#)
之前一人负责微信的项目,那时2014年LZ还没毕业..啥都不懂,为此特别感谢@SZW,没有你的框架,我可能都无从下手 当时做项目最麻烦的就是调试,因为很多页面都要使用 网页授权获取用户信息 在电脑上打 ...
- Oracle在本地调试成功读取数据,但是把代码放到服务器读不出数据的解决方法。
用MVC EF框架开发项目,数据库用的是Oracle,本地调试的时候一切正常,但是把代码编译之后放到服务器就会读不出数据. 原因:本地调试环境与服务器环境不一致. 办法:在服务器上装ODT.NET组件 ...
- C#微信公众号——本地调试
测试微信,因为要与微信服务器进行交互,所以必须要是外网地址,实现本地调试首先需要解决的问题就是外网问题,这个我前面的文章有介绍,这里就不再详细介绍了,网址http://www.cnblogs.com/ ...
- Hive 本地调试方法
关键词:hive, debug 本地调试(local debug) Hive 可分为 exec (hive-exec,主要对应源码里的ql目录) 和 metastore 两部分,其中exec对外有两种 ...
随机推荐
- 「题解」agc031_c Differ by 1 Bit
本文将同步发布于: 洛谷博客: csdn: 博客园: 简书: 题目 题目链接:洛谷 AT4693.AtCoder agc031_c. 题意概述 给定三个数 \(n,a,b\),求一个 \(0\sim ...
- JVM系列(五):gc实现概要01
java的一大核心特性,即是自动内存回收.这让一些人从繁琐的内存管理中解脱出来,但对大部分人来说,貌似这太理所当然了.因为现在市场上的语言,几乎都已经没有了还需要自己去管理内存这事.大家似乎都以为,语 ...
- Selective Kernel Networks
摘要:在标准的卷积神经网络(CNNs)中,每一层的人工神经元的感受野被设计成具有相同的大小.众所周知,视觉皮层神经元的感受野大小受刺激的调节,但在构建cnn时却很少考虑到这一点.我们在神经网络中提出了 ...
- 聚类算法K-Means算法和Mean Shift算法介绍及实现
Question:什么是聚类算法 1.聚类算法是一种非监督学习算法 2.聚类是在没有给定划分类别的情况下,根据数据相似度进行样本分组的一种方法 3.理论上,相同的组的数据之间有相同的属性或者是特征,不 ...
- android悬浮窗口
悬浮窗原理 做过悬浮窗功能的人都知道, 要想显示悬浮窗, 要有一个服务运行在后台, 通过getSystemService(Context.WINDOW_SERVICE)拿到WindowManager, ...
- SSM动态展示分页
这个作业属于哪个课程 2021春软件工程实践|S班(福州大学) 这个作业要求在哪里 作业具体要求 这个作业的目标 个人技术 参考文献 ... 目录 技术概述 技术详述 问题和解决过程 总结 参考文献 ...
- 《手把手教你》系列基础篇之(四)-java+ selenium自动化测试- 启动三大浏览器(下)基于Maven(详细教程)
1.简介 上一篇文章,宏哥已经在搭建的java项目环境中实践了,今天就在基于maven项目的环境中给小伙伴们 或者童鞋们演示一下. 2.eclipse中新建maven项目 1.依次点击eclipse的 ...
- SpringBoot 拦截器妙用,让你一个人开发整个系统的鉴权模块!
我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章,回复[资料],即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板. Han ...
- Unity项目代码书写规范
以Google的代码规范为主,稍加改动 https://google.github.io/styleguide/csharp-style.html 书写规范 基础写法 Pascal和驼峰混用,参数用驼 ...
- Redis之复制
1.配置 1.1 建立复制 参与复制的Redis实例划分为主节点(master) 和从节点(slave).默认情况下,Redis都是主节点.每个从节点只能有一个主节点,而主节点可以同时具有多个从节点. ...