Skip to content

一、自定义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("删除成功");
}