问题描述
我尝试使用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
...