监控普通的java进程 1. 设置hostname 在/etc/hosts中添加hostname解析,解析地址能够不是外网ip(可经过hostname命令查看hostname是多少) 2. 启动时添加参数 如: java -Djava.rmi.server.hostname=xxx.xxx.xxx -Dcom.sun.management.jmxremote.port=22334 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false Hello 其中xxx.xxx.xxx为本机外网ip,22334为提供jmx访问的端口,可本身指定 若是没有配置hostname解析可能会出现以下异常: Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: 3. 在防火墙中开放端口 使用命令: lsof -i | grep java | grep “启动的java进程pid”(可经过jps查看) 将查看上一步查看到的tcp监听端口所有在防火墙中进行开放,注意关闭该java进程后从新启动须要从新配置开发的端口,由于监听的端口会发生变化 4. 打开visualVm或jconsole输入ip(2中配置的xxx.xxx.xxx)和端口(22334)进行链接便可查看监控,无需输入用户名和密码
监控普通的tomcat 1. 下载catalina-jmx-remote.jar,放在tomcat/lib目录下面 地址示例:http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.35/bin/extras/ 请根据本身的tomcat版本选择对应的包 2. 配置conf/server.xml 在server.xml中添加以下监听配置 <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="22334" rmiServerPortPlatform="22334" /> 有了该可以使得每次重启tomat不须要从新在防火墙中开放端口,由于会使用配置的22334端口 3. 修改bin/catalina.sh 添加配置: CATALINA_OPTS="${CATALINA_OPTS} -Djava.rmi.server.hostname=服务器的外网ip地址" CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote=true" CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote.ssl=false" CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote.authenticate=false" 3. 在防火墙中开放端口 在防火墙中开发22334端口 4. 打开visualVm或jconsole输入ip(3中配置的服务器的外网ip地址)和端口(22334)进行链接便可查看监控,无需输入用户名和密码
1. 添加帐号 进入/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91.x86_64/jre/lib/management/目录(可经过jinfo pid|grep java.home的查看本身的java.home) 执行命令: mv jmxremote.password.template jmxremote.password chmod 600 jmxremote.password vim jmxremote.password 将被注释的monitorRole,和controlRole放开,并修改密码123456 monitorRole 123456 controlRole 123456 2.修改以前的启动配置 修改配置: -Dcom.sun.management.jmxremote.authenticate=true 添加配置: -Dcom.sun.management.jmxremote.password.file=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91.x86_64/jre/lib/management/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91.x86_64/jre/lib/management/jmxremote.access 3. 启动 打开visualVm或jconsole输入ip+端口,而后输入以前设置的帐号controlRole 和密码 123456便可连上
1、开启权限 在/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91.x86_64/jre/lib/security/java.policy中添加 permission java.security.AllPermission; 2、启动 rmiregistry 2020&jstatd -J-Djava.security.policy=all.policy -J-Djava.rmi.server.logCalls=true -J-Djava.rmi.server.hostname=服务器外网ip -p 1099 3、开放端口 经过netstat -ntlp|grep jstatd查看监听的端口(注意有两个监听端口),在防火墙中进行开放该端口 若是出现: java.rmi.NotBoundException: JStatRemoteHost 通常等一段时间就恢复正常了 4、打开visualVm添加远程主机会自动加载远程java进程