远程监控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. 添加如下变量:
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=9999 --此端口号自定义,只要不是常用的或者系统已使用的即可,此处设置为1090,此端口号不是java业务进程的端口号,所以不要混淆了。
-Dcom.sun.management.jmxremote.authenticate=false --不起用用户访问权限
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=10.111.43.164" 此处hostname设置为要监控的进程所在机器的IP(进程本机)

注意这里的变量名千万不要使用JAVA_OPTS,如果使用JAVA_OPTS作为变量名的话在使用shutdown.sh停服务的时候回提示端口已被占用

第二种是配置用户权限:
找到 # OS specific support. $var _must_ be set to either true or false. 添加如下变量:
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=1090 --此端口号自定义,只要不是常用的或者系统已使用的即可,此处设置为1090
-Dcom.sun.management.jmxremote.authenticate=true --起用用户访问权限
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=10.111.43.164" --此处hostname设置为要监控的进程所在机器的IP(进程本机)
-Dcom.sun.management.jmxremote.acccess.file=/opt/apache-tomcat-7.0.57/jconsole/jmxremote.access -- 配置用户访问权限(这个目录为自定义,只要能读取到即可,无特殊要求)
-Dcom.sun.management.jmxremote.password.file=/opt/apache-tomcat-7.0.57/jconsole/jmxremote.password"

现在要配置访问权限的验证文件:
首先拷贝上面启动参数多出来的两个文件
root@ubuntu:/opt/apache-tomcat-7.0.57# mkdir jconsole
root@ubuntu:/opt/apache-tomcat-7.0.57# cp /opt/jdk1.8.0_60/jre/lib/management/jmxremote.access ./jconsole/
root@ubuntu:/opt/apache-tomcat-7.0.57# cp /opt/jdk1.8.0_60/jre/lib/management/jmxremote.password.template ./jconsole/jmxremote.password
然后需要变更文件的权限(访问文件权限必须是600,否则会报错,大家可以试一试):
root@ubuntu:/opt/apache-tomcat-7.0.57# chmod 600 ./jconsole/jmxremote.*

下面讲讲这两个文件:
jmxremote.access里面其实最主要的就是两行:
monitorRole readonly --这个只的是监控角色,权限为只读,如果仅仅只监控目的使用这个权限即可
controlRole readwrite --这个具有操作权限,可以停起server。

jmxremote.password这个文件里面需要将最下面两行的注释给去掉,此处就是后面代码里面需要验证的用户名和密码(此处的两个用户一个是monitorRole,密码为QED;另一个用户为controlRole,密码为R&D),此处的用户名密码是可以自定义成的。
monitorRole QED
controlRole R&D

自定义效果如下:
jmxremote.access
monitorRole-admin readonly
controlRole-admin readwrite

jmxremote.password
monitorRole-admin !QAZ123
controlRole-admin !QAZ123

到这里服务器端的配置就结束了,下面就只要重启server即可。

下面就到代码部分:

String jmxURL = "service:jmx:rmi:///jndi/rmi://10.111.43.164:1090/jmxrmi";
JMXServiceURL serviceURL = new JMXServiceURL(jmxURL);
Map<String, String[]> map = new HashMap<String, String[]>();
String[] credentials = new String[] { "monitorRole-admin", "!QAZ123" };
map.put("jmx.remote.credentials",credentials);
JMXConnector connector = JMXConnectorFactory.connect(serviceURL,map);
MBeanServerConnection msc = connector.getMBeanServerConnection();

