一、自定义SkyWalking链路追踪
如果我们希望对项目中的业务方法,实现链路追踪,方便我们排查问题.
1.引入依赖包
xml
<!-- SkyWalking工具类 -->
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>8.12.0</version>
</dependency>
2. 使用 @Trace注解,加入到需要追踪链路业务方法上。
如果一个业务方法想在ui界面的跟踪链路上显示出来,只需要在业务方法上加上@Trace注解
即可
java
// 方法链路追踪
@Trace
@AutoLog(value = "租户后台-客户管理-删除")
@DeleteMapping(value = "/deleteByIds")
public Result<String> deleteByIds(@RequestParam("ids") String ids) {
EpTenantStoreDetailVO epTenantStoreDetailVO = getEpTenantStoreDetailVO();
List<String> idsList = Arrays.stream(ids.split(",")).collect(toList());
// 删除
epTenantStoreCustomerService.deleteByIds(idsList, epTenantStoreDetailVO.getTenantId(), epTenantStoreDetailVO.getId());
return Result.OK("删除成功");
}
3. 加入 @Tags 或 @Tag注解,用于记录请求参数和返回信息。
我们还可以为追踪链路增加其他额外的信息,比如记录参数和返回信息。
3.1 实现方式:在方法上增加 @Tag
或者 @Tags
注解。
key
= 方法名value
= returnedObj 返回值arg[0]参数
请求方法参数,参数个数
java
@Trace
@Tags({
// 记录: 请求方法名,返回对象值
@Tag(key = "deleteByIds", value = "returnedObj"),
// 记录: 请求方法参数,参数个数
@Tag(key = "param", value = "arg[0]")})
@AutoLog(value = "租户后台-客户管理-删除")
@DeleteMapping(value = "/deleteByIds")
public Result<String> deleteByIds(@RequestParam("ids") String ids) {
EpTenantStoreDetailVO epTenantStoreDetailVO = getEpTenantStoreDetailVO();
List<String> idsList = Arrays.stream(ids.split(",")).collect(toList());
// 删除
epTenantStoreCustomerService.deleteByIds(idsList, epTenantStoreDetailVO.getTenantId(), epTenantStoreDetailVO.getId());
return Result.OK("删除成功");
}