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
...

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...