开发者社区> 杜琪> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

通过JMX监控Spring Boot应用

简介:
+关注继续查看

Spring Boot应用的健康监控一文中,我们通过Spring Boot Actuator对外暴露应用的监控信息,除了使用HTTP获取JSON格式 的数据之外,还可以通过JMX监控应用,Spring Boot也提供了对JMX监控的支持。JMX监控对外暴露的信息相同,不过是使用MBeans容器将应用数据封装管理。

接下来我们看下如何利用JMX获取应用状态信息,以及如何使用Jolokia JMX库对外暴露MBeans的HTTP访问URL。

Get Ready

在BookPub应用的pom文件中添加jolokia-core依赖

<!-- JMX monitor -->
<dependency>
   <groupId>org.jolokia</groupId>
   <artifactId>jolokia-core</artifactId>
</dependency>

How Do

  1. 启动BookPub应用,然后在命令行中执行jconsole命令启动“Java管理和监视控制台”,然后选择org.springframework.boot节点下的Endpoint,可以看到如下信息

    1240
    Java管理和监视控制台
  2. Tomcat节点下选择ThreadPool,然后在选择http-nio-8080节点,在这个节点下选择maxThreads属性,可以看到如下信息

    1240
    查看应用的最大并发线程数
  3. 除了通过JMX获取信息,也暴露了对应的HTTP接口访问Mbeans对象的信息,例如,我们在postman中访问http://localhost:8080/jolokia/read/Tomcat:type=ThreadPool,name=%22http-nio-8080%22/maxThreads,也可以得到对应的信息

    1240
    通过HTTP访问应用的最大并发线程数

分析

只要添加了Spring Boot Actuator库,所有相关的endpoint和管理服务都打开了,包括JMX,我们可以通过设置endpoints.jmx.enabled=false禁止对外提供基于JMX的endpoints;或者通过设置spring.jmx.enabled=false禁止对外提供Spring MBeans。

在类路径中存在的Jolokia库会触发Spring Boot的JolokiaAutoConfiguration,这个自动配置类会自动配置可以接受/jolokia请求的JolokiaMvcEndPoint;也可以通过在application.properties中设置jolokia.config.系列的属性配置不同的Jolokia配置。完整的Jolokia配置地址在:https://jolokia.org/reference/html/agents.html#agent-war-init-params。如果你希望定制自己的Jolokia配置,则可以通过设置endpoints.jolokia.enabled=false*让Spring Boot应用忽略自身提供的配置。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《Spring Boot 2.5开发实战》电子版地址
本书全面覆盖了 Spring Boot 2.5 新特性、自动化配置原理、如何开发 REST API、 实战 MySQL 数据库、Redis 高并发缓存、MongoDB 数据库、MQ 消息队列、安全机制、 性能监控、高级面试题等热门知识点。
0 0
「Spring」Boot Docker 认证指南(下)
「Spring」Boot Docker 认证指南(下)
0 0
「Spring」Boot Docker 认证指南(上)
「Spring」Boot Docker 认证指南(上)
0 0
Spring Boot demo系列 :Redis缓存
目录 Spring Boot demo系列 :Redis缓存 12.2.1 手动添加`@class` 12.2.2 将实体类设置为`open`
0 0
Spring Boot 操作 Redis 的各种实现
Spring Boot 操作 Redis 的各种实现
0 0
Spring Boot 的 HTTP 客户端框架
Spring Boot 的 HTTP 客户端框架
0 0
Spring Boot 项目 启动 端口经常被占用 彻底解决方案
Spring Boot 项目 启动 端口经常被占用 彻底解决方案
0 0
每日一面 - Spring Boot 中的 ApplicationContext 的分层是什么意思?
每日一面 - Spring Boot 中的 ApplicationContext 的分层是什么意思?
0 0
Spring Boot 注解收集 - @SpringBootApplication
Spring Boot 注解收集 - @SpringBootApplication
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Java Spring Boot开发实战系列课程【第15讲】:Spring Boot 2.0 API与Spring REST Docs实战
立即下载
Spring Boot 2.5开发实战
立即下载
Spring Cloud 微服务核心组件集 mica 的设计思路
立即下载