使用Jdk 自带的 jconsole 和 jvisualvm 工具能很方便地监控java 应用程序所占用jvm 的内存,线程等。通常我们所说的tomcat 服务器, 其实也就是java 的 一个应用程序而已, 它也是通过java 启动的。 所以,如果我们想要监控tomcat 所占用的jvm 内存, 线程等情况,需要在tomcat 启动参数做响应的配置。 监控本地的tomcat 是比较简单,不需要进行额外的配置, 直接使用jconsole 连接本地指定端口即可, 但是如果想监控远程的tomcat 服务器,那么则需要修改tomcat 启动参数。

笔者地测试环境为cetos 7.4 , tomcat 为 8.0.5. 不仅tomcat 可以设置, jboss 也可以设置的,方式大同小异。

一.无密码方式

此种方式比较简单, 直接catalina.sh 启动脚本即可, 配置文件位置: $tomcat_home/bin/catalina.sh, 修改片段如下:

1) 修改 tomcat 配置

# 设置内存,最大1024M, 最小128M
JAVA_OPTS="$JAVA_OPTS -Xms128m -Xmx1024m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=512m";

# 设置jmx 是否通过ssl 连接
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"

# 设置rmi 远程连接ip 地址
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.6.13"

# 设置jmx 远程连接端口号
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345"

# 设置jmx 远程连接是否需要用户认证,即用户名和密码
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"

2) 启动tomcat 服务器 :

$tomcat_home/bin/startup.sh 

3) 使用jconsole 远程连接

工具下载地址:
https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-windows-x64.exe

一路下一步安装即可。

4) 开始监控

二.有密码方式

jvm 的远程监控密码其实是由jdk 决定的,而不是由tomcat 决定的。 tomcat 只能设置是否启动用户认证功能和指定密码文件位置,但是jmx 的用户名密码和用户权限还是由jdk 来管理的。在jdk 安装目录的: $JAVA_HOME/jre/lib/management 下有以下几个配置文件:

jmxremote.access: 用户名-权限文件:  指定jmx 用户名和权限

jmxremote.password.template:  用户名-密码文件: 用户名和密码的模板文件

management.properties:  默认用户名权限文件和用户名密码文件为 $JAVA_HOME/jre/lib/management/ 目录下的 jmxremote.access 和 jmxremote.password 文件, 可以在此配置文件中修改需要复制jmxremote.password.template 文件为 jmxremote.password, 并将权限置为 600, 才可以能生效。
  1. 修改配置文件:

  1. 找到进入 jdk 目录下 $JAVA_HOME/jre/lib/management, 复制文件并修改权限

  1. jmxremote.access 添加用户 admin 并赋予只读权限, 文件末尾追加一行即可: admin readonly

  1. jmxremote.password 中为admin 用户设置密码, 文件末尾添加一行即可: admin 123456

  1. 启动tomcat: $tomcat_home/bin/startup.sh

  2. 使用jconsole 远程连接

三.java VisualVM

文件->添加JMX连接

补充(这两个功能相似都可以监控的):

四.JVM监控

https://www.zabbix.com/documentation/4.0/zh/manual/appendix/config/zabbix_java
https://www.zabbix.com/documentation/4.0/zh/manual/concepts/java

cmdline-jmxclient:
https://www.cnblogs.com/chrisDuan/p/4569312.html
https://www.tuicool.com/articles/qAv2Qv

https://www.cnblogs.com/crysmile/p/7071103.html

文档更新时间: 2019-07-25 21:19   作者:李延召