当前位置: 首页 > 知识库问答 >
问题:

带有ControllerAdvice的Sleuth/Zipkin无法工作

司马彬
2023-03-14

我发现有一个老问题sleuth/zipkin用@controlleradvice跟踪,但我在最新版本(spring-cloud-starter-zipkin:2.1.0.release)中遇到了同样的问题,我调试了它,发现错误为null,所以zipkin只是用statuscode猜测。我必须再次抛出异常以使zipkin通知异常

错误为空

zipkin结果

控制器建议

再次抛出异常,它起作用了

共有1个答案

尉迟禄
2023-03-14

它是null是完全有道理的。这是因为您控制捕获的异常发生的方式。在你的情况下,没有,因为你吞下了例外。

如果您想做得更好,只需通过spancustomizer手动添加错误标记。这样,您就可以将异常添加到给定的跨度中。然后,它将自动关闭并报告给Zipkin(当然,您可以执行ex.toString()以外的操作。

@Slf4j
@RestControllerAdvice
@Order(Ordered.HIGHEST_PRECEDENCE)
public class ExceptionHanders {

    private final SpanCustomizer customizer;

    public ExceptionHanders(SpanCustomizer customizer) {
        this.customizer = customizer;
    }

    @ExceptionHandler({RuntimeException.class})
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public String handleRuntimeException(Exception ex) throws Exception {
        this.customizer.tag("error", ex.toString());
        return "testabcd";
    }
}
 类似资料:
  • 我最近将我的项目从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中,他们添加了“错误”标签,一旦出现任何异常,

  • 我最近将Zipkin跟踪添加到我们的Vert. x服务,版本4.2.1,根据https://vertx.io/docs/vertx-zipkin/java.当我使用服务器类从IntelliJ运行/调试服务时,我看到跟踪工具中正在生成跟踪日志。对于部署,我们使用Maven阴影插件制作一个胖JAR文件,清单中包含Vert. x Launcher和服务器类。当我使用“java-jarservier.ja

  • 我们正在使用spring和Spring-Security-3.2。最近,我们向RESTAPI添加了注释@preauthorize(以前是基于URL的)。 我们已经有了用-@ControllerAdvice和自定义的PermissionEvaluator注释的全局异常处理程序,除了错误消息之外,其他一切都正常工作。 是否可能抛出一个包含权限名称的异常,所以最终的错误消息应该是“Access Is d

  • 我在Zipkin中找不到以下可导出的Span,既不是通过traceId也不是通过spanId(出现了一些其他Span,所以Zipkin服务器似乎可以工作) 我也找不到它的父级“parentID”:“37ECA1021FD5241C”在Zipkin。 哪里会有问题?我怎么咬/调试它? 这个跨度可能在一个流中,它是由一个rabbit消息触发的,而不是一个rest请求。由http rest请求触发的跟踪

  • 在我将两个依赖项和添加到pom.xml中后,应用程序运行良好。一旦我这样做了,我现在得到一个编译错误: 项目生成错误:不可解析的导入POM:找不到项目io.zipkin.brave:brave-BOM:POM:4.16.3-快照 我已经通过删除我的.m2文件夹并更新(两次)来确保这不是一个损坏的Maven包问题。 这是我的pom.xml:

  • 问题内容: 我正在尝试使用node-imagemagick库调整图像的大小,但无法正常工作。 我用来调整大小的代码是 引发错误 问题答案: 在Windows上,您还需要安装imagemagick exe。nodejs imagemagick库只是imagemagick exe的包装器。因此,只有安装了imagemagick exe并转换并标识可执行文件在路径中后,它才能起作用。