服务热线
135-6963-3175
skywalking-agent目录结构
+-- agent +-- activations #增强 apm-toolkit-log4j-1.x-activation.jar apm-toolkit-log4j-2.x-activation.jar apm-toolkit-logback-1.x-activation.jar ... +-- config agent.config +-- plugins apm-dubbo-plugin.jar apm-feign-default-http-9.x.jar apm-httpClient-4.x-plugin.jar ..... +-- optional-plugins apm-gson-2.x-plugin.jar ..... +-- bootstrap-plugins jdk-http-plugin.jar ..... +-- logs skywalking-agent.jar
启动时候带-javaagent:/path/.../skywalking-package/agent/skywalking-agent.jar
在plugins目录下的都是存活的可直接用的,Java 代理插件都是可插拔的。optional-plugins可以在代理或第 3 方存储库下的文件夹中提供可选插件。要使用这些插件,您需要将目标插件 jar 文件放入/plugins.
Bootstrap 插件在bootstrap-plugins文件夹中提供。要使用这些插件,您需要将目标插件 jar 文件放入/plugins.
/plugins文件夹中的所有插件都处于活动状态。删除插件jar,表示禁用。
支持的插件列表可参考官方:
可能存在这样的场景,当前应用中某些方法没有被追踪。但是我们又想看这一部分方法的调用情况。这个时候就可以使用指定方法的追踪来实现。不过这种方式的缺点是对代码有侵入。
加入依赖:
<dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-trace</artifactId> <version>${skywalking.version}</version> </dependency>
通过埋点方式@Trace
@Trace private List<User> trace(){ return userManager.getUsers(); }
就会记录对该方法的调用链。
@Tags或者@Tag
还可以为追踪链路增加其他额外的信息,比如记录参数和返回信息。实现方式:在方法上增加@Tag或者@Tags。
返回值貌似不支持list类型记录
@Trace @Tags({@Tag(key = "param", value = "arg[1]"), @Tag(key = "name", value = "returnedObj.name")}) private User trace1(String p1, String p2){ return userManager.getUsers().get(0); }
在使用@Tag时,加@Tag注解的方法可能有时候存在不追踪的调用链中,那么会不会影响性能呢?
答案是不会有影响的。@Tag只在活动的跨度中(可理解为当前调用被追踪)会进行处理,否则直接返回。