JConsole远程监控java应用

有时候,当你需要远程监控你服务器上的程序的运行情况,该怎么办呢?
其实jdk里面就已经给我们提供了相关的工具,JConsole就是一个很好的JMX工具。下面来看下怎么使用。

不需要用户认证的连接

如下图,我新建了一个名为demo-0.0.1-SNAPSHOT.jar 的应用,
在这里插入图片描述
然后我们用一下命令来运行这个项目:

java -Djava.rmi.server.hostname=192.168.37.129 -Djava.security.policy=jstatd.all.policy -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=5678 -Xms1g -Xmxg  -jar demo-0.0.1-SNAPSHOT.jar

在这里插入图片描述
其中

  • hostname :为远程服务器的地址,
  • port :jmx访问的端口。需要注意的是,利用JConsole工具进行连接的之前,要把服务器的JMX访问的防火墙端口关闭,这里是5678。
  • authenticate:是否需要进行身份验证
  • ssl : 是否允许使用ssl方式接入

然后运行 %JAVA_HOME%/bin/jconsole.exe,即你本地的java环境下的bin目录下的工具jconsole,填上刚才配置的地址和端口,就可以连接了。
在这里插入图片描述

连接成功后,如下图所示,你就可以看到堆内存、线程、cpu等信息的波动曲线了:
在这里插入图片描述

需要用户认证的连接

虽然上述方法已经可以登录进入了,但是线上服务我们最好需要用户认证登录才算是比较安全合理的。下面就来看看 如何给登录添加用户认证吧!

首先切换到你服务器环境安装的${JAVA_PATH}/jre/lib/management 环境下,找到对应的文件:

cd /usr/local/jdk1.8.0_161/jre/lib/management

你会看到一个jmxremote.password.template 文件 。
在这里插入图片描述
因为jmxremote.password.template为不可写文件 ,将其复制出来另一份,赋予写权限,修改相关内容:

 cp jmxremote.password.template jmxremote.password   //复制除另一份取名为 jmxremote.password 

 chmod +w jmxremote.password		//赋予写权限
 
 vi  jmxremote.password  //编辑

在这里插入图片描述
编辑后的内容很简单,打开倒数第二行monitorRole QED的注释,同时修改字段值,如下:
在这里插入图片描述

然后就可以运行项目,用一下命令,将authenticate字段值改为true

java -Djava.rmi.server.hostname=192.168.37.129 -Djava.security.policy=jstatd.all.policy -Dcom.sun.management.jmxremote.authenticate=true-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=5678 -Xms1g -Xmx1g  -jar demo-0.0.1-SNAPSHOT.jar

如果你觉得命令太长,你可以把部分新建一个环境变量追加到到系统环境/etc/profile文件的尾部中去:

 echo "export JAVA_ARGS='-Djava.rmi.server.hostname=192.168.37.129 -Djava.security.policy=jstatd.all.policy -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=5678''">> /etc/profile     //追加JAVA_ARGS环境变量

 source /etc/profile  //即时生效

那么,你可以用以下较短的命令来运行项目了:

java $JAVA_ARGS -Xms1g -Xmx1g -jar demo-0.0.1-SNAPSHOT.jar

在这里插入图片描述
可以看到,这里说 jmxremote.password文件没有读取访问权限,那么我们 再给它赋予权限

 chmod 700 jmxremote.password jmxremote.access      

再运行,就没有问题了。
在这里插入图片描述

项目跑起来后,就可以使用JConsole工具来使用用户认证方式连接了。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值