jvmguard 代理的自动更新
为 JVM 设置监控时,需要将 jvmguard 代理文件复制到受监控 JVM 运行的机器上。更新 jvmguard 服务器时,就会产生 代理文件如何更新的问题。
服务器在更新期间会关闭,因此它的所有文件都可以被替换,但不能仅仅为了更新监控代理而终止受监控的 JVM。这就是 为什么每当服务器安装被更新时,jvmguard 都会自动部署代理更新。
可以在全局设置中检查同一大版本系列内的更新;如果启用了自动更新检查,更新通知 会以收件箱消息的形式发送。
更新 jvmguard 服务器时,所有监控代理都会与收集器断开连接。不过,代理会继续记录数据,并在收集器恢复可用时 将其传输过去。断开连接后,代理会以逐渐降低的频率定期尝试重新连接 jvmguard 收集器。只有当数据量超过从内存 开销角度认为不安全的限度时,数据才会被丢弃。
服务器更新后,jvmguard 代理可能相对旧版本发生了变化。在这种情况下,VM 视图会在 VM 名称旁边显示一个警告 图标。jvmguard 服务器会继续兼容所有先前版本的代理,但对于使用过时代理监控的 JVM,新功能可能不可用。
当受监控的 JVM 在将来某个时刻重启时,新代理会被自动使用。不需要手动将新的代理文件传输到远程机器。
代理更新机制
Section titled “代理更新机制”当连接到使用过时 jvmguard 代理监控的 JVM 时,jvmguard 服务器会将新的代理文件传输到远程机器。由于原始代理
文件正在使用中并且可能被写保护,因此无法覆盖它们。新代理存储在 $HOME/.jvmguard/agent 目录中。该目录下有
按受监控 VM 划分的子目录,子目录中又包含存放所传输代理的目录。
受监控的 JVM 启动时,会加载在 -javaagent JVM 选项中指定的 jvmguard.jar
Java 代理。该 Java 代理通过查看 $HOME/.jvmguard/agent 并为受监控的 JVM 选择最新的代理文件,来引导监控
代理的实际实现。如果没有传输过任何代理,则使用解压的代理归档中 lib 目录里的实现。
虽然带有引导代码的 jvmguard.jar 文件从不更新,但它在启动时执行的功能有限,不影响监控功能本身。即使该
JAR 文件在更新的版本中发生变化,也不意味着必须在任何远程机器上替换它。