Opentememetry Zuul集成

问题描述

我尝试使用Spring Boot将Opentelemetry与Zuul集成没有成功。我要做的是将Opentelemetry上下文从Zuul传递到链中的其他微服务,并在响应进入Zuul时关闭跟踪

(创建跟踪) Zuul -call-> (新跨度)微服务A -call-> (新跨度)微服务B

关闭跟踪) Zuul 微服务A 微服务B

有人做了类似的事情吗?

解决方法

我通过这种方式解决了

@Component
public class HeaderResponseFilter extends ZuulFilter {

    @Autowired
    private Tracer tracer;
    
    
    @Override
    public int filterOrder() {
        // Run before PreDecoration
        return FilterConstants.PRE_DECORATION_FILTER_ORDER - 1; 
    }

    @Override
    public String filterType() {
        return FilterConstants.POST_TYPE;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() {
        // Close span
        tracer.getCurrentSpan().end();
        
        return null;
    }
}

和响应,跨度已关闭

version: '3'
services:
  database:
    image: postgres:12
    container_name: psql_database
    restart: always
    ports:
      - "5432:5432"
    sysctls:
      kernel.shmmax: 17179869184
      kernel.shmall: 4194304
      vm.nr_hugepages: 3170
...