使用 -javaagent 标志手动设置编辑

使用 -javaagent 选项是在 JVM 上设置 Java 代理的最常见方法,它具有以下属性

  • 不需要更改应用程序代码。
  • 需要更改 JVM 参数,这意味着需要重新启动整个 JVM。
  • 对于应用程序服务器,修改 JVM 参数需要更改应用程序服务器配置
  • 代理工件是需要与 JVM 或应用程序服务器一起管理的额外二进制文件。
  • 确保应用程序在启动之前完全被检测到。

获取 Java 代理编辑

开始使用 Elastic APM Java 代理的第一步是获取代理 jar 的副本。

Java 代理版本发布到 Maven 中央仓库,为了获取副本,您可以

  • 从 Maven 中央仓库手动下载 最新代理先前版本
  • 使用 curl 下载

    curl -o 'elastic-apm-agent.jar' -L 'https://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=co.elastic.apm&a=elastic-apm-agent&v=LATEST'

此外,我们还发布了 Java 代理的专用版本,该版本附带最新 log4j2 版本,因此需要至少 Java 8。此版本也可以在 Maven 中央仓库 中找到。

代理不像常规的应用程序依赖项。不要在应用程序中声明对代理的依赖项。

添加 -javaagent 标志编辑

启动应用程序时,添加 JVM 标志 -javaagent:/path/to/elastic-apm-agent-<version>.jar

使用应用程序服务器设置代理编辑

不同的应用程序服务器设置 -javaagent 标志和系统属性的方式不同。

请注意,系统属性只是配置代理的一种方式,但在每种情况下都需要设置 -javaagent 标志。请参阅 配置,了解如何使用配置文件或环境变量配置代理。

通用设置编辑

启动您的应用程序(例如 Spring Boot 应用程序或其他嵌入式服务器),并添加 -javaagent JVM 标志。使用 -D 前缀使用系统属性配置代理。

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 文件的底部添加代理配置

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。

-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

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-urlmy-apm-server-secret-token 分别是 Elasticsearch 服务器服务密钥中的 server_urlsecret_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