监控Spring嵌入式Tomcat指标

fab*_*fab 6 tomcat spring-boot

我想在Spring Boot Service中监视嵌入式Tomcat.Spring本身给了我一些会话使用统计信息,但我需要有关底层线程池的其他信息,如活动连接,队列长度等.

我搜索了已注册的bean但找不到使用的线程池.

有关如何检索该信息的任何想法?

Rya*_*cox 2

你好,18 个月前的问题!

因此,事实证明,使用 Spring Boot 2.0 及其新的 Metrics 包可以轻松监控嵌入式 Tomcat 指标。升级该应用程序的原因。

这里有一些示例代码可以帮助您入门。

class SomeClass {

@Autowired
private MeterRegistry repo;

@ReadOperation
public WebEndpointResponse<Map> invoke() {
    Gauge busyThreads = repo.get("tomcat.threads.busy").gauge();
    Gauge allThreads  = repo.get("tomcat.threads.config.max").gauge();  // yes, could do @Value("${server.tomcat.max-threads:200}") and have it injected

    double busyThreadsCount = busyThreads.value();
    double allThreadsCount = allThreads.value();

    ....
}
}
Run Code Online (Sandbox Code Playgroud)

查看更多:

  • https://github.com/rwilcox/k8_spring_actuators <-- 其中我有一个就绪执行器,如果 Tomcat 线程上的负载过高,它就会失败。
  • Tomcat 指标的源代码。我很快的任务之一可能就是将此代码向后移植到 Spring Boot 1.x 应用程序中。该类TomcatMetrics专门向 Tomcat 请求它,因此将其拉入 Spring Boot 1.x 执行器应该不会太难。