如何解决Java Micrometer @Counted - @ExceptionHandler 的 exception="none" 和 result="success"?
关于带有@Counted 和@ExceptionHandler 的 Java Micrometer 的快速问题。
@ExceptionHandler
@Counted(value = "MY_EXCEPTION",description = "SOME_DESCRIPTION")
public Mono<ResponseEntity<String>> myCoolExceptionHandler(final RuntimeException runtimeException) {
System.err.println("an exception!" + runtimeException);
return Mono.just("bad");
}
我认为这种组合非常有趣,因为它提供了异常发生的可见性。我们可以构建仪表板、警报等,非常酷。
不幸的是,当我查看生成的指标时,它类似于:
# HELP MY_EXCEPTION_total SOME_DESCRIPTION
# TYPE MY_EXCEPTION_total counter
MY_EXCEPTION_total{class="package.MyController",exception="none",method="myCoolExceptionHandler",result="success",} 3.0
我对 exception="none" 和 result="success"
感到很困惑请问这些值最初是如何进入指标的?
另外,如何把它们改成更有意义的东西,比如异常类?
谢谢!
解决方法
被注解的方法本身不会抛出异常并且总是正常完成。所以注解安装的拦截代码永远不会记录异常(exception=none),结果总是好的(result=success)。只有从注释方法中抛出的异常才会被记录为错误结果。
您始终可以通过注入 MetricRegistry
然后使用适当的名称和标签注册指标来手动记录指标。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。