Java Micrometer @Counted - @ExceptionHandler 的异常="none" 和结果="success"?
Java Micrometer @Counted - exception="none" and result="success" for @ExceptionHandler?
关于 Java Micrometer with @Counted 和 @ExceptionHandler 的快速问题。
我有一个非常简单的@ExceptionHandler:
@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"
很疑惑
请问这些值最初是如何进入指标的?
此外,如何将它们更改为更有意义的内容,例如异常 class?
谢谢!
带注释的方法本身不会抛出异常并且总是正常完成。所以注解安装的拦截代码永远不会记录异常(exception=none),结果总是好的(result=success)。只有从带注释的方法中抛出的异常才会被记录为错误结果。
您始终可以通过注入 MetricRegistry
然后使用适当的名称和标签注册指标来手动记录指标。
关于 Java Micrometer with @Counted 和 @ExceptionHandler 的快速问题。
我有一个非常简单的@ExceptionHandler:
@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"
很疑惑请问这些值最初是如何进入指标的?
此外,如何将它们更改为更有意义的内容,例如异常 class?
谢谢!
带注释的方法本身不会抛出异常并且总是正常完成。所以注解安装的拦截代码永远不会记录异常(exception=none),结果总是好的(result=success)。只有从带注释的方法中抛出的异常才会被记录为错误结果。
您始终可以通过注入 MetricRegistry
然后使用适当的名称和标签注册指标来手动记录指标。