jmx笔记

本文详细介绍Java Management Extensions(JMX)的基本概念与远程访问配置流程。包括MBean、MBeanServer、JMXConnectors等核心组件介绍,以及如何通过设置JVM参数启用远程JMX访问,解决防火墙导致的连接问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JMX全称Java Management Extensions, 为Java应用提供管理扩展功能。在Java 5的时候引入

概念

NameDescription
MBean全称为Managed Bean, 你可以实现一个MBean来JMX提供管理内容
MBean Server(也叫JMX Agent)提供集中注册管理MBean功能,允许远程通过他代理操作MBean
JMX Connectors通过实现不同的通讯协议,来允许远程访问
Jconsole一款JMX图形客户端,运行用户访问本地或者远程的JMX,默认包含在Java SDK工具中

Referering Java Opts

启动Java可以赋予JVM Machine一些参数,例如设置运行内存堆栈的大小。此处列举一些有关JMX的相关参数

参数名类型描述
-Dcom.sun.management.jmxremote布尔是否支持远程JMX访问,默认true
-Dcom.sun.management.jmxremote.port数值监听端口号,方便远程访问
-Dcom.sun.management.jmxremote.authenticate布尔是否需要开启用户认证,默认开启
-Dcom.sun.management.jmxremote.ssl布尔是否对连接开启SSL加密,默认开启
-Dcom.sun.management.jmxremote.access.file路径对访问用户的权限授权的文件的路径,默认路径JRE_HOME/lib/management/jmxremote.access
-Dcom.sun.management.jmxremote. password.file路径设置访问用户的用户名和密码,默认路径JRE_HOME/lib/management/ jmxremote.password

例如,你需要启动一个常驻后台的springboot程序(比如app.jar),如何开启一个支持远程访问的JMX,可以尝试下面的命令

java -jar app.jar \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=10080 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false

对于关于JMX相关的参数你配置这些就够了,就可以使用Jconsole连接,Jconsole Panel

这个仅仅限于你在本地访问,也就是说远程访问。

你需要支持远程访问协议,也就是前面描述的JMX Connector,可以添加一个参数

-Djava.rmi.server.hostname=服务器的IP地址或者域名

就可以开启远程RMI协议访问,正常情况此时应该就能正常看到类似下面的界面

JMX Runtime

不过在我的工作做,此时发现仍然不能再远程访问,查询了相关资料后,有可能是防火墙的原因屏蔽了相关接口。在Java启动时,JMX会绑定一个接口,RMI也会绑定一个接口,在复杂网络环境下,有可能你通过打开防火墙允许了JMX端口的通过,但是由于没有放行RMI,远程连接也是会失败的。

这是因为JMX在远程连接时,会随机开启一个RMI端口作为连接的数据端口,很有可能这个端口会被防火墙给阻止,以至于连接超时失败。好在在Java7u25版本后可-Dcom.sun.management.jmxremote.rmi.port=端口号来定死这个端口,好消息是,你可以将这个端口和jmx.port的端口设置成一个端口,这样防火墙策略就只需要同行一个端口就可以了。

额外内容:

Sample for authtication

# password file
monitorRole password1
controlRole password2
# access file
monitorRole readonly
controlRole readwrite

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值