【问题标题】:Spring Webflux - Actuator - Netty thread metrics?Spring Webflux - 执行器 - Netty 线程指标?
【发布时间】:2021-02-03 13:07:17
【问题描述】:

请关于 Spring Webflux + actuator 项目的 Netty 指标的小问题。

在 Spring MVC 世界中,结合执行器,我们有如下指标:

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 世界中的等价物是什么?

谢谢

【问题讨论】:

  • 在启动 spring boot 应用程序之前,在 main 方法中启用 Schedulers.enableMetrics() 是一件好事。
  • 在这里学到了一些新东西,这些指标很有帮助(点赞)

标签: java spring-webflux spring-boot-actuator


【解决方案1】:

默认情况下,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}。否则可能会导致 MeterRegistry 中的基数爆炸。

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

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

Reference Documentation

Java Doc

【讨论】:

  • 学到了一些新东西,非常感谢 :) 只是跟进问题,httpServer.metrics(true);受到保护。还有其他三个 .metrics 接受参数。你知道我在哪里可以找到这些文件,或者你知道如何使用它们吗?
  • 我添加了参考文档和 java 文档的链接,希望能回答您的问题。如果不告诉我
  • 抱歉,当 metrics(boolean) 方法公开时,我必须使用稍旧版本的 reactor-netty
  • 进一步说明了为什么应该实施 uriMappingFunction 以及如果不实施的潜在后果。
  • 感谢您的进一步解释。如果我问,在这种情况下,uriMappingFunction 是什么?在我的应用程序中,我从 /actuator/prometheus 路由公开端点。意思是我应该建立一个uriMappingFunction 映射到我的普罗米修斯端点?
猜你喜欢
  • 2022-06-05
  • 2019-03-18
  • 2021-05-16
  • 2020-08-05
  • 2018-09-19
  • 2021-06-05
  • 2021-08-01
  • 2017-12-31
  • 2012-10-05
相关资源
最近更新 更多