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