JConsole远程监控java应用

本文介绍如何使用JConsole工具远程监控Java应用程序,包括无认证和认证连接的配置方法,以及如何设置用户认证,确保线上服务的安全。

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

有时候,当你需要远程监控你服务器上的程序的运行情况,该怎么办呢?
其实jdk里面就已经给我们提供了相关的工具,JConsole就是一个很好的JMX工具。下面来看下怎么使用。

不需要用户认证的连接

如下图,我新建了一个名为demo-0.0.1-SNAPSHOT.jar 的应用,
在这里插入图片描述
然后我们用一下命令来运行这个项目:

java -Djava.rmi.server.hostname=192.168.37.129 -Djava.security.policy=jstatd.all.policy -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=5678 -Xms1g -Xmxg  -jar demo-0.0.1-SNAPSHOT.jar

在这里插入图片描述
其中

  • hostname :为远程服务器的地址,
  • port :jmx访问的端口。需要注意的是,利用JConsole工具进行连接的之前,要把服务器的JMX访问的防火墙端口关闭,这里是5678。
  • authenticate:是否需要进行身份验证
  • ssl : 是否允许使用ssl方式接入

然后运行 %JAVA_HOME%/bin/jconsole.exe,即你本地的java环境下的bin目录下的工具jconsole,填上刚才配置的地址和端口,就可以连接了。
在这里插入图片描述

连接成功后,如下图所示,你就可以看到堆内存、线程、cpu等信息的波动曲线了:
在这里插入图片描述

需要用户认证的连接

虽然上述方法已经可以登录进入了,但是线上服务我们最好需要用户认证登录才算是比较安全合理的。下面就来看看 如何给登录添加用户认证吧!

首先切换到你服务器环境安装的${JAVA_PATH}/jre/lib/management 环境下,找到对应的文件:

cd /usr/local/jdk1.8.0_161/jre/lib/management

你会看到一个jmxremote.password.template 文件 。
在这里插入图片描述
因为jmxremote.password.template为不可写文件 ,将其复制出来另一份,赋予写权限,修改相关内容:

 cp jmxremote.password.template jmxremote.password   //复制除另一份取名为 jmxremote.password 

 chmod +w jmxremote.password		//赋予写权限
 
 vi  jmxremote.password  //编辑

在这里插入图片描述
编辑后的内容很简单,打开倒数第二行monitorRole QED的注释,同时修改字段值,如下:
在这里插入图片描述

然后就可以运行项目,用一下命令,将authenticate字段值改为true

java -Djava.rmi.server.hostname=192.168.37.129 -Djava.security.policy=jstatd.all.policy -Dcom.sun.management.jmxremote.authenticate=true-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=5678 -Xms1g -Xmx1g  -jar demo-0.0.1-SNAPSHOT.jar

如果你觉得命令太长,你可以把部分新建一个环境变量追加到到系统环境/etc/profile文件的尾部中去:

 echo "export JAVA_ARGS='-Djava.rmi.server.hostname=192.168.37.129 -Djava.security.policy=jstatd.all.policy -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=5678''">> /etc/profile     //追加JAVA_ARGS环境变量

 source /etc/profile  //即时生效

那么,你可以用以下较短的命令来运行项目了:

java $JAVA_ARGS -Xms1g -Xmx1g -jar demo-0.0.1-SNAPSHOT.jar

在这里插入图片描述
可以看到,这里说 jmxremote.password文件没有读取访问权限,那么我们 再给它赋予权限

 chmod 700 jmxremote.password jmxremote.access      

再运行,就没有问题了。
在这里插入图片描述

项目跑起来后,就可以使用JConsole工具来使用用户认证方式连接了。
在这里插入图片描述

### 配置和使用 JConsole 进行远程 Java 应用程序性能监控 #### 1. JDK 安装验证 确保已经正确安装了 JDK 并配置环境变量。可以通过命令 `java -version` 来确认当前系统的 JDK 版本[^4]。 ```bash java -version ``` 如果尚未安装 JDK 或者需要更新现有版本,建议按照官方文档指导完成安装,并相应调整 `/etc/profile` 文件来设置必要的环境变量。 #### 2. 启动目标 JVM 实例 对于要被监控应用服务器(如 Tomcat),启动时应加入特定参数以便允许来自外部主机的安全连接: ```properties -Dcom.sun.management.jmxremote=true \ -Dcom.sun.management.jmxremote.port=<port> \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.authenticate=false \ -Djava.rmi.server.hostname=<hostname> ``` 请注意,在生产环境中不推荐关闭身份验证 (`authenticate`) 和 SSL 加密 (`ssl`);这里仅作为简化示例展示[^3]。 #### 3. 使用 JConsole 建立远程会话 打开终端窗口并输入以下指令启动 jconsole 工具: ```bash jconsole ``` 随后会出现一个对话框提示选择 MBean Server 。此时可以选择 "Remote Process" ,接着填入之前指定的目标机器 IP 地址以及相应的 RMI 端口号[^1]。 成功建立连接之后即可看到关于所选进程中各类资源使用的实时数据图表,包括但不限于堆栈跟踪、垃圾回收统计等信息。 #### 4. 性能调优实践 利用收集到的信息分析潜在瓶颈所在之处,进而采取针对性措施改善 TaskManager 的表现,比如调整 GC 参数或是优化线程池大小等等[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值