JMX远程监控JVM的更多相关文章

  1. visualVM远程监控JVM

    对于完全没用使用过visualVM的初学者 环境:Windows PC上使用visualVM监控远端JVM @@@@jstatd方式连接@@@@ 1.Windows安装jdk,$JAVA_HOME/b ...

  2. 用JMX远程监控Tomcat

    要通过JMX远程监控Tomcat,首先需要进行Tomcat的JMX远程配置. 注意:此配置添加在catalina.bat文件开头的注释行(rem)后面即可. 不需鉴权的配置: 先修改Tomcat的启动 ...

  3. jvisualvm 连接 jstatd 远程监控 jvm 或 Visual GC提示"不受此JVM支持“

    Visual GC提示"不受此JVM支持",可以使用此方法解决. 一.添加配置文件 jstatd.all.policy [root@localhost /]# cd /usr/lo ...

  4. 在resin配置參数实现JConsole远程监控JVM

    在Resin配置參数实现JConsole远程监控JVM 在Resin中配置中配置下列參数,就能够是实现了! <jvm-arg>-Dcom.sun.management.jmxremote& ...

  5. 使用visualvm 远程监控 JVM

    1. 测试环境 Ubuntu Server 10.01 2.  在服务器上安装 jstatd 组件 使用apt-get 命令安装 openjdk 即可 : sudo apt-get install o ...

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

    自Java 6开始,Java程序启动时都会在JVM内部启动一个JMX agent,JMX agent会启动一个MBean server组件,把MBeans(Java平台标准的MBean + 你自己创建 ...

  7. VisualVM使用Jstatd和JMX远程监控配置(转载)

    一.Jstatd远程监控服务器配置 jstat可以实时显示本地或远程JVM进程中类装载.内存.垃圾收集.JIT编译等数据.如果要显示远程JVM信息,需要远程主机开启RMI支持,详情如下: 1. 在JA ...

  8. 使用JCONSOLE远程监控JVM

    启动JMS服务 JConsole是从Java 5中开始引入的一个用于对JVM性能和资源消耗进行监控的图形化工具.JConsole可以连接本地的Java程序,也可以连接远程的Java程序.由于是GUI的 ...

  9. visualvm远程监控jvm两种配置方法

    参考:http://blog.itpub.net/17203031/viewspace-765810 一.Jstatd RMI远程监控方法 VisualVM在监控本地JVM的时候是很方便的.只要应用程 ...

随机推荐

  1. linux 所有命令无法使用

    配置nginx时,错误export之后linux 所有命令无法使用 出现这个问题是因为系统的环境变量没有正确配置造成的,造成这个原因有很多,比如系统升级,比如不正当操作等导致环境变量被覆盖修改,解决的 ...

  2. bootstrap弹框去除遮罩层效果

    是通过css解决这个问题,核心css代码如下: .modal-backdrop { filter: alpha(opacity=)!important; opacity: !important; } ...

  3. Vue中使用Sass全局变量

    前言 假设我们原有项目的主题色是蓝色的,这时有个需求,需要把主题色改成橙色的.一般情况下,我们可能会在main.js中引入公共样式文件,但你会发现,在组件中使用公共样式文件中定义的某个参数时,会报一个 ...

  4. tinylib

    tinylib.h /* -------------------------------------------------------------------------------- oooo ` ...

  5. error: dereferencing pointer to incomplete type

    /******************************************************************************* * error: dereferenc ...

  6. freeNas 数据record

  7. zz 勵志貼,成功是努力加对的方向

    5-6年工作经验程序员初进大厂,如何适应工作? 李苦李 李苦李 ​ 华为 架构师 318 人赞同了该回答 泻药! 与题主背景非常相似. 本人毕业8年+,普通二本,学历不突出,非计算机专业. 唯一不同的 ...

  8. Invalid prop: custom validator check failed for prop "pagination" <Table> vue.runtime.esm

    错误如图 原因,返回数据中没有包括分布的属性

  9. 基于传统方法点云分割以及PCL中分割模块

      之前在微信公众号中更新了以下几个章节 1,如何学习PCL以及一些基础的知识 2,PCL中IO口以及common模块的介绍 3,PCL中常用的两种数据结构KDtree以及Octree树的介绍    ...

  10. PMP 第6章错题总结

    项目进度管理的步骤:   1.项目的商业价值指特定项目的成果能够为相关方带来的有形的或无形的效益. 其中有形的效益包括:股东权益.市场份额.货币资产 无形的效益包括:品牌认知度.商誉.战略一致性等2. ...