Spring Webflux - Actuator - Netty线程度量

5

请问与 Spring Webflux + actuator 项目相关的 Netty 指标的一个小问题。

在 Spring MVC 的世界中,结合 actuator,我们有诸如以下指标:

tomcat_threads_busy_threads
tomcat_threads_current_threads
tomcat_threads_config_max_threads

jetty_threads_busy
jetty_threads_current
jetty_threads_config_max

这有助于获取应用程序的总体状态。

然而,在Webflux中,似乎没有相应的内容。

我期望有类似于 netty_threads_busy 或等效内容,但找不到相关内容。

请问在Netty Webflux世界中等效内容是什么?

谢谢。


3
在启动Spring Boot应用程序之前,在您的主方法中启用Schedulers.enableMetrics()也是一个好习惯。 - Toerktumlare
在这里学到了新东西,而且指标非常有帮助(点赞) - PatPanda
1个回答

7

reactor-netty暴露的指标在Spring Boot中默认未启用。此前有关于这个问题的讨论,可以参考GitHub issue,最终决定不默认开启这些指标。

如果您想要在自己的应用程序中启用Netty服务器指标,可以添加以下bean以自定义Netty HttpServer。

    @Bean
    public NettyServerCustomizer nettyServerCustomizer(){
        return httpServer -> httpServer.metrics(true, uriMappingFunction);
    }

注意事项:

如果您在任何 URI 中使用路径参数,您应该提供一个 uriMappingFunction,将其转换为模板化的 URI,例如:/user/1 -> /user/{id}。否则可能导致计量注册表中的基数爆炸。

启用此功能还带有以下建议:

强烈建议应用程序为 URI 标记的数量配置上限。

参考文档

Java 文档


我已经添加了参考文档和Java文档的链接,希望能回答你的问题。如果不能,请告诉我。 - Michael McFadyen
2
提供进一步的澄清,为什么您应该实现一个uriMappingFunction,以及如果您不这样做可能会产生的后果。 - Michael McFadyen
1
非常感谢您进一步的解释。如果我可以问一下,在这种情况下uriMappingFunction会是什么呢?在我的应用程序中,我从/actuator/prometheus路径公开端点。这意味着我应该构建一个uriMappingFunction映射到我的prometheus端点吗? - PatPanda
链接的Javadoc解释了该参数的目的。 - Michael McFadyen
reactor-netty不会生成与HTTP服务器线程相关的指标,因为线程模型非常不同。关于这个问题,在这个GitHub问题中有一个很好的解释 - https://github.com/reactor/reactor-netty/issues/1366 - Michael McFadyen
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接