通过编程 API 设置自动附加
编辑通过编程 API 设置自动附加
编辑apm-agent-attach
设置允许通过代码附加代理,它具有以下特性
- 应用程序中只需要一行代码修改即可启动代理。
- 无需更改 JVM 选项。
- 代理作为 Maven 或 Gradle 依赖项进行管理。这确保您可以控制每个应用程序使用哪个代理版本。
- 允许以编程方式配置代理。
支持的环境
编辑该附加功能在基于 HotSpot 的 JVM(如 OpenJDK 和 Oracle JDK)和 OpenJ9 上的 Windows、Unix 和 Solaris 操作系统上受支持。
注意事项
编辑每个 JVM 只能有一个代理实例和一个配置。因此,如果您将多个 Web 应用程序部署到同一个应用程序服务器并在每个应用程序中调用 ElasticApmAttacher.attach()
,则第一个 attach()
会生效,第二个会被忽略。这也意味着,如果您使用 elasticapm.properties
配置代理,则第一个附加的应用程序将决定配置。有关为每个部署设置不同的 `service.name` 的方法,请参阅 service_name
配置选项的默认值描述。
apm-agent-attach
工件对 JNA 具有传递依赖关系,在使用 JDK 运行应用程序时,大多数情况下可以排除该依赖关系。但是,在以下情况下需要该依赖关系
- 附加到 JRE 且应用程序类路径上不存在其他 JNA 副本时
- 附加到 JDK 失败并使用 JRE 附加策略作为回退时。
用法
编辑声明对 apm-agent-attach
工件的依赖关系。
pom.xml。
<dependency> <groupId>co.elastic.apm</groupId> <artifactId>apm-agent-attach</artifactId> <version>${elastic-apm.version}</version> </dependency>
build.gradle。
compile "co.elastic.apm:apm-agent-attach:$elasticApmVersion"
在 public static void main(String[] args)
方法的第一行调用 ElasticApmAttacher.attach()
。
此示例演示了如何在一个简单的 Spring Boot 应用程序中使用 attach
API
MyApplication.java。
import co.elastic.apm.attach.ElasticApmAttacher; import org.springframework.boot.SpringApplication; @SpringBootApplication public class MyApplication { public static void main(String[] args) { ElasticApmAttacher.attach(); SpringApplication.run(MyApplication.class, args); } }
该 API 不限于 Spring Boot 也不需要 Spring Boot,这里只是用于演示目的。
配置
编辑使用附加 API 时,推荐的代理配置方法是将配置添加到 src/main/resources/elasticapm.properties
中。