当我们工程中,有些重要的方法,没有添加在链路中,而我们又需要时,就可以添加自定义链路追踪的Span,同时,我们还可以向链路的Span中添加一些自定义的属性(Tag)
工程我们采取上一章<skywalking03 - skywalking入门使用>使用到的demo工程,进行稍作改造.skywalking-plugin-example
private String trace(String plaintext) {
return new Base64().encodeToString(plaintext.getBytes(StandardCharsets.UTF_8));
}
基于上一章的成果,一切就绪.
自定义链路,需要依赖skywalking官方提供的apm-toolkit-trace包.在pom.xml的dependencies中添加如下依赖:
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<!-- 当前的最新版本,请与安装的服务器版本对应 -->
<version>8.3.0</version>
</dependency>
@Trace注解其只能在方法上进行注解,使用operationName属性指定Span的名字,若不指定,会使用方法名.
@Trace(operationName = "customTraceFunction")
private String trace(String plaintext) {
return new Base64().encodeToString(plaintext.getBytes(StandardCharsets.UTF_8));
}
@Trace(operationName = "customTraceFunction")
@Tags({@Tag(key = "plaintext", value = "arg[0]"), @Tag(key = "ciphertext", value = "returnedObj")})
private String trace(String plaintext) {
return new Base64().encodeToString(plaintext.getBytes(StandardCharsets.UTF_8));
}
当然也可以看源码,入口在org.apache.skywalking.apm.toolkit.activation.util.TagUtil#tagParamsSpan
这里用到的arg[0]代表入参的第一个对象,returnedObj即返回的对象.
自定义增强插件即apm-customize-enhance-plugin-8.3.0.jar
这个官方插件的作用是使探针可以收集到@Trace之类自定义增加的注解.其位于agent目录中的optional-plugins目录中,需要将其拷贝至plugins目录!
启动时注意使用探针代理,忘了看看上一章.
curl http://localhost:8081/foo?p=a
可以观察到,已经有了我们@Trace产生的Span-customFunction
可以观察到我们自定义的两个字段,明文/秘文已经展示出来了.
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/a17816876003/article/details/113702511
内容来源于网络,如有侵权,请联系作者删除!