首页 > 解决方案 > @ExceptionHandler 捕获的异常不会被 MetricsWebFilter 记录

问题描述

尝试从 web-mvc 迁移到 webflux+coroutines。遇到http.server.requests公制记录问题。

使用 web-mvc,当使用 @RestController、@RestControllerAdvice 和多个 @ExceptionHandler 时,我在exceptionmetric 的标记中记录了异常类http.server.requests。像这样http_server_requests_seconds_count{exception="CustomException",method="POST",outcome="CLIENT_ERROR",status="400",uri="/v1/users",} 1.0

但是,这拒绝按预期使用 webflux(spring boot 2.3.4)。我使用了相同的注释组件。
http_server_requests_seconds_count{exception="None",method="POST",outcome="CLIENT_ERROR",status="400",uri="/v1/users",} 1.0
在这种情况下,调用 MetricsWebFilter.onSuccess(...),它没有异常参数。仅在 @RestControllerAdvice 未捕获的异常上填充
所需的标记。exception这似乎是一件合理的事情,但对我来说这是出乎意料的并且使服务监控变得复杂。

也许有办法实现旧行为?

标签: spring-bootspring-webfluxspring-boot-actuatorspring-micrometer

解决方案


推荐阅读