SkyWalking8 自定义链路追踪@Trace
自定义链路,需要依赖skywalking官方提供的apm-toolkit-trace包.在pom.xml的dependencies中添加如下依赖:
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<!-- 当前的最新版本,请与安装的服务器版本对应 -->
<version>8.7.0</version>
</dependency>
@Trace注解其只能在方法上进行注解,使用operationName属性指定Span的名字,若不指定,会使用方法名.
@Trace
private String trace(String content) {
return new Base64().encodeToString(content.getBytes(StandardCharsets.UTF_8));
}
使用@Tags/ @Tag注解添加Span的属性
@Trace
@Tags({@Tag(key = "content", value = "arg[0]"), @Tag(key = "result", value = "returnedObj")})
private String trace(String content) {
return new Base64().encodeToString(content.getBytes(StandardCharsets.UTF_8));
}
例如:
key 属性名:
value 属性值会是一个表达式,具体可以参考官方文档: enhancement rules, for more information, refer to https://github.com/apache/skywalking/blob/master/docs/en/setup/service-agent/java-agent/Customize-enhance-trace.md#how-to-configure
当然也可以看源码,入口在org.apache.skywalking.apm.toolkit.activation.util.TagUtil#tagParamsSpan
这里用到的arg[0]代表入参的第一个对象,returnedObj即返回的对象.
SkyWalking8配置:监控跨线程问题解决
详情见 https://www.jianshu.com/p/602e4ae6a0c8
添加依赖
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>8.7.0</version>
</dependency>
可以添加其他多线程方法
CallableWrapper.of()
CompletableFuture.supplyAsync(() ->{});
也可以添加指定实现多线程的类上注解 @TraceCrossThread
代码1:
@TraceCrossThread
public static class MyCallable<String> implements Callable<String> {
@Override
public String call() throws Exception {
return null;
}
}
...
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.submit(new MyCallable());
代码2:
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.submit(CallableWrapper.of(new Callable<String>() {
@Override public String call() throws Exception {
return null;
}
}));
或者添加RunnableWrapper.of()来指定跟踪线程
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.execute(RunnableWrapper.of(new Runnable() {
@Override public void run() {
//your code
}
}));
代码3:
@TraceCrossThread
public class MySupplier<String> implements Supplier<String> {
@Override
public String get() {
return null;
}
}
...
CompletableFuture.supplyAsync(new MySupplier<String>());
本文介绍了如何在SkyWalking8中使用@Trace注解自定义链路追踪,强调了operationName的设置,并提到了通过@Tags和@Tag添加Span属性。同时,文章探讨了SkyWalking8配置监控跨线程问题的解决方案,包括添加依赖以及使用@TraceCrossThread注解和RunnableWrapper.of()方法来指定跟踪线程。
2503

被折叠的 条评论
为什么被折叠?



