通过编程 API 设置自附加
编辑通过编程 API 设置自附加编辑
apm-agent-attach
设置允许通过代码附加代理,它具有以下属性
- 应用程序中需要进行一行代码修改才能启动代理。
- 不需要更改 JVM 选项。
- 代理作为 Maven 或 Gradle 依赖项进行管理。这确保您能够控制每个应用程序使用的代理版本。
- 允许对代理进行编程配置。
支持的环境编辑
在基于 HotSpot 的 JVM(如 OpenJDK 和 Oracle JDK)和 OpenJ9 上,Windows、Unix 和 Solaris 操作系统支持附加。
注意事项编辑
每个 JVM 只能有一个代理实例,并且只能有一个配置。因此,如果您将多个 Web 应用程序部署到同一个应用程序服务器,并在每个应用程序中调用 ElasticApmAttacher.attach()
,则第一个 attach()
会获胜,第二个 attach()
将被忽略。这也意味着,如果您使用 elasticapm.properties
配置代理,则第一个附加的应用程序将决定配置。有关为每个部署使用不同的 `service.name` 的方法,请参阅 service_name
配置选项的默认值说明。
apm-agent-attach
工件对 JNA 有传递依赖关系,在使用 JDK 运行应用程序时,大多数情况下可以排除 JNA。但是,在以下情况下需要 JNA
- 附加到 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
。