阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

JMX远程监控JVM

178次阅读
没有评论

共计 2754 个字符,预计需要花费 7 分钟才能阅读完成。

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

第二种是配置用户权限:
找到 # OS specific support. $var _must_ be set to either true or false. 添加如下变量:
JAVA_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 即可。
root@ubuntu:/opt/apache-tomcat-7.0.57/bin# ./shutdown.sh 此处应该会出现连接的 1090 端口被占用提示,这里只需要将这个进程强制杀掉即可,jps 查到进程号,kill -9 pid
root@ubuntu:/opt/apache-tomcat-7.0.57/bin# ./startup.sh

下面就到代码部分:

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();

浅谈 JVM 的实现与垃圾回收机制  http://www.linuxidc.com/Linux/2016-01/127618.htm

在 Linux 中安装 Oracle JDK 8 以及 JVM 的类加载机制  http://www.linuxidc.com/Linux/2015-04/116491.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-03/128786.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2754字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中