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