使用jvisualvm进行远程监控

本文介绍了如何通过两种方法配置JVisualVM以实现对远程JVM进程的监控。一种是在目标应用上直接配置JVM参数;另一种是启动jstatd服务来间接监控。这两种方法各有优缺点。

1. 描述

jvisualvm是JDK自带的监控工具,位于JDK bin目录下面。

默认jvisualvm不能监控远程的JVM进程,需要进行一些配置。

2. 单独在应用上配置JVM启动参数

在Java启动时,配置如下参数:

-Djava.rmi.server.hostname=192.168.23.65 -Dcom.sun.management.jmxremote.port=18888 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.managementote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

其中java.rmi.server.hostname配置的是运行JVM所在的机器IP。

如:

nohup java $JAVA_OPTS -Dfile.encoding=UTF-8 -Djava.rmi.server.hostname=192.168.23.65 -Dcom.sun.management.jmxremote.port=18888 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.managementote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -cp $LIB_PATH com.test.Application  > console.log &

注意:com.sun.management.jmxrenote.port=18888,这个端口不能与业务的端口一致,否则报错。

在jvisualvm里面添加远程主机192.168.23.65,然后右键添加JMX连接,如图:

输入上面配置的端口即可,之后就可以看到各种监控的数据。

3. 使用jstatd

新建一个文件jstatd.all.policy(名称随意),内容如下:

grant codebase "file:${java.home}/../lib/tools.jar" {  
   permission java.security.AllPermission;  
};

然后执行 jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.23.65

在jvisualvm里面添加远程主机 192.168.23.65,然后右键添加jstatd连接,端口默认。jvisualvm即可扫描出所有正在运行的JVM,点击即可监控。

对比两种方式,第一种需要在每个JVM参数中都要配置,第二种不需要配置应用的JVM参数,只需要额外启动一个jstatd即可。

 

转载于:https://www.cnblogs.com/lujiango/p/9633213.html

### 配置 JVisualVM 进行远程服务器监控 为了通过 JVisualVM 对远程 Linux 或 Windows 服务器上的 JVM 进程进行有效监控,需完成特定的配置工作。主要涉及两个方面:一是确保目标机器上的 Java 应用程序能够被外部工具访问;二是设置好客户端端(即运行 JVisualVM 的计算机)连接到这些应用程序的方式。 #### 启动带有适当参数的Java应用以便于远程管理 为了让 VisualVM 能够连接并监视位于远端的操作系统中的 Java 程序实例,在启动该服务时应加入一系列专门用于启用远程管理和调试功能的 JVM 参数[^4]: ```bash -Djava.rmi.server.hostname=<公共IP地址> -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=<监听端口, 如10099> -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false ``` 上述命令片段展示了如何指定 RMI 绑定 IP 地址以及打开无认证模式下的 JMX Remoting 接口。请注意关闭身份验证和 SSL 加密可能会带来安全风险,因此仅建议在受信任网络环境中采用此方式部署生产环境之外的服务。 #### 安全组或防火墙规则调整 考虑到安全性因素,默认情况下许多云平台的安全策略会阻止来自外界对该端口号的数据请求。所以还需要相应地修改操作系统的防火墙设定或是云计算服务商所提供的虚拟私有云 (VPC) 中的安全组规则来允许入站流量到达所选端口上[^2]。 对于Linux系统而言,可以通过`iptables`或者更现代的`firewalld`来进行这样的更改;而在Windows Server里,则应该利用内置的高级防火墙控制台界面执行相同任务。 #### 使用JVisualVM建立远程连接 一旦完成了以上准备工作之后,就可以借助安装在同一局域网内任意一台电脑里的 JVisualVM 来发起对远方主机之上正在运行着的目标进程的性能跟踪了。当首次尝试添加新的远程主机条目时,软件将会提示输入必要的连接细节——主要是指之前定义好的那个开放给外部调用者的 TCP/IP socket接口位置信息[^3]。 此时只需按照界面上给出的指示填写对应字段即可成功建立起两者间的通信链路,并进而获取关于后者内部运作状况的第一手资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值