You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Custom AWS-X-ray instrumentation 如何过滤Spring Boot非必要X-Ray追踪方法

X-Ray过滤非必要方法追踪的配置方案

1. 调整@XRayEnabled注解作用范围

类级别的@XRayEnabled默认会拦截类下所有公共方法的调用,你可以通过以下方式缩小范围:

  • 不需要追踪的公共方法单独添加@XRayEnabled(enabled = false)注解,方法级注解优先级高于类级,可直接屏蔽该方法的自动追踪
  • 私有方法默认不会被Spring AOP拦截自动上报,如果你的私有方法出现在追踪链路中,要么是你手动开启子段的代码写在了私有方法内部,要么是集成时使用了AspectJ编译/加载期织入,后者需要修改切面的切点规则,仅匹配公共方法即可:
    // 自定义切面切点,仅匹配公共方法,替换默认的X-Ray切面
    @Pointcut("execution(public * com.your.business.package..*.*(..)) && @within(com.amazonaws.xray.spring.aop.XRayEnabled)")
    public void xrayPointcut() {}
    

2. 关闭自动方法追踪,仅保留手动上报

如果你完全不需要框架自动生成的方法级追踪段,只保留你手动控制的子段以及RestTemplate调用的自动追踪,可以直接做以下配置:

  • 移除类上的@XRayEnabled注解
  • 在配置文件中关闭AOP自动追踪:
    # 关闭X-Ray默认的AOP方法拦截
    aws.xray.aop.enabled=false
    # 按需关闭不需要的自动集成,比如不需要RestTemplate自动追踪的话添加以下配置
    # aws.xray.rest-template.enabled=false
    

3. 后置过滤不需要的追踪段

如果上述配置仍无法过滤干净不需要的内容,可以实现SegmentListener接口,在段上报前主动删除无用子段:

import com.amazonaws.xray.entities.Segment;
import com.amazonaws.xray.listeners.SegmentListener;
import org.springframework.stereotype.Component;

@Component
public class FilteredSegmentListener implements SegmentListener {
    @Override
    public void beforeEndSegment(Segment segment) {
        // 按子段名、类名等规则过滤不需要的内容
        segment.getSubsegments().removeIf(subseg -> 
            // 过滤私有方法生成的段,或者你不需要的服务层方法段
            subseg.getName().contains("private") || subseg.getName().startsWith("InternalService")
        );
    }
}

内容的提问来源于stack exchange,提问作者Arpit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:15:00