技术交流28群

服务热线

135-6963-3175

微信服务号

skwalking探针agent的配置与使用 更新时间 2022-2-20 浏览1550次

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,表示禁用。


支持的插件列表可参考官方:

https://skywalking.apache.org/docs/skywalking-java/v8.8.0/en/setup/service-agent/java-agent/supported-list/



可能存在这样的场景,当前应用中某些方法没有被追踪。但是我们又想看这一部分方法的调用情况。这个时候就可以使用指定方法的追踪来实现。不过这种方式的缺点是对代码有侵入。

加入依赖:

 <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只在活动的跨度中(可理解为当前调用被追踪)会进行处理,否则直接返回。