经典的Dynatrace监控是通过使用代理来监视java进程来完成的。您必须将代理添加到受监视的VM中,并且它工作了。
Dynatrace在没有代理的情况下这样做。但它是如何工作的。Java进程中没有添加代理。所需要的就是重新启动Java进程。尝试了自由服务器,可以找到两个Dynatrace线程,称为ruxitautosensor和ruxitsubpathsender发件人。但我不明白注射是如何运作的。
发布于 2017-04-10 18:57:54
在非常高的级别上,安装的OS级代理运行一些进程,这些进程使用OS级别的功能来迭代机器上的进程,并通过各种不同的技术将代理注入到所有支持“深度监视”的技术中,例如Java、.NET和许多其他技术。
由于明显的原因,可能没有发布更多细节,因为与传统的通过调整启动脚本手动注入代理的方法相比,所有这些都具有明显的优势,特别是在部署到非常大的环境中时。
发布于 2019-10-18 08:33:53
Dynatrace在操作系统中更改了"/etc/ld.so.preload“文件:
/$LIB/liboneagentproc.so"/etc/ld.so.preload“和env变量"LD_PRELOAD”用于在启动新进程时预加载指定的lib。
发布于 2018-10-29 19:02:56
在我看来,他们使用的是标准的工具接口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
注意:有些字符串被混淆了。
https://stackoverflow.com/questions/43292088
复制相似问题