skywalking解析-如何在idea中调试skywalking agent

当我从github上下载下来skywalking agent的代码后,面临的第一个问题就是如何调试。因为skywalking agent的运行模式与普通程序运行方式不一样,它是通过java agent方式运行的。本文接下来介绍如何在本地调试skywalking agent源码。

一、下载源码

如果本地调试使用github仓库的代码,当导入idea之后,idea显示个别类无法找到,原因是仓库的代码缺少proto的内容,我们无法使用maven工具生成缺少的这部分类。
我们需要从https://skywalking.apache.org/downloads/网址上下载最新源码,当前最新的agent源码版本是v8.13.0(在文章的最后会附上源码的下载地址):
请添加图片描述
我们以tgz压缩包的形式下载下来源码,解压缩,然后可以看到如下图所示的目录形式:
请添加图片描述
之后将整个目录导入idea即可。
导入之后,使用idea编译,idea会报错,如下图:
请添加图片描述
出现上面问题的原因就是我们还需使用maven生成一些类,这些类是proto使用的,用于进行网络通讯。
接下来目录跳转到apm-protocol/,执行./mvn clean package -Dmaven.test.skip命令,得到下图结果便表示执行成功,此时会在
请添加图片描述
执行完上述命令之后,在apm-protocol/apm-network/target目录下会有一些代码生成,如下图红圈里面的内容,在导入idea源码时显示缺少的类便在java和grpc-java两个目录里面,接下来使用idea将两个目录标记为源码目录即可,这样这两个目录便加入了classpath,原来报错的内容便不再报错。
请添加图片描述

二、运行源码

我运行源码的方式是创建一个单元测试类,然后编辑启动参数运行。如果其他小伙伴有更好的方式,欢迎一起交流。
首先创建一个单元测试类AgentTest,如下图:
请添加图片描述
之后编辑启动参数,在VM options里面增加如下内容:

-javaagent:D:\apache-skywalking-java-agent-8.13.0\skywalking-agent\skywalking-agent.jar
-Dskywalking.agent.service_name=test
-Dskywalking.collector.backend_service=localhost

增加之后如下图,其中skywalking-agent.jar的路径是我本地路径,大家可以换成自己本地路径,另外两个参数是启动skywalking agent所必须的,如果不配置skywalking启动失败:
请添加图片描述

agent.service_name:表示客户端服务名,用于在SkyWalking UI中展示,其实就是设置agent名字,可以在服务端使用agent名字区分是哪个agent发送的日志。
collector.backend_service:表示oap服务端地址。

配置好上述信息,在SkyWalkingAgent.premaim()中打上端点,启动调试就可以了:
请添加图片描述

源码下载链接:https://dlcdn.apache.org/skywalking/java-agent/8.13.0/apache-skywalking-java-agent-8.13.0-src.tgz
本文参考视频:https://www.bilibili.com/video/BV1dy4y1V7ck?p=1&vd_source=ef290f25dc33647fb77d44e1920ca854,强烈建议大家学习该视频合集,介绍的非常详细。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值