JMX、Actuator与Prometheus关联及移除JMX对Spring Boot 2.x的影响
问题解答
一、移除JMX参数对Spring Boot 2.x应用的影响
1. 核心变化
把这些com.sun.management.jmxremote相关参数删掉后,远程JMX访问会彻底失效——外部没法再通过你配置的$JMX_PORT端口连接应用的JMX服务了,本地用jconsole、jvisualvm这类工具连进程还是没问题的,这也是你能解决嗅探问题的根本原因,毕竟远程端口都关了。
2. 对Actuator指标的影响
完全不影响Actuator暴露指标,原因很简单:
- Spring Boot Actuator根本不依赖远程JMX来对外暴露指标,它有自己的一套端点机制,默认走HTTP接口(比如
/actuator/metrics、/actuator/prometheus这些)。 - 要是你之前是通过JMX来访问Actuator端点,那远程确实没法通过JMX看了,但HTTP端点只要你在配置里开了(比如
management.endpoints.web.exposure.include=*),就依然能正常用。
二、JMX、Actuator与Prometheus的关联关系
1. JMX
这是Java平台自带的监控规范,说白了就是给Java应用一套标准的方式来暴露内部状态——比如内存占用、线程数、自定义的业务指标都能做成MBean通过JMX暴露,用jconsole这类工具就能查看。Spring Boot默认会把自己的组件和Actuator的一些端点注册成JMX MBean。
2. Spring Boot Actuator
这是Spring Boot给开发者准备的开箱即用监控工具,把应用里的健康状态、度量数据、配置信息这些都封装成了现成的端点,不用自己写代码。它既可以把这些端点通过JMX暴露(给JMX客户端用),也可以通过HTTP接口暴露(直接用浏览器或curl访问),比原生JMX更友好。
3. Prometheus
这是专门做指标采集、存储和可视化的监控系统,它主要是主动拉取应用的指标数据:
- 最常用的方式是通过Actuator:Spring Boot默认集成了Micrometer,Actuator会生成Prometheus格式的指标,通过
/actuator/prometheus端点暴露,Prometheus直接去这个地址拉数据就行。 - 也可以用JMX Exporter工具,把JMX上的MBean指标转换成Prometheus能识别的格式,再让Prometheus采集,但这种方式绕了一层,不如直接用Actuator方便。
简单说三者的关系:
JMX是Java底层的监控标准,Actuator是Spring Boot基于这个标准(还有自己的实现)做的上层封装,提供更易用的监控入口;Prometheus是监控系统,主要通过Actuator的HTTP接口拿指标,也能通过工具间接拿JMX的指标。
内容的提问来源于stack exchange,提问作者kars89
相关产品推荐
相关产品推荐

