JMX远程图形化监控、管理JVM
2017-06-01 15:31
211 查看
问题背景讨论:在Java运行时,对JVM系统的检测、管理是开发同学一直期望的,目前有一些开源产品开源针对JVM进行监控,例如javamelody等等,这样框架虽然好,但是如果使用会带来一些问题。第一:由于javamelody入口是一个filter,所以会带来性能问题、第二:如果应用服务器很多,会缺乏统一管理,此外安全性、爬虫等等问题略过不提
JDK自带了故障检测工具Jconsole和1.6出来的Jvisualvm都可以远程对服务器进行监控,后者甚是提供可以在线得到ThreadDump和HeapDump文件,更是提供了可扩展插件功能(虽然可能会影响jvm服务器性能)
配置远程连接tomcat需要在tomcat所在服务器修改几个配置
1) 修改JMX配置
进入JAVA_HOME/jre/lib/management路径下面
将jmxremote.password.template改成jmxremote.password,将内容中的monitorRole QED的注释去掉
将management.properties中的com.sun.management.jmxremote.port=(改成你想要的JMX端口号)
将 com.sun.management.jmxremote.ssl=false、 com.sun.management.jmxremote.authenticate=false注释打开
注意:Linux下需要该权限,chmod
600 jmxremote.access, chmod 600 jmxremote.password
window下特麻烦,现需要jdk装在NTFS文件系统下,选中文件,点右键“属性”-〉安全,点“高级”,去掉“从父项继承....”,弹出窗口中选“删除”,这样删除了所有访问权限。再选“添加”-〉高级,“立即查找”,选中你的用户,例administrator,点“确定",“确定"。来到权限窗口,勾选"完全控制",点"确定",OK了。
用jconsole连接远程linux服务时, IP地址和port都输入正确的情况下,仍然是连接失败
vi /etc/hosts,将hostname对应的ip改为真实ip
2) 修改tomcat启动参数
windows下面为catalina.bat、linux下面为cataina.sh
set CATALINA_OPTS=-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port="JMXport"
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
如果不修改的时候默远程连接不上,远程连接的通过IP和JMX端口找到JVM虚拟机后无法定位具体哪个应用使用JMX端口,所以只有在启动tomcat情况后占用JMX
关于配置JMX,可以具体参考http://download.Oracle.com/javase/1.5.0/docs/guide/management/agent.html#remote
注意:jmxremote.password和jmxremote.access文件只允许启动用户名对该文件拥有读写权限,我们服务用root启动 所以:
如果权限设置不正确会报错:Error: Password file read access must be restricted
jmxremote.password模板:
jmxremote.access模板:
[html] view
plain copy
#说明
#tomcat的jvm参数
JAVA_OPTS="-server -XX:PermSize=128M -XX:MaxPermSize=256M -Xms1024M -Xmx1024M -Xmn384M -XX:SurvivorRatio=8 -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=10 -XX:+CMSClassUnloadingEnabled -XX:+CMSParallelRemarkEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=20 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=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"
#jmxremote.access和jmxremote.password文件只允许启动用户名对该文件拥有读写权限,把这两个文件放到tomcat的conf目录下
chmod 600 jmxremote*
chown root:root jmxremote*
远程机器的程序需要加上JVM参数:
另外需要检查
解决方法一:
可以使用如下的参数手动指定 hostname 或者 ip 地址
解决方法二:
修改/etc/hosts文件下的localhost对应的IP(127.0.0.1)地址,改为linux自身的IP如10.0.0.157.
解决方法三(推荐):
hostname 192.168.175.128
JDK自带了故障检测工具Jconsole和1.6出来的Jvisualvm都可以远程对服务器进行监控,后者甚是提供可以在线得到ThreadDump和HeapDump文件,更是提供了可扩展插件功能(虽然可能会影响jvm服务器性能)
配置远程连接tomcat需要在tomcat所在服务器修改几个配置
1) 修改JMX配置
进入JAVA_HOME/jre/lib/management路径下面
将jmxremote.password.template改成jmxremote.password,将内容中的monitorRole QED的注释去掉
将management.properties中的com.sun.management.jmxremote.port=(改成你想要的JMX端口号)
将 com.sun.management.jmxremote.ssl=false、 com.sun.management.jmxremote.authenticate=false注释打开
注意:Linux下需要该权限,chmod
600 jmxremote.access, chmod 600 jmxremote.password
window下特麻烦,现需要jdk装在NTFS文件系统下,选中文件,点右键“属性”-〉安全,点“高级”,去掉“从父项继承....”,弹出窗口中选“删除”,这样删除了所有访问权限。再选“添加”-〉高级,“立即查找”,选中你的用户,例administrator,点“确定",“确定"。来到权限窗口,勾选"完全控制",点"确定",OK了。
用jconsole连接远程linux服务时, IP地址和port都输入正确的情况下,仍然是连接失败
vi /etc/hosts,将hostname对应的ip改为真实ip
2) 修改tomcat启动参数
windows下面为catalina.bat、linux下面为cataina.sh
set CATALINA_OPTS=-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port="JMXport"
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
如果不修改的时候默远程连接不上,远程连接的通过IP和JMX端口找到JVM虚拟机后无法定位具体哪个应用使用JMX端口,所以只有在启动tomcat情况后占用JMX
关于配置JMX,可以具体参考http://download.Oracle.com/javase/1.5.0/docs/guide/management/agent.html#remote
另一种配置------认证配置
#指定hostname 一般情况需要重新指定hostname,否则连接不成功 -Djava.rmi.server.hostname=192.168.0.147 #指定hostname 指定端口默认:1099 -Dcom.sun.management.jmxremote.port=8899 #禁止ssl连接 com.sun.management.jmxremote.ssl=false #开启用户认证 com.sun.management.jmxremote.authenticate=true #认证用户名密码 -Dcom.sun.management.jmxremote.password.file=/opt/home/lichengwu/jvm/management/jmxremote.password #访问模式 -Dcom.sun.management.jmxremote.access.file=/opt/home/lichengwu/jvm/management/jmxremote.access
注意:jmxremote.password和jmxremote.access文件只允许启动用户名对该文件拥有读写权限,我们服务用root启动 所以:
[root@dog:management]# chmod 600 * [root@dog:management]# chown root:root * [root@dog:management]# ll total 8 -rw------- 1 root root 29 Nov 14 16:38 jmxremote.access -rw------- 1 root root 26 Nov 14 16:38 jmxremote.password [root@dog:management]#
如果权限设置不正确会报错:Error: Password file read access must be restricted
jmxremote.password模板:
[用户名] [密码] mtct ct.meituan test test
jmxremote.access模板:
[用户名] [权限] mtct readwrite test readonly
[html] view
plain copy
#说明
#tomcat的jvm参数
JAVA_OPTS="-server -XX:PermSize=128M -XX:MaxPermSize=256M -Xms1024M -Xmx1024M -Xmn384M -XX:SurvivorRatio=8 -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=10 -XX:+CMSClassUnloadingEnabled -XX:+CMSParallelRemarkEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=20 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=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"
#jmxremote.access和jmxremote.password文件只允许启动用户名对该文件拥有读写权限,把这两个文件放到tomcat的conf目录下
chmod 600 jmxremote*
chown root:root jmxremote*
远程机器的程序需要加上JVM参数:
另外需要检查
hostname –i,看解析出来是否为本地的IP,如是127.0.0.1或者IP为多个IP中之一,则其他的IP无效,会连接不上。
解决方法一:
可以使用如下的参数手动指定 hostname 或者 ip 地址
解决方法二:
修改/etc/hosts文件下的localhost对应的IP(127.0.0.1)地址,改为linux自身的IP如10.0.0.157.
解决方法三(推荐):
hostname 192.168.175.128
相关文章推荐
- 运用JMX远程监控、管理JVM
- 施用JMX远程监控、管理JVM
- 使用jvisualvm通过JMX的方式远程监控JVM的运行情况
- jmx 远程监控 jvm及weblogic
- jvm远程监控配置,以openfire为例,jmx方式监控
- 远程监控JVM--VisualVM
- 远程监控tomcat的JVM运行情况详解
- 利用Gearman来实现远程监控与管理
- RMON MIB:远程监控 管理信息库
- 通过JMX监控管理weblogic的运行
- Vmware 远程监控管理导言
- 通过JMX监控管理weblogic的运行
- Linux下远程图形化管理的几种途径
- 使用Java自带的VisualVM监控远程主机JVM内存使用情况
- 解决tomcat启动jmx远程管理后不能正常关闭问题
- 远程管理路由器和监控
- 利用Gearman来实现远程监控与管理 – Tim[后端技术]
- Linux操作系统远程图形化管理的几种途径
- 校园无忧远程管理、监控软件 官网
- 做好远程监控与管理