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. 添加如下变量:
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的更多相关文章
- visualVM远程监控JVM
对于完全没用使用过visualVM的初学者 环境:Windows PC上使用visualVM监控远端JVM @@@@jstatd方式连接@@@@ 1.Windows安装jdk,$JAVA_HOME/b ...
- 用JMX远程监控Tomcat
要通过JMX远程监控Tomcat,首先需要进行Tomcat的JMX远程配置. 注意:此配置添加在catalina.bat文件开头的注释行(rem)后面即可. 不需鉴权的配置: 先修改Tomcat的启动 ...
- jvisualvm 连接 jstatd 远程监控 jvm 或 Visual GC提示"不受此JVM支持“
Visual GC提示"不受此JVM支持",可以使用此方法解决. 一.添加配置文件 jstatd.all.policy [root@localhost /]# cd /usr/lo ...
- 在resin配置參数实现JConsole远程监控JVM
在Resin配置參数实现JConsole远程监控JVM 在Resin中配置中配置下列參数,就能够是实现了! <jvm-arg>-Dcom.sun.management.jmxremote& ...
- 使用visualvm 远程监控 JVM
1. 测试环境 Ubuntu Server 10.01 2. 在服务器上安装 jstatd 组件 使用apt-get 命令安装 openjdk 即可 : sudo apt-get install o ...
- 利用VisualVm和JMX远程监控Java进程
自Java 6开始,Java程序启动时都会在JVM内部启动一个JMX agent,JMX agent会启动一个MBean server组件,把MBeans(Java平台标准的MBean + 你自己创建 ...
- VisualVM使用Jstatd和JMX远程监控配置(转载)
一.Jstatd远程监控服务器配置 jstat可以实时显示本地或远程JVM进程中类装载.内存.垃圾收集.JIT编译等数据.如果要显示远程JVM信息,需要远程主机开启RMI支持,详情如下: 1. 在JA ...
- 使用JCONSOLE远程监控JVM
启动JMS服务 JConsole是从Java 5中开始引入的一个用于对JVM性能和资源消耗进行监控的图形化工具.JConsole可以连接本地的Java程序,也可以连接远程的Java程序.由于是GUI的 ...
- visualvm远程监控jvm两种配置方法
参考:http://blog.itpub.net/17203031/viewspace-765810 一.Jstatd RMI远程监控方法 VisualVM在监控本地JVM的时候是很方便的.只要应用程 ...
随机推荐
- 第02组 Alpha冲刺(3/4)
队名:十一个憨批 组长博客 作业博客 组长黄智 过去两天完成的任务:写博客,复习C语言 GitHub签入记录 接下来的计划:构思游戏实现 还剩下哪些任务:敲代码 燃尽图 遇到的困难:Alpha冲刺时间 ...
- orm-1
- ORM什么是? 类名 ---> 数据库表 对象 ---> 记录 对象.属性 ---> 字段 - ORM的优缺点: 优点: 可跨平台,可以通过对象.属性取值,对象.方法,让该方法内 ...
- C函数之index、strtoul
index函数 函数定义: #include<strings.h> char *index(const char *s, int c); 函数说明: 找出参数s字符串中第一个出现参数c的地 ...
- ModuleNotFoundError: No module named 'rest_framework_swagger'
pip3.6 install django-rest-swagger
- 《京东上千页面搭建基石——CMS前后端分离演进史》阅读笔记
一.背景 CMS即内容管理系统,目的是用于快速进行网站建设或者网页开发. 对于京东网站部门来说,CMS核心目的是用来快速开发和上线各种页面,诸如各种垂直频道页. 二.CMS核心目的 进行数据和模板的统 ...
- MySQL 是如何利用索引的
阅读本文大概需要 4 分钟. 一.前言 在 MySQL 中进行 SQL 优化的时候,经常会在一些情况下,对 MySQL 能否利用索引有一些迷惑.例如: MySQL 在遇到范围查询条件的时候就停止匹配了 ...
- 【Alpha】“北航社团帮”小程序v1.0测试报告
目录 测试计划.过程和结果 后端单元测试 后端压力测试 测试结果 指标解释 前端测试 授权登录与权限检查 功能测试 兼容性测试 性能测试 回答课程组问题 测试中发现的bug 场景测试 测试矩阵 出口条 ...
- vue中select设置默认选中
vue中select设置默认选中 一.总结 一句话总结: 通过v-model来:select上v-model的值为option默认选中的那项的值(value) 二.select设置默认选中实例 < ...
- Postman 插件安装和使用
1.google商店 搜索“谷歌访问助手” 2.在商店搜索Postman 3.安装Postman 4.访问chrome://apps/ 5.点击postman
- eggjs异常捕获机制
1. try catch捕获异步链中的方法 2. ctx.runInBackground(scope)捕获跳出异步链的方法 // 旧代码 class HomeController extends Co ...