JVM 监控

JVM 监控使用 JMX(Java Management Extensions,即Java管理扩展) 连接到本地或者远程 JVM,其中本地 JVM 不需要专门配置开启 JVM 的 JMX。远程主机必须在远程 JVM 上启用 JMX。

工作方式

Finderweb是一个集群系统,集群内每台机器上都可能运行着数个 JVM 实例,不同的 JVM 上可能运行着不同的应用,不同的应用可能归属于不同的开发者。为了便于授权,可以在不同的finderweb节点上监控不同的 JVM 实例。所以,Finderweb集群内的每一个节点上都可以存在不同的、多个要监控的 JVM。

JVM 监控配置

1. 登录管理后台进入系统设置 - JVM 监控,选择一个主机并点击编辑。
2. 在 JVM 列表页面添加多个要监控的 JVM。
本地虚拟机:是指和finderweb运行在同一台机器,同一个用户下的其他 JVM,当然也可以监控finderweb自己。
远程虚拟机:是指和finderweb运行在不同的机器上的其他 JVM,远程 JVM 必须开启 JMX 才能连接。
由于被监控的 JVM 可能会重启,所以Finderweb会每隔3分钟扫描内存中的连接池,如果某个连接已经中断,则尝试重建。
本地虚拟机连接重建:扫描本地正在运行的 JVM,如果匹配某个配置的条件则建立连接。
本地虚拟机匹配:由于 JVM 每次启动的进程ID都不同,所以无法通过配置 PID 来实现监控。Finderweb通过配置 JVM 启动时的命令行参数中的关键字进行匹配。
例如:某个Tomcat实例启动时的命令行参数包含了Tomcat的根路径,如:-Djava.util.logging.config.file=D:\Tomcat-8.5.11\conf\logging.properties
则对应的 JVM 的关键字可以配置为:Tomcat-8.5.11,系统在查找本地虚拟机时根据配置的关键字查找 JVM 的启动参数,如果匹配则加入到监控中。
更详细的帮助说明请参考 系统设置 - JVM 监控 中的帮助。

JVM 监控原理

了解Finderweb中JVM监控的实现原理有助于更好的做监控配置。
Finderweb中JVM监控是基于 JMX(Java Management Extensions,即Java管理扩展) 实现的,其中 JVM 监控包括本地 JVM 监控和远程 JVM 监控。
本地 JVM: 是指和finderweb运行于同一台机器上的其他 JVM,例如:在一台机器上有两个Tomcat在运行,这就是两个 JVM。Linux系统还有一个条件是这个 JVM 必须得是同一个操作系统用户启动的。
远程 JVM: 是指运行在其他机器上的 JVM,finderweb通过 JMX 远程连接到目标机上的 JVM。远程 JVM 必须开启 JMX。
本地 JVM 关键字:Finderweb要监控本地的 JVM,必须指定一个关键字。这个关键字包含在该本地 JVM 启动时命令行参数中,Finderweb通过扫描本地启动的 JVM,并获取每一个 JVM 启动参数与配置的关键字做比较,如果命令行参数中包含该关键字,则加入到监控中。
实际上 SUN 的本地虚拟机API提供的功能是通过进程ID连接到对应的 JVM 上的,但是由于 JVM 可能重启,所以在Finderweb中通过指定关键字,可以在虚拟机重启之后自动重新连接。
远程 JVM 需要指定远程 JVM 所在的主机IP和开启的 JMX 端口号,Finderweb直接通过 JMX 连接到远程主机。

警告

ThreadDump,HeapDump会暂停JVM,请谨慎操作。