设置 Agent

编辑

有三种不同的方法来设置 Elastic APM Java Agent

  1. 使用 -javaagent 标志手动设置
    使用 -javaagent JVM 选项手动设置和配置 Agent。无需更改应用程序代码,需要重启应用程序。
  2. 使用 apm-agent-attach-cli.jar 自动设置
    自动设置 Agent,无需更改 JVM 或应用程序服务器的配置。无需更改应用程序代码或 JVM 选项,允许附加到正在运行的 JVM。
  3. 使用编程式 API 自行附加
    通过一行代码更改和一个额外的 apm-agent-attach 依赖项来设置 Agent。无需修改 JVM 选项,Agent 工件嵌入在打包的应用程序二进制文件中。

配置

编辑

设置 Agent 后,请参阅配置指南,了解如何配置 Elastic APM。

与 APM Server 的 SSL/TLS 通信

编辑

如果 APM Server 上启用了SSL/TLS 通信,请务必查看SSL 设置指南

监控 AWS Lambda 函数 (实验性)

编辑

了解如何在我们的Lambda 设置指南中设置 AWS Lambda 函数跟踪。

在启用 Security Manager 的情况下使用

编辑

如果 Agent 被授予 java.security.AllPermission,则它应在启用了 SecurityManager 的 JVM 上按预期工作。请确保将以下代码段添加到有效的*策略中(替换为 Agent jar 的实际路径**)

grant codeBase "file:</path/to/elastic-apm-agent.jar>" {
    permission java.security.AllPermission;
};

如果您在验证上述 grant 代码段是否已有效应用后看到 java.lang.SecurityException 异常(例如 - java.security.AccessControlException),请在我们的 GitHub 存储库中打开一个问题,并附上描述和完整的堆栈跟踪。

* 在单个 JVM 上可以同时生效多个策略文件。上面的策略条目可以添加到现有策略中,也可以通过 java.security.policy 系统属性追加。有关更多详细信息,请参阅文档

** 您可以利用属性扩展功能来指定 Agent jar 路径。

支持的技术

编辑

请查看支持的技术,了解 Elastic APM Agent 是否支持对您的应用程序正在使用的技术进行自动检测。

引导检查

编辑

在某些情况下,Agent 需要尽早做出中止的决定,几乎在任何初始化过程发生之前,例如,当它附加到不支持的 JVM 版本时。此决定基于我们所谓的“引导检查”。如果任何引导检查失败,Agent 将在标准错误流中记录错误并中止。可以通过将 elastic.apm.disable_bootstrap_checks 系统属性或 ELASTIC_APM_DISABLE_BOOTSTRAP_CHECKS 环境变量设置为 true 来禁用引导检查。

JVM 过滤

编辑

在某些情况下,用户可能会过于广泛地捕获其 Java 进程以进行检测,例如,当在运行多个 JVM 的主机/容器上全局设置 JAVA_TOOL_OPTIONS 环境变量时。在这种情况下,用户可能希望排除要检测的 JVM,或在必要时专门允许。为此,我们提供了以下可用的引导配置选项

系统属性名称 环境变量名称 描述

elastic.apm.bootstrap_allowlist

ELASTIC_APM_BOOTSTRAP_ALLOWLIST

如果设置,则 Agent 将 在命令与提供的列表中的模式之一匹配的 JVM 上启用

elastic.apm.bootstrap_exclude_list

ELASTIC_APM_BOOTSTRAP_EXCLUDE_LIST

如果设置,则在包含具有列表中提供的名称之一的系统属性的 JVM 上禁用 Agent

允许列表选项需要一个逗号分隔的通配符模式列表。此类模式可以包含通配符 (*),它匹配零个或多个字符。示例:foo\*bar\*baz\*,\*foo\*。默认情况下,匹配不区分大小写。在元素前面加上 (?-i)} 使匹配区分大小写。这些模式与存储在 sun.java.command 系统属性中的 JVM 命令进行匹配。

一些示例

  1. 仅允许在 Tomcat 和专有 Java 应用程序上附加 JVM
    -Delastic.apm.bootstrap_allowlist=*org.apache.catalina.startup.Bootstrap*,my.cool.app.*
  2. 当设置某些自定义系统属性时禁用
    -Delastic.apm.bootstrap_exclude_list=custom.property.1,custom.property.2