利用VisualVm和JMX远程监控Java进程

自Java 6开始,Java程序启动时都会在JVM内部启动一个JMX agent,JMX agent会启动一个MBean server组件,把MBeans(Java平台标准的MBean + 你自己创建的MBean)注册到它里面,然后暴露给JMX client管理。简单来说就是每个Java程序都可以通过JMX来被JMX client管理,而且这一切都是自动发生的。而VisualVm就是一个JMX Client。

VisualVm能够自动发现本机的Java进程,如果要监控远程主机上的Java进程则需要显式地配置JMX连接,下面讲配置方法:

第一步:已经用jstatd连接了远程主机

已经根据利用VisualVm远程监控Java进程里的方法在VisualVm里添加了远程主机。

PS. 在实际使用过程中这个似乎不是必须的,但是如果不做,有些信息就会获取不到,因此还是做一下吧。

第二步:与启动相关的System Properties

要给远程主机上的监控的Java进程在启动时必须带上几个JMX相关的System Properties(常用的几个):

  • com.sun.management.jmxremote.port, 指定暴露的JMX端口。
  • com.sun.management.jmxremote.ssl, 指定是否使用SSL,在开发环境下可以是false,但是在生产环境下强烈建议为true。
  • com.sun.management.jmxremote.authenticate, 指定是否需要密码才能够创建JMX连接。

为了演示目的,我们用Tomcat来测试,不开启ssl和authenticate,把JMX端口设置为1100,执行下列命令启动Tomcat:

CATALINA_OPTS=‘-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=1100 -Djava.rmi.server.hostname=k8s-oracle‘ bin/startup.sh

注意上面有一个-Djava.rmi.server.hostname=k8s-oracle参数,JMX agent本质上也是一个RMI server,因此需要指定这个参数,否则就会像利用VisualVm远程监控Java进程里提到的一样,VisualVm无法连接到该Java进程。
想学习更多java知识的朋友可以进群:874811168 一起学习 还有全套的免费资料领取

PS. 使用SSL方式保护JMX连接的方法会另写文章说明。

第三步:创建JMX连接

在远程主机上右键,选择添加JMX连接(在下图里出现了之前启动的Tomcat进程):

根据Java进程启动时设置的JMX System Properties配置JMX连接:

成功后你会发现多了一个进程,小图标上有JMX字样:

双击这个进程,你就能看到CPU、线程、还有MBeans了。

出处:https://segmentfault.com/a/1190000016636787

原文地址:https://www.cnblogs.com/wxy666/p/9780721.html

时间: 2024-10-12 04:01:15

利用VisualVm和JMX远程监控Java进程的相关文章

使用visualvm远程监控java进程(以hadoop进程为例)

(一)下载安装 1.下载visualvm 在官网上下载即可,有mac版 2.工具-插件,选择感兴趣的插件进行安装 此时若本地有运行java进程,则在本地那里已经可以进行监控分析 (二)远程服务器配置 1.在任意目录建立文件jstatd.all.policy,内容如下: grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; }; 2.运行jstad服务 n

Zabbix 通过 JMX 监控 java 进程

参考: [ JMX monitoring ] [ Zabbix Java gateway ] [ JMX Monitoring (Java Gateway) not Working ] 这里会说明通过 JMX 监控 java 进程的配置过程以及需要注意的问题. 本文在 zabbix 已经安装好的基础之上展开. 如果使用 zabbix_proxy , 配置完全一致, 只需要打开zabbix_proxy 对 java app server 有所有端口的访问权限即可. 环境说明 基本环境 OS: Ce

Linux记录-JMX监控JAVA进程

1.下载 下载地址:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html,下载jmx_remote-1_0_1_03-ri.zip和jmx-1_2-ri.zip. 2.上传jmx-java.zip并解压到$JAVA_HOME/jre/lib/ext下 3.修改xxx.sh加入export JAVA_OPTS="-Dcom.sun.ma

VisualVM通过JMX远程连接JVM

如果本地安装了JDK,则在${java.home}/bin/下可找到jvisualvm.exe,双击打开即可使用.否则,去官网下载一个,解压即可使用.现有一个springboot程序springbootdemo.jar,使用JDK中jvisualvm的JMX方式监控该JVM 一.查询hostname 二.检查hostname对应ip地址 下面是新装虚拟机hostname对应ip地址 三.查询当前机器供外网访问的ip地址 本机ip地址为192.168.102.31  四.将hostname对应ip

JMX远程监控JVM

远程监控JVM状态需要在JVM启动的时候需要加上一段代码开启这个功能.(以下全部以ubuntu-14-04-server.jdk1.8.tomcat7.0环境为基础) 配置的时候分两种情况:1.无需配置用户访问权限:2.需要配置用户访问权限 先看第一种:首先更改tomcat启动参数(vim catalina.sh)找到 # OS specific support. $var _must_ be set to either true or false. 添加如下变量:JAVA_OPTS="-Dco

修改jmx远程监控wildfly/jboss配置,然后通过jdk自带的visualvm工具来进行性能监控

近新搭建了系统环境,进行压力测试的时候没有一个好的图形化监控方法来比较直观.方便.动态.实时的来监控应用服务器内存.GC.CPU.进程和磁盘等信息,功能非常强大,图像也很友好.但是wildfy配置jmx的文章资料很少,我通过参考官网和一些贴吧实践琢磨出了配置jmx的流程: 1]确认监控端口(一般都是8080端口) standalone:查看standalone.xml中jboss.http.port为8080 domain:查看standalone.xml中jboss.http.port为808

Tomcat配置JMX远程监控(Windown7 Linxu)

一:Window7下配置方式. 1.配置catalina.bat 在第一行加入下面配置 注意下面这些配置要在一行,注意包含空格. set JAVA_OPTS=-Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.10.126 -Dcom.sun.management.jmxremote.port=9008 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.su

shell脚本--监控java进程存活脚本

#!/bin/bash base_dir=/opt war_processor="tomcat" jar_processor="manager-server.jar platform-server.jar platform-item.jar platform-shop.jar platform-task.jar platform-trade.jar platform-user.jar" IP_ADDR=`ifconfig |grep inet|awk -F &quo

JVM探秘:VisualVM监控远程Java进程

VisualVM在Java 8中是JDK自带的一个图形化工具,项目主页 VisualVM,在后续版本中可能会从JDK移除. VisualVM可以监控Java进程的CPU与内存占用情况,可以监控Java进程内的各个线程的执行情况,还可以与MAT工具一样用来分析堆转储快照. 监控远程Tomcat进程 监控远程主机上的Tomcat进程,需要在Tomcat的catalina.sh文件中加入参数: JAVA_OPTS="$JAVA_OPTS -Dcom.sum.management.jmxremote -