将 javaagent 附加到代理中的 dynatrace 中的 java 进程是一种黑魔法。
我没有找到环境JAVA_TOOL_OPTIONS
或JAVA_OPTS
节点。
但是我发现在引导路径(sun.boot.class.path)中添加了一些代理罐子。
我想了解更多关于java黑魔法的信息。谁能解释一下?
它可能使用称为 JVMTI 的 JVM API,请参阅https://en.wikipedia.org/wiki/Java_Virtual_Machine_Tools_Interface,这允许将代理代码注入已启动的 Java 应用程序,该应用程序检查字节码,还可以修改字节码以执行此操作工作。
这需要本机代码,因为接口低于 Java 类的实际执行。
还有一个 java 代理,请参见此处和此处获取一些描述。这由其他监控工具使用,但使用本机代理允许读取和控制应用程序的更多方面,以读取监控和性能信息,这解释了 Dynatrace 可以做的一些更强大的事情。