java visualVM(jconsole)遠程監控服務器java進程

一、 JMX方式(jconsole也可經過此方式進行鏈接)
  jmx方式能監控到CPU信息,但沒法使用visualVM的visualVM GC插件
 
    jmx無密碼方式
監控普通的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)進行鏈接便可查看監控,無需輸入用戶名和密碼
 
  jmx有密碼方式
 
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便可連上

 

二、jstatd方式
  jstatd方式能使用visualVM的visualVM GC插件,但沒法監控到CPU信息
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進程
相關文章
相關標籤/搜索