核心配置选项
编辑核心配置选项
编辑recording
( [1.15.0] 在 1.15.0 中添加。 )
编辑此选项在旧版本中通过 active
键可用。旧的键在新版本中仍然受支持,但现在已弃用。
一个布尔值,指定代理是否应该记录。当记录时,代理会检测传入的 HTTP 请求,跟踪错误并收集和发送指标。当不记录时,代理作为空操作工作,不收集数据,也不与 APM 服务器通信,除了轮询中央配置端点。请注意,当禁用记录时,跟踪上下文传播、行李和日志关联也将被禁用。由于这是一个可逆的开关,当不活动时不会杀死代理线程,但它们在这种状态下将大多处于空闲状态,因此开销应可忽略不计。
您可以使用此设置在运行时动态禁用 Elastic APM。
默认值 | 类型 | 动态 |
---|---|---|
|
布尔值 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
enabled
( [1.18.0] 在 1.18.0 中添加。 )
编辑设置为 false 将完全禁用代理,包括检测和远程配置轮询。如果您想动态更改代理的状态,请改用 recording
。
默认值 | 类型 | 动态 |
---|---|---|
|
布尔值 |
false |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
instrument
( [1.0.0] 在 1.0.0 中添加。自 1.15.0 版本起,可以在运行时更改此值 )
编辑一个布尔值,指定代理是否应该检测应用程序以收集应用程序的跟踪信息。当设置为 false
时,大多数内置检测插件将被禁用,这将最大程度地减少对应用程序的影响。但是,代理仍然会应用与手动跟踪选项相关的检测,并且仍然会收集指标并将其发送到 APM 服务器。
active 和 instrument 都必须为 true 才能运行检测。
在运行时更改此值可能会暂时减慢应用程序的速度。
默认值 | 类型 | 动态 |
---|---|---|
|
布尔值 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
service_name
编辑这用于将您的服务的所有错误和事务保持在一起,并且是 Elastic APM 用户界面中的主要过滤器。
除了手动配置服务名称之外,您还可以选择依赖代理的服务名称自动检测机制。如果显式设置了 service_name
,则将禁用所有自动检测机制。
以下是服务名称自动检测的工作方式
-
对于独立应用程序
- 如果应用程序通过
java -jar
启动,则代理会使用META-INF/MANIFEST.MF
文件中的Implementation-Title
。 - 回退到主类或 jar 文件的名称。
- 如果应用程序通过
-
对于部署到 servlet 容器/应用程序服务器的应用程序,代理会自动检测每个应用程序的名称。
- 对于基于 Spring 的应用程序,如果设置了
spring.application.name
属性,则代理会使用该属性。 - 对于基于 servlet 的应用程序,回退到
META-INF/MANIFEST.MF
文件中的Implementation-Title
。 - 回退到
web.xml
的display-name
(如果可用)。 - 回退到应用程序映射到的 servlet 上下文路径(除非映射到根上下文)。
- 对于基于 Spring 的应用程序,如果设置了
通常,建议依赖基于 META-INF/MANIFEST.MF
的服务名称检测。Spring Boot 会自动添加相关的 manifest 条目。对于使用 Maven 构建的其他应用程序,以下是如何添加 manifest 条目的方法
pom.xml。
<build> <plugins> <plugin> <!-- replace with 'maven-war-plugin' if you're building a war --> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <!-- Adds Implementation-Title based on ${project.name} and Implementation-Version based on ${project.version} --> <manifest> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> </manifest> <!-- To customize the Implementation-* entries, remove addDefaultImplementationEntries and add them manually <manifestEntries> <Implementation-Title>foo</Implementation-Title> <Implementation-Version>4.2.0</Implementation-Version> </manifestEntries> --> </archive> </configuration> </plugin> </plugins> </build>
服务名称必须符合此正则表达式:^[a-zA-Z0-9 _-]+$
。用不太正则表达式的术语来说:您的服务名称必须只包含 ASCII 字母表中的字符、数字、破折号、下划线和空格。
服务名称自动发现机制需要 APM Server 7.0+。
默认值 | 类型 | 动态 |
---|---|---|
根据上述规则自动检测 |
字符串 |
false |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
service_node_name
( [1.11.0] 在 1.11.0 中添加。 )
编辑如果设置,此名称用于区分服务的不同节点,因此对于服务中的每个 JVM 都应该是唯一的。如果未设置,则数据聚合将基于容器 ID(在有效的情况下)或基于报告的主机名(自动发现或通过 hostname
手动配置)完成。
JVM 指标视图依赖于基于服务节点名称的聚合。如果您在同一主机上安装了多个 JVM,为同一服务名称报告数据,则必须为每个 JVM 设置唯一的节点名称,以便在 JVM 级别查看指标。
自 APM Server 7.5 起,指标视图可以利用此配置
默认值 | 类型 | 动态 |
---|---|---|
|
字符串 |
false |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
service_version
编辑当前部署的服务版本的版本字符串。如果您不为部署版本化,则此字段的建议值是已部署修订的提交标识符,例如 git rev-parse HEAD 的输出。
与 service_name
的自动检测类似,代理可以基于 META-INF/MANIFEST.MF
中的 Implementation-Title
属性自动检测服务版本。有关如何设置此属性的信息,请参阅 service_name
。
默认值 | 类型 | 动态 |
---|---|---|
|
字符串 |
false |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
hostname
( [1.10.0] 在 1.10.0 中添加。 )
编辑允许手动指定报告的主机名。如果未设置,则会查找主机名。
默认值 | 类型 | 动态 |
---|---|---|
|
字符串 |
false |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
environment
编辑此服务部署到的环境的名称,例如“production”或“staging”。
环境允许您在 APM 应用程序中轻松地全局筛选数据。跨代理命名环境时保持一致非常重要。有关详细信息,请参阅 APM 应用程序中的 环境选择器。
此功能在 Kibana 版本 >= 7.2 的 APM 应用程序中完全支持。在 7.2 之前的版本中,您必须使用查询栏来筛选特定环境。
默认值 | 类型 | 动态 |
---|---|---|
|
字符串 |
false |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
transaction_sample_rate
(性能)
编辑默认情况下,代理将采样每个事务(例如,对您的服务的请求)。为了减少开销和存储要求,您可以将采样率设置为 0.0 到 1.0 之间的值。(对于 8.0 之前的服务器,代理仍然会记录和发送未采样事务的总体时间和结果,但没有上下文信息、标签或跨度。当连接到 8.0+ 服务器时,根本不会发送未采样的请求)。
值将四舍五入到 4 个有效数字,例如,值 0.55555 将四舍五入为 0.5556
默认值 | 类型 | 动态 |
---|---|---|
|
双精度浮点数 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
transaction_max_spans
(性能)
编辑限制每个事务记录的跨度数量。
这在事务创建大量跨度(例如,数千个 SQL 查询)的情况下很有用。
设置上限将防止代理和 APM 服务器因过多此类边缘情况而过载。
当超出最大跨度数时,将记录一条消息,但每 5 分钟仅记录一次,以确保不会影响性能。
默认值 | 类型 | 动态 |
---|---|---|
|
整数 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
long_field_max_length
(性能 [1.37.0] 在 1.37.0 中添加。 )
编辑以下事务、span 和错误字段在发送到 APM 服务器之前,将在此 Unicode 字符数处被截断
-
transaction.context.request.body
,error.context.request.body
-
transaction.context.message.body
,error.context.message.body
-
span.context.db.statement
请注意,上游 APM 服务器的追踪数据限制为 max_event_size
,默认值为 300kB。如果将 long_field_max_length
配置得过大,可能会导致事务、span 或错误被 APM 服务器拒绝。
默认值 | 类型 | 动态 |
---|---|---|
|
整数 |
false |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
sanitize_field_names
(安全)
编辑有时需要清理发送到 Elastic APM 的数据,例如删除敏感数据。
配置一个应该被清理的字段名称的通配符模式列表。这些模式例如适用于 HTTP 标头和 application/x-www-form-urlencoded
数据。
此选项支持通配符 *
,它匹配零个或多个字符。示例:/foo/*/bar/*/baz*
、*foo*
。默认情况下匹配不区分大小写。在元素前加上 (?-i)
可以使匹配区分大小写。
查询字符串中的数据被认为是非敏感的,因为敏感信息不应该在查询字符串中发送。有关更多信息,请参阅 https://www.owasp.org/index.php/Information_exposure_through_query_strings_in_url
仔细检查 Elastic APM 捕获的数据,确保它没有捕获敏感信息。如果您在 Elasticsearch 索引中发现敏感数据,您应该向此列表添加一个额外的条目(确保同时包含默认条目)。
默认值 | 类型 | 动态 |
---|---|---|
|
列表 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
enable_instrumentations
( [1.28.0] 在 1.28.0 中添加。 )
编辑一个应该选择性启用的检测列表。有效选项为 annotations
、 annotations-capture-span
、 annotations-capture-transaction
、 annotations-traced
、 apache-commons-exec
、 apache-httpclient
、 asynchttpclient
、 aws-lambda
、 aws-sdk
、 cassandra
、 concurrent
、 dubbo
、 elasticsearch-restclient
、 exception-handler
、 executor
、 executor-collection
、 experimental
、 finagle-httpclient
、 fork-join
、 grails
、 grpc
、 hibernate-search
、 http-client
、 jakarta-websocket
、 java-ldap
、 javalin
、 javax-websocket
、 jax-rs
、 jax-ws
、 jdbc
、 jdk-httpclient
、 jdk-httpserver
、 jedis
、 jms
、 jsf
、 kafka
、 lettuce
、 log-correlation
、 log-error
、 log-reformatting
、 logging
、 micrometer
、 mongodb
、 mongodb-client
、 okhttp
、 opentelemetry
、 opentelemetry-annotations
、 opentelemetry-metrics
、 opentracing
、 process
、 public-api
、 quartz
、 rabbitmq
、 reactor
、 redis
、 redisson
、 render
、 scala-future
、 scheduled
、 servlet-api
、 servlet-api-async
、 servlet-api-dispatch
、 servlet-input-stream
、 servlet-service-name
、 servlet-version
、 sparkjava
、 spring-amqp
、 spring-mvc
、 spring-resttemplate
、 spring-service-name
、 spring-view-render
、 spring-webclient
、 spring-webflux
、 ssl-context
、 struts
、 timer-task
、 urlconnection
、 vertx
、 vertx-web
、 vertx-webclient
、 websocket
。当设置为非空值时,如果未通过 disable_instrumentations
( [1.0.0] 在 1.0.0 中添加。自 1.15.0 版本起,可以在运行时更改此值 ) 或 enable_experimental_instrumentations
( [1.25.0] 在 1.25.0 中添加。 ) 禁用,则只会启用列出的检测。当未设置或为空(默认)时,除非通过 disable_instrumentations
( [1.0.0] 在 1.0.0 中添加。自 1.15.0 版本起,可以在运行时更改此值 ) 或 enable_experimental_instrumentations
( [1.25.0] 在 1.25.0 中添加。 ) 禁用,否则将启用默认启用的所有检测。
在运行时更改此值可能会暂时减慢应用程序的速度。
默认值 | 类型 | 动态 |
---|---|---|
|
集合 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
disable_instrumentations
( [1.0.0] 在 1.0.0 中添加。自 1.15.0 版本起,可以在运行时更改此值 )
编辑一个应该被禁用的检测列表。有效选项为 annotations
、 annotations-capture-span
、 annotations-capture-transaction
、 annotations-traced
、 apache-commons-exec
、 apache-httpclient
、 asynchttpclient
、 aws-lambda
、 aws-sdk
、 cassandra
、 concurrent
、 dubbo
、 elasticsearch-restclient
、 exception-handler
、 executor
、 executor-collection
、 experimental
、 finagle-httpclient
、 fork-join
、 grails
、 grpc
、 hibernate-search
、 http-client
、 jakarta-websocket
、 java-ldap
、 javalin
、 javax-websocket
、 jax-rs
、 jax-ws
、 jdbc
、 jdk-httpclient
、 jdk-httpserver
、 jedis
、 jms
、 jsf
、 kafka
、 lettuce
、 log-correlation
、 log-error
、 log-reformatting
、 logging
、 micrometer
、 mongodb
、 mongodb-client
、 okhttp
、 opentelemetry
、 opentelemetry-annotations
、 opentelemetry-metrics
、 opentracing
、 process
、 public-api
、 quartz
、 rabbitmq
、 reactor
、 redis
、 redisson
、 render
、 scala-future
、 scheduled
、 servlet-api
、 servlet-api-async
、 servlet-api-dispatch
、 servlet-input-stream
、 servlet-service-name
、 servlet-version
、 sparkjava
、 spring-amqp
、 spring-mvc
、 spring-resttemplate
、 spring-service-name
、 spring-view-render
、 spring-webclient
、 spring-webflux
、 ssl-context
、 struts
、 timer-task
、 urlconnection
、 vertx
、 vertx-web
、 vertx-webclient
、 websocket
。对于 1.25.0
及更高版本,使用 enable_experimental_instrumentations
( [1.25.0] 在 1.25.0 中添加。 ) 启用实验性检测。
在运行时更改此值可能会暂时减慢应用程序的速度。
默认值 | 类型 | 动态 |
---|---|---|
|
集合 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
enable_experimental_instrumentations
( [1.25.0] 在 1.25.0 中添加。 )
编辑是否应用实验性检测。
在运行时更改此值可能会暂时减慢应用程序的速度。设置为 true
将启用 experimental
组中的检测。
默认值 | 类型 | 动态 |
---|---|---|
|
布尔值 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
unnest_exceptions
编辑在报告异常时,取消嵌套与通配符模式匹配的异常。例如,这对于 Spring 的 org.springframework.web.util.NestedServletException
非常有用。
此选项支持通配符 *
,它匹配零个或多个字符。示例:/foo/*/bar/*/baz*
、*foo*
。默认情况下匹配不区分大小写。在元素前加上 (?-i)
可以使匹配区分大小写。
默认值 | 类型 | 动态 |
---|---|---|
|
列表 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
ignore_exceptions
( [1.11.0] 在 1.11.0 中添加。 )
编辑应该被忽略并且不作为错误报告的异常列表。这允许忽略在不是实际错误的常规控制流中抛出的异常
此选项支持通配符 *
,它匹配零个或多个字符。示例:/foo/*/bar/*/baz*
、*foo*
。默认情况下匹配不区分大小写。在元素前加上 (?-i)
可以使匹配区分大小写。
示例
-
com.mycompany.ExceptionToIgnore
: 使用完全限定的名称 -
*ExceptionToIgnore
:使用通配符避免包名 -
*exceptiontoignore
:默认情况下不区分大小写
不支持异常继承,因此您必须显式列出所有抛出的异常类型
默认值 | 类型 | 动态 |
---|---|---|
|
列表 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
capture_body
(性能)
编辑对于由 HTTP 请求触发的事务,Java 代理可以选择捕获请求体(例如 POST 变量)。 对于由从消息代理接收消息触发的事务,代理可以捕获文本消息体。
如果 HTTP 请求或消息有正文,并且此设置被禁用,则正文将显示为 [REDACTED]。
此选项不区分大小写。
目前,正文长度限制为 10000 个字符,且不可配置。如果正文大小超过限制,将会被截断。
目前,仅支持 UTF-8 编码的纯文本 HTTP 内容类型。选项capture_body_content_types
( [1.5.0] 在 1.5.0 中添加。 性能) 决定捕获哪些内容类型。
请求体通常包含敏感值,如密码、信用卡号等。如果您的服务处理此类数据,我们建议您谨慎启用此功能。启用正文捕获还会显著增加堆使用、网络利用率和 Elasticsearch 索引大小方面的开销。
有效选项:off
、errors
、transactions
、all
默认值 | 类型 | 动态 |
---|---|---|
|
EventType |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
capture_headers
(性能)
编辑如果设置为 true
,代理将捕获 HTTP 请求和响应头(包括 cookies),以及使用 Kafka 或 JMS 等消息传递框架时的消息头/属性。
将其设置为 false
可以减少网络带宽、磁盘空间和对象分配。
默认值 | 类型 | 动态 |
---|---|---|
|
布尔值 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
global_labels
( [1.7.0] 在 1.7.0 中添加。需要 APM Server 7.2+ )
编辑添加到所有事件的标签,格式为 key=value[,key=value[,...]]
。任何通过 API 由应用程序设置的标签将覆盖具有相同键的全局标签。
此功能需要 APM Server 7.2+
默认值 | 类型 | 动态 |
---|---|---|
|
Map |
false |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
instrument_ancient_bytecode
( [1.35.0] 在 1.35.0 中添加。 )
编辑一个布尔值,指定代理是否应检测 pre-Java-1.4 字节码。
默认值 | 类型 | 动态 |
---|---|---|
|
布尔值 |
false |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
context_propagation_only
( [1.44.0] 在 1.44.0 中添加。 )
编辑设置为 true 时,禁用日志发送、指标和跟踪收集。跟踪上下文传播和日志关联将保持活动状态。请注意,与 disable_send
相反,代理仍将连接到 APM 服务器以获取配置更新和运行状况检查。
默认值 | 类型 | 动态 |
---|---|---|
|
布尔值 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
classes_excluded_from_instrumentation
编辑用于排除特定类不被检测。为了排除整个包,请使用通配符,如: com.project.exclude.*
此选项支持通配符 *
,它匹配零个或多个字符。示例:/foo/*/bar/*/baz*
, *foo*
。默认情况下匹配不区分大小写。在元素前添加 (?-i)
使匹配区分大小写。
默认值 | 类型 | 动态 |
---|---|---|
|
列表 |
false |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
trace_methods
( [1.0.0] 在 1.0.0 中添加。自 1.15.0 版本起,可以在运行时更改此值 )
编辑一个方法列表,用于为其创建事务或 span。
如果要监视大量方法,请改用profiling_inferred_spans_enabled
。
它的工作原理是检测每个匹配的方法以包含为该方法创建 span 的代码。虽然创建 span 在性能方面非常便宜,但检测整个代码库或在紧密循环中执行的方法会导致显著的开销。
使用类似于切入点的语法,您可以根据以下内容进行匹配
- 方法修饰符(可选)
示例:public
、protected
、private
或*
- 包和类名(通配符包括子包)
示例:org.example.*
- 方法名(自 1.4.0 起可选)
示例:myMeth*d
- 方法参数类型(可选)
示例:(*lang.String, int[])
- 具有特定注解的类(可选)
示例:@*ApplicationScoped
- 具有特定注解的类,该注解本身使用给定的元注解进行注解(可选)
示例:@@javax.enterpr*se.context.NormalScope
语法为 modifier @fully.qualified.AnnotationName fully.qualified.ClassName#methodName(fully.qualified.ParameterType)
。
一些示例
-
org.example.*
[1.4.0] 在 1.4.0 中添加。自 1.4.0 起,可以省略方法 -
org.example.*#*
(在 1.4.0 之前,您需要指定一个方法匹配器) -
org.example.MyClass#myMethod
-
org.example.MyClass#myMethod()
-
org.example.MyClass#myMethod(java.lang.String)
-
org.example.MyClass#myMe*od(java.lang.String, int)
-
private org.example.MyClass#myMe*od(java.lang.String, *)
-
* org.example.MyClas*#myMe*od(*.String, int[])
-
public org.example.services.*Service#*
-
public @java.inject.ApplicationScoped org.example.*
-
public @java.inject.* org.example.*
-
public @@javax.enterprise.context.NormalScope org.example.*, public @@jakarta.enterprise.context.NormalScope org.example.*
仅在必要时使用通配符。您匹配的方法越多,代理导致的开销就越大。另请注意,每个事务的 span 数量存在上限(请参阅 transaction_max_spans
)。
代理将为持续时间超过 span_stack_trace_min_duration
的 span 创建堆栈跟踪。当跟踪大量方法(例如,通过使用通配符)时,这可能会导致较高的开销。考虑增加阈值或完全禁用堆栈跟踪收集。
常见配置
跟踪 CDI 注释 bean 中的所有公共方法
public @@javax.enterprise.context.NormalScope your.application.package.* public @@jakarta.enterprise.context.NormalScope your.application.package.* public @@javax.inject.Scope your.application.package.*
此方法仅在 Elastic APM Java 代理中可用。
在运行时更改此值可能会暂时减慢应用程序的速度。
默认值 | 类型 | 动态 |
---|---|---|
|
列表 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
trace_methods_duration_threshold
( [1.7.0] 在 1.7.0 中添加。 )
编辑如果设置了 trace_methods
配置选项,则提供一个阈值来限制基于持续时间的 span。当设置为大于 0 的值时,默认情况下,将丢弃基于 trace_methods
跟踪的方法的 span。如果满足以下条件之一,则将跟踪和报告此类方法
- 此方法的持续时间超过了配置的阈值。
- 此方法以异常结束。
- 作为执行此方法的一部分执行的方法超过了阈值或以异常结束。
- 在此方法执行期间执行了“强制跟踪的方法”(例如,数据库查询、HTTP 出口、自定义)。
设置为 0 以禁用。
事务永远不会被丢弃,无论其持续时间如何。此配置仅影响 span。为了不破坏 span 引用,所有通向异步操作或出口 span(例如 HTTP 请求或数据库查询)的 span 永远不会被丢弃,无论其持续时间如何。
如果同时配置了此选项和 span_min_duration
,则两个阈值中较高的一个将决定哪些 span 将被丢弃。
支持持续时间后缀 ms
、s
和 m
。示例:0ms
。
默认值 | 类型 | 动态 |
---|---|---|
|
TimeDuration |
false |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
central_config
( [1.8.0] 在 1.8.0 中添加。 )
编辑启用后,代理将定期向 APM 服务器发出请求,以获取更新的配置。
默认值 | 类型 | 动态 |
---|---|---|
|
布尔值 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
breakdown_metrics
( [1.8.0] 在 1.8.0 中添加。 )
编辑禁用分解指标的收集 (span.self_time
)
默认值 | 类型 | 动态 |
---|---|---|
|
布尔值 |
false |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
config_file
( [1.8.0] 在 1.8.0 中添加。 )
编辑设置代理配置文件的路径。特殊值 _AGENT_HOME_
是 elastic-apm-agent.jar
所在的文件夹的占位符。该文件必须位于文件系统上。您不能引用类路径位置。
此选项只能通过系统属性、环境变量或附加器选项进行设置。
默认值 | 类型 | 动态 |
---|---|---|
|
字符串 |
false |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
plugins_dir
(实验性)
编辑此功能目前为实验性功能,这意味着默认情况下它是禁用的,并且不能保证在未来的版本中向后兼容。
一个包含外部代理插件的文件夹。
使用 apm-agent-plugin-sdk
和 apm-agent-api
工件创建一个 jar 文件,并将其放置到插件文件夹中。代理将加载在 META-INF/services/co.elastic.apm.agent.sdk.ElasticApmInstrumentation
服务描述符中声明的所有检测。有关插件示例,请参阅 integration-tests/external-plugin-test
。
默认值 | 类型 | 动态 |
---|---|---|
|
字符串 |
false |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
use_elastic_traceparent_header
( [1.14.0] 添加于 1.14.0 版本。 )
编辑为了启用分布式追踪,代理会将跟踪上下文标头添加到传出的请求(如 HTTP 请求、Kafka 记录、gRPC 请求等)。这些标头(traceparent
和 tracestate
)在 W3C 跟踪上下文规范中定义。
当此设置设置为 true
时,代理还会添加标头 elastic-apm-traceparent
,以便向后兼容旧版本的 Elastic APM 代理。
默认值 | 类型 | 动态 |
---|---|---|
|
布尔值 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
disable_outgoing_tracecontext_headers
( [1.37.0] 添加于 1.37.0 版本。 )
编辑使用此选项可禁用向任何传出通信注入 tracecontext
标头。
禁用 tracecontext
标头注入意味着 分布式追踪 将无法在下游服务上工作。
默认值 | 类型 | 动态 |
---|---|---|
|
布尔值 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
span_min_duration
( [1.16.0] 添加于 1.16.0 版本。 )
编辑设置跨度的最小持续时间。尝试丢弃执行速度快于此阈值的跨度。
如果它们导致无法丢弃的跨度,则尝试将失败。将跟踪上下文传播到下游服务的跨度(例如传出的 HTTP 请求)无法丢弃。此外,导致错误或可能是异步操作父级的跨度也无法丢弃。
但是,可以使用此阈值丢弃不传播上下文的外部调用,例如对数据库的调用。
支持持续时间后缀 ms
、s
和 m
。示例:0ms
。
默认值 | 类型 | 动态 |
---|---|---|
|
TimeDuration |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
cloud_provider
( [1.21.0] 添加于 1.21.0 版本。 )
编辑此配置值允许您指定应假设哪个云提供商用于元数据收集。默认情况下,代理将尝试检测云提供商,如果检测失败,将使用试错法来收集元数据。
有效选项:AUTO
、AWS
、GCP
、AZURE
、NONE
默认值 | 类型 | 动态 |
---|---|---|
|
CloudProvider |
false |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
enable_public_api_annotation_inheritance
(性能)
编辑一个布尔值,指定代理是否应在类层次结构中搜索公共 api 注释(@CaptureTransaction
、@CaptureSpan
、@Traced
和从 1.45.0 版本开始的 @WithSpan
)。当设置为 false
时,如果方法使用公共 api 注释进行注释,则会对该方法进行检测。当设置为 true
时,也将检测覆盖注释方法的方法。无论哪种方式,只有当方法包含在配置的 application_packages
中时,才会对方法进行检测。
默认值 | 类型 | 动态 |
---|---|---|
|
布尔值 |
false |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
transaction_name_groups
( [1.33.0] 添加于 1.33.0 版本。 )
编辑使用此选项,您可以使用通配符表达式对包含动态部分的事务名称进行分组。例如,模式 GET /user/*/cart
会将事务(如 GET /users/42/cart
和 GET /users/73/cart
)合并到一个事务名称 GET /users/*/cart
中,从而减少事务名称的基数。
此选项支持通配符 *
,它匹配零个或多个字符。示例:/foo/*/bar/*/baz*
、*foo*
。默认情况下匹配不区分大小写。在元素前加上 (?-i)
可以使匹配区分大小写。
默认值 | 类型 | 动态 |
---|---|---|
|
列表 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
trace_continuation_strategy
( [1.34.0] 添加于 1.34.0 版本。 )
编辑此选项允许对 APM 代理如何处理传入请求的 W3C 跟踪上下文标头进行一些控制。默认情况下,traceparent
和 tracestate
标头按照 W3C 规范用于分布式跟踪。但是,在某些情况下,不使用传入的 traceparent
标头可能会很有帮助。一些示例用例:
- 一个受 Elastic 监控的服务正在接收来自未监控服务的带有
traceparent
标头的请求。 - 一个受 Elastic 监控的服务是公开的,并且不希望用户请求可能欺骗跟踪数据(跟踪 ID、采样决策)。
有效值是:
-
continue:默认行为。传入的
traceparent
值用于继续跟踪并确定采样决策。 -
restart:始终忽略传入请求的
traceparent
标头。将生成新的跟踪 ID,并且将根据 transaction_sample_rate 做出采样决策。将建立到传入traceparent
的跨度链接。 -
restart_external:如果传入请求在
tracestate
中包含es
供应商标志,则任何traceparent
都将被视为内部,并将按照上述 continue 的描述进行处理。否则,任何traceparent
都将被视为外部,并将按照上述 restart 的描述进行处理。
从 Elastic Observability 8.2 开始,跨度链接在跟踪视图中可见。
此选项不区分大小写。
有效选项:continue
、restart
、restart_external
默认值 | 类型 | 动态 |
---|---|---|
|
TraceContinuationStrategy |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|
baggage_to_attach
( [1.43.0] 添加于 1.43.0 版本。 )
编辑如果任何行李键与通过此配置选项提供的任何模式匹配,则相应的行李键和值将自动存储在相应的事务、跨度和错误上。行李键在存储时将以“baggage.”为前缀。
默认值 | 类型 | 动态 |
---|---|---|
|
列表 |
true |
Java 系统属性 | 属性文件 | 环境变量 |
---|---|---|
|
|
|