自定义插桩
APM Insight 代理会对多种 Web 组件和框架的预定义类进行插桩,以提供应用程序的深度洞察。APM Insight 同时提供自定义插桩选项,允许您对所选的类进行插桩。自定义插桩可以更全面地洞察应用程序,方便追踪特定功能或模块的性能。
Java Agent 提供以下 3 种自定义插桩方式:
- 使用 Web 客户端——您可以通过 Site24x7 Web 客户端对应用程序的方法和类进行插桩,更改会同步到所有应用程序实例。
- 使用 Java 注解 ——通过在应用程序中修改代码并添加注解来提取额外的值,更改会同步到所有应用程序实例。
- 使用配置文件 ——当您希望仅对特定实例的类或方法进行插桩时,可使用此方法。
配置步骤
- 对于 Java 代理版本低于 7.0.0 的情况,请在代理安装目录中创建名为 instrumentation.conf 的新文件。对于 7.0.0 及以上版本,该文件应放置在代理安装目录内名为 <appName>_<port> 的子目录中,该子目录对应需要自定义插桩的 APM 实例。
- 按照以下语法添加类/包:
Fully qualified ClassName : methodNames separated by comma(,) : component_Name
- 每个类/包条目必须单独占一行。
- 如果未提供方法名称,则指定类下的所有方法都将被插桩。如果存在需要插桩的重载方法,所有重载方法都将被插桩。
- 组件名称只允许使用 a-zA-Z_0-9 字符。如果未指定 component_Name 或其无效,代理默认将其视为 APP Code。
Example:
a/b/c/CustomClass : methodA, methodB : ComponentA
a/b/c/CustomClass : methodC : ComponentB
a/b/c/CustomClass : : Component_A1
a/b/c/CustomClass : : - 如果需要对包中的所有类进行插桩,请按如下方式指定包名:
示例:package_name/.* : :
a/b/c/.* : : Component_C
a/b/c/d/.* : : - 不建议将整个包作为输入,因为代理会对其下所有包中所有类的所有方法进行插桩,这可能会带来额外的 CPU 和内存开销。此外,会存在大量不感兴趣的方法,导致追踪记录过长。不过,此方法可用于研究代码执行流程。
