3

经典的 Dynatrace 监控通过使用代理来监控 java 进程。您必须将代理添加到受监控的虚拟机中,并且它可以正常工作。

Dynatrace OneAgent 无需代理即可执行此操作。但它是如何工作的。没有向 Java 进程添加代理。所需要的只是重新启动 Java 进程。使用 Liberty Server 进行了尝试,可以找到两个 Dynatrace 线程,称为 ruxitautosensor 和 ruxitsubpathsender。但我不明白注射是如何工作的。

4

3 回答 3

5

Dynatrace OneAgent 更改了操作系统中的“/etc/ld.so.preload”文件:

/$LIB/liboneagentproc.so

“/etc/ld.so.preload”和环境变量“LD_PRELOAD”用于在启动新进程时预加载指定的库。

于 2019-10-18T08:33:53.743 回答
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

注意:某些字符串已被混淆

于 2018-10-29T19:02:56.687 回答
-2

在非常高的级别上,安装的操作系统级代理运行一些进程,这些进程使用操作系统级功能来迭代机器上的进程,并通过各种不同的技术将代理注入到所有支持“深度监控”的技术中,例如 Java, .NET 和其他一些。

由于显而易见的原因,更多细节可能不会发布,因为与通过调整启动脚本手动注入代理的传统方法相比,所有这些都具有明显的优势,尤其是在部署到非常大的环境中时。

于 2017-04-10T18:57:54.610 回答