设置 Agent
编辑设置 Agent
编辑有三种不同的方法来设置 Elastic APM Java Agent
-
使用
-javaagent
标志手动设置
使用-javaagent
JVM 选项手动设置和配置 Agent。无需更改应用程序代码,需要重启应用程序。 -
使用
apm-agent-attach-cli.jar
自动设置
自动设置 Agent,无需更改 JVM 或应用程序服务器的配置。无需更改应用程序代码或 JVM 选项,允许附加到正在运行的 JVM。 -
使用编程式 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,或在必要时专门允许。为此,我们提供了以下可用的引导配置选项
系统属性名称 | 环境变量名称 | 描述 |
---|---|---|
|
|
如果设置,则 Agent 将 仅 在命令与提供的列表中的模式之一匹配的 JVM 上启用 |
|
|
如果设置,则在包含具有列表中提供的名称之一的系统属性的 JVM 上禁用 Agent |
允许列表选项需要一个逗号分隔的通配符模式列表。此类模式可以包含通配符 (*
),它匹配零个或多个字符。示例:foo\*bar\*baz\*,\*foo\*
。默认情况下,匹配不区分大小写。在元素前面加上 (?-i)}
使匹配区分大小写。这些模式与存储在 sun.java.command
系统属性中的 JVM 命令进行匹配。
一些示例
- 仅允许在 Tomcat 和专有 Java 应用程序上附加 JVM
-Delastic.apm.bootstrap_allowlist=*org.apache.catalina.startup.Bootstrap*,my.cool.app.*
- 当设置某些自定义系统属性时禁用
-Delastic.apm.bootstrap_exclude_list=custom.property.1,custom.property.2