如何在 运行 环境中升级代理?

How to upgrade agents in running environment?

我正在使用 Perfino 来监控 SLES 中的一些 Tomcat。服务器有自己的安装程序,因此升级它不是问题(只需 运行 安装程序,它会检测现有安装并对其进行升级)。但是代理没有安装程序。

我已经就此问题联系了 EJ-Technology 的支持(强调我的):

the agents are updated automatically. The monitored applications will continue to run with the same agent until they are restarted. In the VMs view you will see a special icon next to VM that indicates that the agent is out of date.

如果我理解正确,运行ning JVM 中的代理会即时升级。但是我检查了agent.jarperfino.jarlibperfino.so,都没有修改,所以重启后,服务器需要重新升级。

我已经遇到过时代理的问题,所以我开始构建自己的 rpms 来部署代理升级(即所有 agent.tar.gz)。但我现在有点担心这种方法的适当性:它取决于 class 加载程序 运行ning 应用程序的 jar 可以被覆盖。我已经完成了,没有任何问题。但是...

解压缩 运行ning 监控应用程序的新 agent.tar.gz 是否安全

But I checked the agent.jar, perfino.jar and libperfino.so and neither of them are modified

服务器将新代理推送到所有受监控的 JVM,但它不会覆盖您在 -javaagent:[path to perfino.jar] VM 参数中指定的代理,因为这些文件可能正在使用中,甚至可能不可写.

而是将新代理保存到 ~/.perfino/agent 目录。每个代理更新都有一个 ID,即存储代理的子目录的名称。文件 perfino.jar 只是一个在启动时选择最新可用代理的引导程序。

Is it safe to unpack a new agent.tar.gz of a running monitored application?

不,这通常不安全,class 加载可能仍需要删除的 JAR 文件。