一、介绍
Jconsole,Java Monitoring and Management Console。
java监控和管理控制台,从java5开始,在JDK中提供。
用于对JVM中内存,线程和类等的监控。
二、本地监控
a)在Java项目启动脚本中加上 -Dcom.sun.management.jmxremote
如:java -Dcom.sun.management.jmxremote -jar imstart.jar
b)查询启动Java项目的PID window中在"任务管理器"中直接可以查看[首次使用需要在"查看"--"选项列"--"pid"]或者使用命令 tasklist
linux ps -ef|grep java
c)进入%JDK_HOME%bin/目录 cmd模式中输入 jconsole [pid]
三、远程监控
a)匿名远程监控
匿名远程监控即无效认证就可以监控。
在Java项目启动脚本中加上如下选项
-Djava.rmi.server.hostname=192.168.1.*[服务器ip] -Dcom.sun.management.jmxremote.port=8088[jmx端口]
-Dcom.sun.management.jmxremote.ssl=false[不使用SSL] -Dcom.sun.management.jmxremote.authenticate=false[匿名]
打开Jconsole选择"远程"输入IP 端口 连接
b)认证远程监控
在%JRE_HOME%/lib/management/目录下[简称MM目录]编辑"jmxremote.access"[用户名]文件
[用户名] [权限]
monitorRole readonly [只读]
controlRole readwrite [读写]
zxpRole readwrite [读写]
在MM目录下找到密码模板"jmxremote.password.template"复制一份根据自己喜欢的命名如:"jmxremote.password"并编辑该文件
[用户名] [密码]
monitorRole QED
controlRole R&D
zxpRole xxx
在MM目录下编辑"management.properties"文件
将该文件中的参数"#"去除表示可用并填写相应的参数值如:
com.sun.management.jmxremote.port=8088
com.sun.management.jmxremote.ssl=false
com.sun.management.jmxremote.authenticate=true[认证]
com.sun.management.jmxremote.password.file=C:/Java/jre1.5.0_15/lib/management/jmxremote.password
com.sun.management.jmxremote.access.file=C:/Java/jre1.5.0_15/lib/management/jmxremote.access
完成以上操作后最后编辑Java项目启动脚本加上以下参数
java -Dcom.sun.management.config.file=C:/Java/jre1.5.0_15/lib/management/management.properties -Djava.rmi.server.hostname=192.168.1.132 -jar imstart.jar
打开Jconsole选择"远程"输入IP 端口 用户名 密码 连接
四、自已测试成功命令
#!/bin/bash
CLASSPATH=../MTOServer:./lib/newcomapi.jar:./lib/build-1.02.jar:./lib/configapi.jar:./lib/log4j-1.2.8.jar:./lib/logapi.jar
java -Xmx1024m -Djava.rmi.server.hostname=192.168.0.244 -Dcom.sun.management.jmxremote.port=7777 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -cp "$CLASSPATH" com.xuanwu.smap.cmppmtoserver.YDMtoServer > /home/esms/gateway/startScript/MTOServer/console.log & echo $! > /home/esms/gateway/startScript/MTOServer/ps.pid &
echo "MTOServer is runing"