通过使用代理监视java进程,经典的Dynatrace监视工作。您必须将代理添加到受监视的VM,并且它可以正常工作。
Dynatrace OneAgent无需代理即可完成此操作。但它是如何运作的。 Java进程中没有添加任何代理。所需要的只是重新启动Java进程。尝试使用Liberty Server,可以找到两个称为ruxitautosensor和ruxitsubpathsender的Dynatrace线程。但我不明白注射是如何起作用的。
答案 0 :(得分:0)
在非常高的层次上,安装的操作系统级代理运行一些进程,这些进程使用操作系统级功能来迭代计算机上的进程,并通过各种不同的技术将代理注入到“深度监视”支持的所有技术中,例如Java,.NET和其他一些。
由于显而易见的原因,可能无法发布更多详细信息,因为与通过调整启动脚本手动注入代理的传统方法相比,所有这些都提供了明显的优势,尤其是在部署到非常大的环境中时。
答案 1 :(得分:0)
在我看来,他们正在使用标准的 JVM工具接口 API。
-agentpath:<path-to-agent>=<options>
到JVM。
此处提供完整文档:https://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.html
示例:
-agentpath:C:/PROGRA~2/DYNATR~1/oneagent/agent/lib64/oneagentloader.dll=isjdwppresent=true,loglevelcon=none,tenant=00000000-0000-0000-0000-000000000000,tenanttoken=XXXXXXXXXXXXXXXX,server=https://10.10.10.10:8443/communication
注意:有些字符串已被混淆。
答案 2 :(得分:0)
Dynatrace OneAgent在OS中更改了“ /etc/ld.so.preload”文件:
/$LIB/liboneagentproc.so
“ / etc / ld.so.preload”和环境变量“ LD_PRELOAD”用于在启动新进程时预加载指定的lib。