第八篇、linux中配置安装jvisualvm监听工具

介绍

jdk自带有个jvisualvm工具、该工具是用来监控java运行程序的cpu、内存、线程等的使用情况。并且使用图表的方式监控java程序、还具有远程监控能力。
在这里插入图片描述

配置
  1. 在你的tomcat的bin目录下 startup.sh,在最后一行的前面(这个是重点,如果加在最后一行是无法读取的)
export CATALINA_OPTS="$CATALINA_OPTS 
# 主机的地址,指的是你的服务器的外网访问地址
-Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx     
# 端口号,指的是通过哪个端口监听
-Dcom.sun.management.jmxremote.port=xxx
-Dcom.sun.management.jmxremote.ssl=false
# 是否开启认证,false的时候可以不用密码访问 (这个配置可以不加)
-Dcom.sun.management.jmxremote.authenticate=true
# 下面这两个是开启认证之后的用户名密码存放的路径 (这个配置可以不加)
-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password 
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access"
  1. 如果开启认证,编写认证的用户名密码文件
    • jmxremote.access的配置
        username1 readonly
        username2 readwrite
    
    • jmxremote.password的配置
        username1 password1
        username2 password2
    
  2. 将2中配置的两个文件开启权限
        chmod 600 jmx*
    
  3. 打开jvisualvm软件(在jdk的bin目录下)
  4. 添加远程连接,输入ip然后点确定
    在这里插入图片描述
    在这里插入图片描述
  5. 点击添加JMX连接
    在这里插入图片描述
  6. 然后输入远程主机的用户名密码就可以了
    在这里插入图片描述
问题及解决

配置都好了,能够ping通服务器,但是远程通过JMX访问不到,只有关闭防火墙才能访问到。
防火墙的配置规则,应该怎么配?==>


问题分析:

  1. 通过netstat查看端口号,显示1100为LISTEN;监听是正常的;
  2. iptables中已经将端口号1100置为开放的;
  3. 远程通过telnet 时,telnet是正常的;
  4. (但是)通过jconsole 进行连接时,连接不上;
  5. (如果)关闭firewall的话,第4步的方式是可以成功的;

解答:
除了JMX server指定的监听端口号外,JMXserver还会监听一到两个随机端口号,
可以通过命令:lsof -i|grep java |grep 来查看当前java进程需要监听的随机端口号,

///begin
# netstat -tupln |grep 1101
tcp        0      0 0.0.0.0:1101                0.0.0.0:*                   LISTEN      13997/java          
# lsof -i|grep 13997
java      13997    root    9u  IPv4 132890      0t0  TCP *:37040 (LISTEN)
java      13997    root   70u  IPv4 132891      0t0  TCP *:pt2-discover (LISTEN)
java      13997    root   72u  IPv4 132892      0t0  TCP *:40085 (LISTEN)
java      13997    root   76u  IPv4 146976      0t0  TCP hotnamea:61618->10.88.146.205:49165 (ESTABLISHED)
java      13997    root   84u  IPv4 132904      0t0  TCP *:61618 (LISTEN)
java      13997    root   95u  IPv4 132936      0t0  TCP *:8163 (LISTEN)
///end//

并且把这些端口号也放到iptable中,置为开放状态。

小结:这也证明了尽管jmx server的主监听端口号【1100】已开放,但是远程连接时,还是访问不到,只有关闭firewall,才可以远程jmx连接上。
建议:因为随机短口号是Java进程启动后,OS随机分配给jmxserver的,如果可以关闭firewall就选择关闭,否则,需要每次在server就绪后,监测到随机端口号,并把它们配置到iptables中,置为开放状态。
注意:每个Jmxserver还需要两个随机端口号。

参考文献
https://www.iteye.com/blog/qian0021514578-2189041  
https://my.oschina.net/kone/blog/157239
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值