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

file

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

file

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

file

file

启动 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

file

验证 验证 agent 断点是否生效

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

file

在 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 中查询,可以得到如下结果

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzpgzf.html