素材巴巴 > 程序开发 >

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

程序开发 2023-09-05 17:20:05

当我从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.0skywalking-agentskywalking-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,强烈建议大家学习该视频合集,介绍的非常详细。


标签:

上一篇: idea 将项目使用tomcat启动步骤 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。