rmi与jstatd远程监控虚拟机

       由于我们的生产系统架构是一台与主机挂了四台tomcat,主机内存8G,我担心访问量大了之后会OOM,所以想用jvisualVM把虚拟机监控起来,于是乎网上一顿找,基本上讲的都是分两类监控模式,一种是rmi,一种是jstatd,rmi的很顺利的完成了,但是关于jstatd的监控却始终不行,下面湿解决rmi与jstatd监控的终级办法。

1 配置前的准备

我们需要先检查linux的hostname匹配的IP,执行

hostname -i

如果匹配的结果是无法识别或者127.0.0.1, 则需要手动配置主机名和IP映射。假设要用于建立连接的IP是49.92.35.31,主机名是abc:

vi /etc/hosts

添加一行

49.92.35.31  abc

2 配置JMX

2.1 创建setenv.sh

进入tomcat/bin目录

添加文件

setenv.sh 内容为:

JAVA_OPTS="-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=49.92.35.31"

设置权限

chmod +x setenv.sh

 

2.2 在要监听的tomcat/conf/server.xml中添加listener

  1. <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />  

2.3 JMX访问控制文件

进入tomcat/conf目录

添加jmxremote.access与jmxremote.password两个文件,文件内容网上都有,可以查找,就是jvisualvm.exe远程连接的密码

修改权限

chmod 600 jmxremote.password

chmod 600 jmxremote.access

2.4 添加catalina-jmx-remote.jar

将此ja包放入tomcat/lib目录里

开启防火墙

开启tomcat

在客户机上telnet 服务器的10001和10002端口,如果都通就正确了。

2.6 测试

在客户机上启动jvisualvm.exe,在左侧树形菜单的远程上右键 -> 添加远程主机,主机名填写服务器IP

 

确定后,远程下出现新的子节点,在子节点上右键 -> 添加JMX连接

连接输入(ipconfig)IP:10001,注意这个端口是2.2步骤中配置的rmiRegistryPort。勾选使用安全凭证,用户名和口令即2.3步骤中jmxremote.password文件内的用户名和对应密码。勾选保存安全凭证(不使用安全凭证也可登录)

 

本文的配置中未启用SSL,点确定后会提示“请确认不用SSL方式尝试连接”,选择“是”。如果一切顺利在服务器节点下出现JMX连接子节点,双击后即可打开功能界面。

 

尝试一下强大的Visual GC插件,很遗憾,提示"不受此JVM支持“,如果想使用这个插件,就需要配置jstatd连接方式,下面来看jstatd的配置。

vi $JAVA_HOME/jre/lib/security/java.policy

在文件末位的 }; 前添加

permission java.security.AllPermission;

 

3.2 启动jstatd

cd $JAVA_HOME/bin

创建jstatd.all.policy文件,文件内容:

grant codebase "file:${java.home}/../lib/tools.jar" {

permission java.security.AllPermission;

};

 

保存退出

执行./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=47.92.35.36 -p 10003 -J-Djava.rmi.server.logCalls=false

注释:-J-Djava.rmi.server.logCalls=true 打开日志,如果客户端有连接过来的请求,可以监控到,便于排错;

3.3查看jstatd端口:

执行 netstat -anp

找到 jstatd对应的连个端口。需要将这两个端口都释放在防火墙之外,并且每次重启jstatd,一个随机端口会变化,需要重新释放最后以jstatd方式远程连接,输入此端口 或者 10003, 等2分钟都试一下,有的时候都管用,有的时候只有一个管用

至此,大功告成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值