在微服务架构中,监控和管理应用的运行状态是至关重要的。Spring Boot Actuator 提供了一种便捷的方式来监控和管理 Spring Boot 应用,而 JMX(Java Management Extensions)则是一种用于管理 Java 应用的标准技术。本文将通过一个实例,展示如何将 Spring Boot Actuator 的管理端点通过 JMX 暴露出来,并通过 JConsole 进行访问。
一、添加依赖
首先,我们需要在项目的 pom.xml 文件中添加 Spring Boot Actuator 的依赖。以下是完整的依赖配置:
xml复制
<project …>
4.0.0
com.logicbig.example
accessing-actuator-jmx-end-point
1.0-SNAPSHOT
war
org.springframework.boot
spring-boot-starter-parent
2.0.1.RELEASE
<java.version>1.8</java.version>
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-starter-web
需要注意的是,spring-boot-starter-web 并不是访问 JMX 端点所必需的。我们在这里添加它是为了防止主方法退出,否则我们需要通过其他方式(如守护线程或命令行输入)来保持应用运行。
二、启动类配置
接下来,我们创建一个 Spring Boot 启动类,用于启动应用:
java复制
@SpringBootApplication
public class JmxEndpointExampleMain {
public static void main(String[] args) {
SpringApplication.run(JmxEndpointExampleMain.class);
}
}
运行上述主类后,Spring Boot 应用将启动,并默认将 Actuator 的管理端点作为 JMX MBeans 暴露在 org.springframework.boot 域下。
三、通过 JConsole 访问端点
启动 JConsole
打开 JConsole 工具(通常位于 JDK 的 bin 目录下),在启动的进程中找到我们的主类 JmxEndpointExampleMain,点击“连接”按钮。
连接到应用
连接时可能会出现“安全连接失败”的提示,直接忽略并点击“不安全连接”。
访问 MBeans
点击“MBean”标签页,Spring 的 MBeans 将在左侧的树形结构中显示在 org.springframework.boot 下。例如,我们可以选择 Beans/Operations/beans,在右侧的面板中点击“beans”按钮(按钮后面的括号表示这是一个远程操作,返回值为 java.util.Map 类型)。
查看返回值
点击“beans”操作按钮后,返回值将显示在“操作返回值”窗口中。由于该窗口的显示不够友好,我们可以将内容复制到 Notepad++ 等文本编辑器中查看。
四、总结
通过上述步骤,我们成功地将 Spring Boot Actuator 的管理端点通过 JMX 暴露出来,并通过 JConsole 进行了访问。这种方式为我们提供了一种灵活且强大的手段来监控和管理 Spring Boot 应用。
在实际开发中,我们还可以通过配置 application.properties 或 application.yml 文件来进一步自定义 Actuator 的行为,例如启用或禁用特定的端点、设置端点的访问路径等。此外,除了 JConsole,我们还可以使用其他 JMX 客户端工具(如 VisualVM)来访问这些端点,具体选择取决于个人喜好和实际需求。
总之,Spring Boot Actuator 与 JMX 的结合为微服务的监控和管理提供了一个强大的工具集,值得在生产环境中广泛使用。
Spring Boot Actuator与JMX集成实战
2025/9/22 13:54:47
来源:https://blog.csdn.net/2501_90323865/article/details/145435400
浏览:
次
关键词:Spring Boot Actuator与JMX集成实战
版权声明:
本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。
我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com
热文排行
- 电力物联网的电力监控系统
- `git restore` 和 `git checkout` 用于丢弃工作区的改动, `git switch` 和 `git checkout` 用来切换分支
- 《警世贤文》摘抄:处人篇、受恩篇、宽人篇、听劝篇、劝善篇(多读书、多看报、少吃零食多睡觉)
- Android显示系统(08)- OpenGL ES - 图片拉伸
- Vmess协议是什么意思? VLESS与VMess有什么区别?
- 三元组抽取在实际应用中如何处理语义模糊性?
- WPS将文字文档朗读
- 使用 Docker 在 Alpine Linux 下部署 Caddy 服务器
- Rust Web框架怎么选?
- Vue.js 项目部署全解析:从开发到上线的关键旅程题
最新新闻
- SQL Server安装进度卡在 57%:Windows Update 服务异常
- 记录小白使用 Cursor 开发第一个微信小程序(二):创建项目、编译、预览、发布(250308)
- python excel如何转成json,并且如何解决excel转成json时中文汉字乱码的问题
- 【JAVA开源】基于Vue和SpringBoot的旅游管理系统
- 消息队列与中间件:Java的秘密传输带
- WebSocket、Socket和Netty的关系
- Linux_内核缓冲区
- 148 排序链表
- 聚观早报 | 知乎Q3营收;华为Mate 70系列发布
- 编写Chrome插件,点击插件读取分类并显示,选择分类后如果收藏文件夹没有对应分类的文件夹名字,则创建文件夹,收藏当前标签页。提供option页面编辑分类
推荐新闻
- SQL Server安装进度卡在 57%:Windows Update 服务异常
- 记录小白使用 Cursor 开发第一个微信小程序(二):创建项目、编译、预览、发布(250308)
- python excel如何转成json,并且如何解决excel转成json时中文汉字乱码的问题
- 【JAVA开源】基于Vue和SpringBoot的旅游管理系统
- 消息队列与中间件:Java的秘密传输带
- WebSocket、Socket和Netty的关系
- Linux_内核缓冲区
- 148 排序链表
- 聚观早报 | 知乎Q3营收;华为Mate 70系列发布
- 编写Chrome插件,点击插件读取分类并显示,选择分类后如果收藏文件夹没有对应分类的文件夹名字,则创建文件夹,收藏当前标签页。提供option页面编辑分类