使用 -javaagent 参数手动设置
编辑使用 -javaagent
参数手动设置
编辑使用 -javaagent
选项是在 JVM 上设置 Java 代理的最常见方法,它具有以下特性:
- 无需更改应用程序代码。
- 需要更改 JVM 参数,这意味着需要重启整个 JVM。
- 对于应用程序服务器,修改 JVM 参数需要更改应用程序服务器配置。
- Agent 工件是需要与 JVM 或应用程序服务器一起管理的额外二进制文件。
- 确保应用程序在启动之前已完全检测。
获取 Java Agent
编辑开始使用 Elastic APM Java Agent 的第一步是获取 Agent jar 文件的副本。
Java Agent 版本发布到 Maven Central,要获取副本,您可以:
此外,我们还发布了 Java Agent 的专用版本,该版本附带最新版本的 log4j2,因此需要至少 Java 8。此版本也可以在 Maven Central 上找到。
Java Agent 版本以 Docker 镜像的形式通过 docker.elastic.co
注册表发布。
latest
标签允许在构建镜像时使用最新的版本。
在 Dockerfile
中添加以下语句将 Agent jar 文件复制到 /elastic-apm-agent.jar
。
COPY --from=docker.elastic.co/observability/apm-agent-java:latest /usr/agent/elastic-apm-agent.jar /elastic-apm-agent.jar
Agent 不像常规的应用程序依赖项。不要在您的应用程序中声明对 Agent 的依赖项。
添加 -javaagent
参数
编辑启动应用程序时,添加 JVM 参数 -javaagent:/path/to/elastic-apm-agent-<version>.jar
使用应用程序服务器设置 Agent
编辑不同的应用程序服务器设置 -javaagent
参数和系统属性的方式不同。
请注意,系统属性只是配置 Agent 的一种方式,但在每种情况下都需要设置 -javaagent
参数。请参阅 配置,了解如何使用配置文件或环境变量配置 Agent。
通用设置
编辑启动您的应用程序(例如 Spring Boot 应用程序或其他嵌入式服务器)并添加 -javaagent
JVM 参数。使用 -D
前缀使用系统属性配置 Agent。
java -javaagent:/path/to/elastic-apm-agent-<version>.jar -Delastic.apm.service_name=my-cool-service -Delastic.apm.application_packages=org.example,org.another.example -Delastic.apm.server_url=http://127.0.0.1:8200 -jar my-application.jar
Apache Tomcat
编辑Unix
编辑创建 bin/setenv.sh
(如果文件已存在则修改)。确保使文件可执行,例如 chmod +x bin/setenv.sh
添加以下行
setenv.sh。
export CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/elastic-apm-agent-<version>.jar" export CATALINA_OPTS="$CATALINA_OPTS -Delastic.apm.service_name=my-cool-service" export CATALINA_OPTS="$CATALINA_OPTS -Delastic.apm.application_packages=org.example,org.another.example" export CATALINA_OPTS="$CATALINA_OPTS -Delastic.apm.server_url=http://127.0.0.1:8200"
Windows
编辑创建 bin\setenv.bat
(如果文件已存在则修改)。
setenv.bat。
set CATALINA_OPTS=%CATALINA_OPTS% -javaagent:C:/path/to/elastic-apm-agent-<version>.jar set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.service_name=my-cool-service set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.application_packages=org.example,org.another.example set CATALINA_OPTS=%CATALINA_OPTS% -Delastic.apm.server_url=http://127.0.0.1:8200
Jetty
编辑选项 1:编辑 jetty.sh
jetty.sh。
export JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:/path/to/elastic-apm-agent-<version>.jar" export JAVA_OPTIONS="${JAVA_OPTIONS} -Delastic.apm.service_name=my-cool-service" export JAVA_OPTIONS="${JAVA_OPTIONS} -Delastic.apm.application_packages=org.example,org.another.example" export JAVA_OPTIONS="${JAVA_OPTIONS} -Delastic.apm.server_url=http://127.0.0.1:8200"
选项 2:编辑 start.ini
start.ini。
--exec -javaagent:/path/to/elastic-apm-agent-<version>.jar -Delastic.apm.service_name=my-cool-service -Delastic.apm.application_packages=org.example,org.another.example -Delastic.apm.server_url=http://127.0.0.1:8200
选项 3:如果您使用的是嵌入式 Jetty,请参阅 通用设置。
JBoss EAP/WildFly
编辑独立模式
编辑在 standalone.conf
文件的底部添加 Agent 配置
Unix
bin/standalone.conf。
export JAVA_OPTS="$JAVA_OPTS -javaagent:/path/to/elastic-apm-agent-<version>.jar" export JAVA_OPTS="$JAVA_OPTS -Delastic.apm.service_name=my-cool-service" export JAVA_OPTS="$JAVA_OPTS -Delastic.apm.application_packages=org.example,org.another.example" export JAVA_OPTS="$JAVA_OPTS -Delastic.apm.server_url=http://127.0.0.1:8200"
Windows
bin/standalone.conf.bat。
set JAVA_OPTS=%JAVA_OPTS% -javaagent:C:/path/to/elastic-apm-agent-<version>.jar set JAVA_OPTS=%JAVA_OPTS% -Delastic.apm.service_name=my-cool-service set JAVA_OPTS=%JAVA_OPTS% -Delastic.apm.application_packages=org.example,org.another.example set JAVA_OPTS=%JAVA_OPTS% -Delastic.apm.server_url=http://127.0.0.1:8200
域模式
编辑编辑 domain.xml
文件(通常位于 domain/configuration
下)并为 -javaagent
参数添加 JVM 选项,以及一些用于配置的系统属性。
domain/configuration/domain.xml。
... <server-group> <jvm> <jvm-options> ... <option value="-javaagent:/path/to/elastic-apm-agent-<version>.jar"/> ... </jvm-options> </jvm> </server-group> ... <system-properties> <property name="elastic.apm.service_name" value="my-cool-service"/> <property name="elastic.apm.application_packages" value="org.example,org.another.example"/> <property name="elastic.apm.server_url" value="http://127.0.0.1:8200"/> </system-properties> ...
WebSphere Liberty
编辑将以下行添加到 jvm.options
文件中。
jvm.options。
Payara
编辑更新 domain.xml
文件以添加 -javaagent
参数和系统属性。
glassfish/domains/domain1/config/domain.xml。
<java-config> ... <jvm-options>-javaagent:/path/to/elastic-apm-agent-<version>.jar</jvm-options> <jvm-options>-Delastic.apm.service_name=my-cool-service</jvm-options> <jvm-options>-Delastic.apm.application_packages=org.example,org.another.example</jvm-options> <jvm-options>-Delastic.apm.server_url=http://127.0.0.1:8200</jvm-options> </java-config>
Oracle WebLogic
编辑Unix
编辑编辑 startWebLogic.sh
文件,并在 setDomainEnv.sh
调用后添加以下行
$DOMAIN_HOME/bin/startWebLogic.sh。
export JAVA_OPTIONS="$JAVA_OPTIONS -javaagent:/path/to/elastic-apm-agent-<version>.jar" export JAVA_OPTIONS="$JAVA_OPTIONS -Delastic.apm.service_name=my-cool-service" export JAVA_OPTIONS="$JAVA_OPTIONS -Delastic.apm.application_packages=org.example,org.another.example" export JAVA_OPTIONS="$JAVA_OPTIONS -Delastic.apm.server_url=http://127.0.0.1:8200"
Windows
编辑编辑 startWebLogic.cmd
文件,并在 setDomainEnv.cmd
调用后添加以下行
%DOMAIN_HOME%\bin\startWebLogic.cmd。
set JAVA_OPTIONS=%JAVA_OPTIONS% -javaagent:C:/path/to/elastic-apm-agent-<version>.jar set JAVA_OPTIONS=%JAVA_OPTIONS% -Delastic.apm.service_name=my-cool-service set JAVA_OPTIONS=%JAVA_OPTIONS% -Delastic.apm.application_packages=org.example,org.another.example set JAVA_OPTIONS=%JAVA_OPTIONS% -Delastic.apm.server_url=http://127.0.0.1:8200
Cloud Foundry
编辑从 v4.19 版本 开始,Elastic Java APM Agent 框架已成为 Cloud Foundry Java Buildpack 的一部分。
用户提供的 Elastic APM 服务必须具有包含 elastic-apm
的名称或标签,以便 Elastic APM Agent 框架自动配置应用程序以使用该服务。
创建用户提供的服务
cf cups my-elastic-apm-service -p '{"server_url":"my-apm-server-url","secret_token":"my-apm-server-secret-token"}'
my-apm-server-url
和 my-apm-server-secret-token
分别是 Elasticsearch 服务器的服务密钥中的 server_url
和 secret_token
。
将应用程序绑定到服务
cf bind-service my-application my-elastic-apm-service
并重新构建应用程序或在应用程序清单文件中使用 services
块。
有关 Cloud Foundry 的 Elastic Java APM Agent 框架的更多详细信息,请参阅 此处。
manifest.yml。
applications: - name: my-application memory: 1G path: ./target/my-application.jar services: - my-elastic-apm-service