如何在本地使用jconsole或jvisualvm监控运行在ECS实例上的JVM进程
概述
当监控各EDAS应用的Java虚拟机的堆内存、线程和MBean时,除了使用EDAS提供的应用故障自动诊断功能外,还可以使用JDK自带的jconsole和jvisualvm工具。本文主要以在MAC电脑上配置jvisualvm监控工具为例进行介绍,jconsole的配置流程也类似。
详细信息
注意:
- 这2个工具默认放在
$JAVA_HOME/bin
目录下,jvisualvm也可以使用开源版,按照以下步骤进行配置即可实现监控。- 本文方法适用于在本地(办公电脑环境)通过jconsole或者jvisualvm远程获取运行在ECS实例上的JVM进程的配置与运行信息,而且应用所在ECS实例需要为实例分配公网IP地址或EIP。
配置JVM参数
- 登录EDAS控制台,在左侧导航栏中选择应用管理>应用列表。
- 在应用列表页面单击具体应用名称。
- 在应用基本信息页面的应用设置区域单击编辑。
- 单击自定义,在自定义区域添加自定义参数,然后单击配置JVM参数。
参数配置如下。-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=[$Port] -Dcom.sun.management.jmxremote.rmi.port=[$Port] -Djava.rmi.server.hostname=[$IP]
说明:
- [$Port]为大于1024且没有被占用的端口。
- [$IP]为需要被监控应用所在ECS实例的公网IP地址。
- 配置JVM参数后,需要重启应用使配置生效,单击页面右上角的停止应用,然后单击启动应用。
- 在应用基本信息页面,单击实例部署信息,然后单击目标实例ID,进入该ECS实例的实例详情页面。
- 连接该ECS实例,如何连接请参见连接方式概述。
- 执行以下命令,确认JVM进程在监听JMX Remote端口。
netstat -antp | grep [$Port]
- 如果JMX Remote端口未被监听,请检查JVM进程是否包含第4步添加的参数,命令如下所示。
ps -ef|grep tomcat | grep -v grep |grep Djava.rmi.server.hostname
系统显示类似如下,说明添加配置正常,您可以排查是否是其他问题导致端口未被监听。
通过jvisualvm进行监控
- 给ECS实例添加如下安全组策略,其中端口范围为[$Port],授权对象为您本地IP地址,如何添加安全组策略,请参见添加安全组规则。
- 在本地打开jvisualvm,建立远程主机,右键单击主机名,然后选择添加 JMX 连接。
- 填写连接信息,即
[$IP]:[$Port]
,然后单击确定,即可查看监控信息。说明:该配置仅为测试样例,未开启身份安全验证,如果需要在正式环境使用,请开启安全验证,按照实际情况填写。
相关文档
jconsole和jvisualvm是JDK提供的监控工具,与EDAS产品并无关系,更多配置请参见以下官方文档。
适用于
- 企业级分布式应用服务EDAS