監控普通的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進程