Sleuth/Zipkin 使用@ControllerAdvice 进行跟踪

Sleuth/Zipkin tracing with @ControllerAdvice

我最近将我的项目从 Spring Boot 1.4.1、Spring Cloud Sleuth 1.1.0、Spring Cloud Zipkin 1.1.0 升级到 Spring Boot 1.5 .3,Spring Cloud Sleuth 1.2.0,Spring Cloud Zipkin 1.2.0。

阅读最新版本的 Spring Cloud Sleuth,他们添加了 "error" 标签,如果有任何异常,这些标签将自动报告给 Zipkin。

我有一个 @ControllerAdvice class 扩展 ResponseEntityExceptionHandler 用于自定义异常处理。当使用旧版本(Spring Boot 1.4.1,Spring Cloud Sleuth 1.1.0,Spring Cloud Zipkin 1.1 时,我能够向 Tracer 报告错误并在 Zipkin 中可视化相同的错误.0) 使用以下方法:

private void reportErrorSpan(String errorDesc, String message) {
    if(tracer != null) {
        Span span = tracer.getCurrentSpan();
        span.logEvent("ERROR: " + message);
        tracer.addTag("error", errorDesc);
    }
}

升级后,这似乎不起作用,而且 spring 云侦探的默认错误报告也没有发生。只有在注释掉 @ControllerAdvice 并让 Spring Boot 的默认 ErrorController 处理异常之后,我才能在 Zipkin 中可视化错误。但是,我们需要自定义异常处理来以标准方式格式化错误响应,并在我们所有的 PaaS 服务中使用错误代码。有没有办法做到这一点?我是否应该使用任何其他 Sleuth 对象来实现此目的?

问题已解决 - https://github.com/spring-cloud/spring-cloud-sleuth/issues/585。在即将发布的 1.1.5 和 1.2.1 版本中,它应该可以工作