【Linux运维入门】JMX方式远程监控Linux下JVM运行情况

这篇博客以JBoss服务器为例,介绍JMX以方式如何配置,以远程连接服务器,查看JVM运行情况。其他服务器如Tomcat等类似。

运行环境

1. 服务器:CentOS 7(最小化安装) ip:192.168.22.249 jdk:1.8
2. JBoss版本:Jboss-eap-6.2
3. 客户端:WindowOS ip:xxx.xxx.xx.xx jdk:1.8


JMX方式也分为两种,一种是不使用用户名密码登录,另一种是使用用户名和密码。两种方式配置稍有不同,区别的话,当然是使用用户名和密码登录比较安全。只有知道密码的人才可以远程连接服务器。

第一种方式:不需要用户名密码


① 修改JBoss启动配置文件standalone.conf

进入JBoss目录:{Jboss_Home}/bin,打开JBoss启动配置文件standalone.conf。修改/添加下列代码:

a.

if [ "x$JBOSS_MODULES_SYSTEM_PKGS" = "x" ]; then
       JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman,org.jboss.logmanager"
    fi

b.

    # ===========add these OPTS for JMX by Er Niu=================== 
    JBOSS_HOME_DIR="/usr/local/jboss6.2" 
    JAVA_OPTS="${JAVA_OPTS} -Djava.rmi.server.hostname=192.168.22.249 -Dcom.sun.management.jmxremote.port=5789" 
    JAVA_OPTS="${JAVA_OPTS} -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" 
    #Use the jboss logmanager 
    JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager" 
    JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-1.5.1.Final-redhat-1.jar"
    JAVA_OPTS="$JAVA_OPTS -Dorg.jboss.logging.Logger.pluginClass=org.jboss.logging.logmanager.LoggerPluginImpl"
    # =========================== End ==============================

【示例图片】

【Linux运维入门】JMX方式远程监控Linux下JVM运行情况_第1张图片

这几个配置的说明如下:

-Dcom.sun.management.jmxremote.port:这个是配置远程connection的端口号的,要确定这个端口没有被占用

-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false:这两个是固定配置,是JMX的远程服务权限的

-Djava.rmi.server.hostname:这个是配置server的IP的,要使用server的IP最好在机器上先用hostname –i看一下IP是不是机器本身的IP,如果是127.0.0.1的话要改一下,否则远程的时候连不上,目前我们的server上我已经都改好了。

另外一定要注意配置上 #Use the jboss logmanager… 要不然JBoss启动不起来。报找不到logmanager 的错误。
如图:

【Linux运维入门】JMX方式远程监控Linux下JVM运行情况_第2张图片

② 启动JBoss服务器:

./standalone.sh -b 192.168.21.35 通过-b参数指定Jboss服务器绑定的地址,允许所有用户远程连接 则为 -b 0.0.0.0

使用命令:nohup ./standalone.sh 以后台方式启动JBoss

③ 测试远程连接:

I 通过VisualVM连接:

a. 在/java_home/bin目录 打开VisualVM,添加远程主机—>添加JMX连接。

【Linux运维入门】JMX方式远程监控Linux下JVM运行情况_第3张图片

b. 输入远程服务器IP + 端口号即可

c. 效果:

【Linux运维入门】JMX方式远程监控Linux下JVM运行情况_第4张图片

II 用JConsole连接:

a. 在/java_home/bin目录 打开Jconsole ,在远程进程栏输入要远程的服务器 IP + 端口号,连接即可。

【Linux运维入门】JMX方式远程监控Linux下JVM运行情况_第5张图片

b. 效果:
若出现,安装连接失败提示,选择不安全的连接按钮。

【Linux运维入门】JMX方式远程监控Linux下JVM运行情况_第6张图片

第二种方式:通过用户名密码连接

① 进入目录:java_home/jre/lib/management

将jmxremote.password.template文件复制一份,改名为:jmxremote.password
并且将最后两行内容修改为:

如果不做修改 登入的用户名:monitorRole 密码:QED (可根据需要修改用户名密码,但是如果做修改也要同时修改jmxremote.access中的相对应名字的权限)

② 获取这几个文件的权限

chmod  600 jmxremote.password
chmod  600 jmxremote.access

③ 打开JBoss启动配置文件standalone.conf,添加如下代码:

# ===========add these OPTS for JMX by Er Niu=================== 
JBOSS_HOME_DIR="/usr/local/jboss6.2" 
JAVA_OPTS="${JAVA_OPTS} -Djava.rmi.server.hostname=192.168.22.249 -Dcom.sun.management.jmxremote.port=5789" 
JAVA_OPTS="${JAVA_OPTS} -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" 
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.password.file=/usr/local/jdk1.8/jre/lib/management/jmxremote.password"
#Use the jboss logmanager 
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager" 
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-1.5.1.Final-redhat-1.jar"
JAVA_OPTS="$JAVA_OPTS -Dorg.jboss.logging.Logger.pluginClass=org.jboss.logging.logmanager.LoggerPluginImpl"
# =========================== End ==============================

④ 然后在按照第一种方式的步骤启动JBoss,连接即可

【Linux运维入门】JMX方式远程监控Linux下JVM运行情况_第7张图片

至此这两篇博客就把如何远程监控Linux服务器上JVM运行情况讲解完了。一共两种连接方式,两种工具。根据自己的需要自行选择即可。

你可能感兴趣的:(jvm,jdk,jboss,centos)