设置代理
编辑设置代理编辑
可以通过三种不同的方式来设置 Elastic APM Java 代理
-
使用
-javaagent
标志进行手动设置
使用-javaagent
JVM 选项手动设置和配置代理。无需更改应用程序代码,但需要重启应用程序。 -
使用
apm-agent-attach-cli.jar
进行自动设置
自动设置代理,无需更改 JVM 或应用程序服务器的配置。无需更改应用程序代码或 JVM 选项,允许附加到正在运行的 JVM。 -
通过编程 API 设置来自动附加
通过一行代码更改和额外的apm-agent-attach
依赖项来设置代理。无需修改 JVM 选项,代理工件嵌入在打包的应用程序二进制文件中。
配置编辑
设置代理后,请参阅配置指南,了解如何配置 Elastic APM。
与 APM 服务器进行 SSL/TLS 通信编辑
如果在 APM 服务器上启用了SSL/TLS 通信,请务必查看SSL 设置指南。
监控 AWS Lambda 函数(实验性)编辑
在我们的Lambda 设置指南中了解如何设置 AWS Lambda 函数跟踪。
在启用安全管理器的情况下使用编辑
代理应该可以在启用了 SecurityManager
的 JVM 上按预期工作,前提是它被授予了 java.security.AllPermission
权限。确保将以下代码段添加到有效的* 策略中(将占位符替换为代理 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
系统属性追加。有关更多详细信息,请参阅 文档。
** 您可以利用 属性扩展 功能来指定代理 jar 路径。
支持的技术编辑
请查看支持的技术,详细了解 Elastic APM 代理是否支持自动检测您的应用程序正在使用的技术。
引导检查编辑
在某些情况下,代理需要在几乎任何初始化过程发生之前就做出中止的决定,例如,当它附加到不支持的 JVM 版本时。此决定基于我们所说的“引导检查”。如果任何引导检查失败,代理将向标准错误流记录错误并中止。可以通过将 elastic.apm.disable_bootstrap_checks
系统属性或 ELASTIC_APM_DISABLE_BOOTSTRAP_CHECKS
环境变量设置为 true
来禁用引导检查。
JVM 过滤编辑
在某些情况下,用户可能会为检测其 Java 进程而设置过宽的网络,例如在运行许多 JVM 的主机/容器上全局设置 JAVA_TOOL_OPTIONS
环境变量时。在这种情况下,用户可能希望排除对某些 JVM 进行检测,或者在必要时明确允许。为此,我们提供了以下引导配置选项
系统属性名称 | 环境变量名称 | 描述 |
---|---|---|
|
|
如果设置,代理将仅在命令与提供的列表中的某个模式匹配的 JVM 上启用 |
|
|
如果设置,代理将在包含列表中提供的某个名称的系统属性的 JVM 上禁用 |
allowlist 选项需要一个逗号分隔的通配符模式列表。此类模式可能包含通配符 (*
),它们可以匹配零个或多个字符。示例: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