如何在本地使用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参数

  1. 登录EDAS控制台,在左侧导航栏中选择应用管理>应用列表
  2. 在应用列表页面单击具体应用名称。
  3. 在应用基本信息页面的应用设置区域单击编辑
  4. 单击自定义,在自定义区域添加自定义参数,然后单击配置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地址。
  5. 配置JVM参数后,需要重启应用使配置生效,单击页面右上角的停止应用,然后单击启动应用
  6. 在应用基本信息页面,单击实例部署信息,然后单击目标实例ID,进入该ECS实例的实例详情页面。
  7. 连接该ECS实例,如何连接请参见连接方式概述
  8. 执行以下命令,确认JVM进程在监听JMX Remote端口。
    netstat -antp | grep [$Port]
  9. 如果JMX Remote端口未被监听,请检查JVM进程是否包含第4步添加的参数,命令如下所示。
    ps -ef|grep tomcat | grep -v grep |grep Djava.rmi.server.hostname
    系统显示类似如下,说明添加配置正常,您可以排查是否是其他问题导致端口未被监听。

通过jvisualvm进行监控

  1. 给ECS实例添加如下安全组策略,其中端口范围为[$Port],授权对象为您本地IP地址,如何添加安全组策略,请参见添加安全组规则
  2. 在本地打开jvisualvm,建立远程主机,右键单击主机名,然后选择添加 JMX 连接
  3. 填写连接信息,即[$IP]:[$Port],然后单击确定,即可查看监控信息。
    说明:该配置仅为测试样例,未开启身份安全验证,如果需要在正式环境使用,请开启安全验证,按照实际情况填写。

相关文档

jconsole和jvisualvm是JDK提供的监控工具,与EDAS产品并无关系,更多配置请参见以下官方文档。

适用于

  • 企业级分布式应用服务EDAS