DataKit APM 自动注入原理篇

DataKit APM 自动注入原理揭秘

从 DataKit 1.60.0 版本开始,正式支持 Java、Python 应用 APM 自动注入,目前主要支持 DDTrace。

通过利用 LD_PRELOAD 能力影响动态库加载,从而实现自动调整应用程序的启动命令,达到往应用注入 APM 的目的。

LD_PRELOAD 简介

Linux 系统中利用 LD_PRELOAD 环境变量影响程序运行时链接,方法包括修改 /etc/ld.so.preload 配置文件和启动进程前设置 LD_PRELOAD,它允许你在程序启动之前预先加载一个或多个共享库(动态链接库)。这个环境变量在 Linux 系统中被广泛用于调试、监控、修改程序行为等目的。

/etc/ld.so.preload 的作用主要体现在以下几个方面:

  • 预加载共享库:在程序运行前,动态链接器会按照 LD_PRELOAD 环境变量和 /etc/ld.so.preload 文件中指定的顺序加载共享库,这比 LD_LIBRARY_PATH 环境变量所指定的目录中的共享库还要优先。
  • 函数劫持:通过在预加载的共享库中定义与目标函数完全一样的函数,可以覆盖或劫持系统中的同名函数,实现函数的自定义行为。
  • 调试和测试:预加载共享库可以用于调试和测试,例如,通过预加载一个包含自定义 malloc 或 free 函数的共享库来检测内存泄漏。

DataKit 实现 APM 自动注入

启动应用程序通常有多种方法,例如通过 shell 启动。在 Linux 系统上,常见的 shell 有 bash、sh、zsh 等多种 shell 程序。在 Ubuntu 上,默认的 shell 是 bash ,我们

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值