Movatterモバイル変換


[0]ホーム

URL:


Loading

Programmatic API setup to self-attach

Serverless ObservabilityStackAPM Agent Java

Theapm-agent-attach setup allows to attach the agent through code, it has the following properties

  • A one-line code modification in the application is required to start the agent.
  • Does not require to change JVM options.
  • The agent is managed as a maven or gradle dependency. This ensures that you have control over which agent version is used for each of your applications.
  • Allows programmatic configuration of the agent.

The attachment is supported on Windows, Unix and Solaris operating systems on HotSpot-based JVMs (like OpenJDK and Oracle JDK) and OpenJ9.

There can only be one agent instance with one configuration per JVM. So if you deploy multiple web applications to the same application server and callElasticApmAttacher.attach() in each application, the firstattach() wins and the second one will be ignored. That also means that if you are configuring the agent withelasticapm.properties, the application which attaches first gets to decide the configuration. See the default value description of theservice_name configuration option for ways to have differentservice.names for each deployment.

Theapm-agent-attach artifact has a transitive dependency on JNA which can be excluded most of the time when running the application with a JDK. However, it will be required in the following cases:

  • When attaching to a JRE and no other copy of JNA is present on the application classpath
  • When attaching to a JDK fails and using JRE attach strategy as fallback.

Declare a dependency to theapm-agent-attach artifact.

<dependency>    <groupId>co.elastic.apm</groupId>    <artifactId>apm-agent-attach</artifactId>    <version>${elastic-apm.version}</version></dependency>
compile "co.elastic.apm:apm-agent-attach:$elasticApmVersion"

CallElasticApmAttacher.attach() in the first line of yourpublic static void main(String[] args) method.

This example demonstrates the the usage of theattach API with a simple Spring Boot application:

import co.elastic.apm.attach.ElasticApmAttacher;import org.springframework.boot.SpringApplication;@SpringBootApplicationpublic class MyApplication {    public static void main(String[] args) {        ElasticApmAttacher.attach();        SpringApplication.run(MyApplication.class, args);    }}
Note

The API is not limited to Spring Boot and does not require Spring Boot, it is just used for demonstration purposes.

The recommended way of configuring the agent when using the attach API is to add the configuration tosrc/main/resources/elasticapm.properties.


[8]ページ先頭

©2009-2025 Movatter.jp