HTTP 配置选项

编辑

CaptureBody(性能)( [1.0.1] 在 1.0.1 中添加。 )

编辑

dynamic config

对于 HTTP 请求的事务,代理可以选择捕获请求正文,例如 POST 变量。如果请求有正文并且此设置被禁用,则正文将显示为 [已编辑]。此选项不区分大小写。

为了允许捕获请求正文,代理在 ASP.NET Core 中针对每个请求将 AllowSynchronousIO 设置为 true,因为捕获可能会在同步代码路径中发生。

在 ASP.NET Core 3.0 及更高版本中,默认情况下 AllowSynchronousIOfalse,因为大量的阻塞同步 I/O 操作可能会导致线程池饥饿,从而导致应用程序无响应。如果您的应用程序在启用此功能后变得无响应,请考虑禁用捕获。

在 ASP.NET (.NET Full Framework) 中,此设置对非缓冲请求无效(请参阅 HttpRequest.ReadEntityBodyMode)。

请求正文通常包含敏感值,如密码和信用卡号。如果您的服务处理此类数据,我们建议谨慎启用此功能。启用正文捕获还会显著增加堆使用率、网络利用率和 Elasticsearch 索引大小方面的开销。

可能的选项为 offerrorstransactionsall

  • off - 永远不会报告请求正文
  • errors - 仅会报告错误请求的请求正文
  • transactions - 仅会报告请求事务的请求正文
  • all - 将会同时报告错误和请求事务的请求正文

此设置可以在代理启动后更改。

环境变量名称 IConfiguration 或 Web.config 键

ELASTIC_APM_CAPTURE_BODY

ElasticApm:CaptureBody

默认 类型

off

字符串

CaptureBodyContentTypes(性能)( [1.0.1] 在 1.0.1 中添加。 )

编辑

配置要捕获的内容类型。

此选项支持通配符 *,它匹配零个或多个字符。示例:/foo/*/bar/*/baz**foo*。匹配不区分大小写。

此设置可以在代理启动后更改。

环境变量名称 IConfiguration 或 Web.config 键

ELASTIC_APM_CAPTURE_BODY_CONTENT_TYPES

ElasticApm:CaptureBodyContentTypes

默认 类型

application/x-www-form-urlencoded*、text/*、application/json*、application/xml*

逗号分隔的字符串

CaptureHeaders(性能)

编辑

dynamic config

如果设置为 true,则代理将捕获请求和响应标头,包括 cookie。

将此项设置为 false 可减少 Elasticsearch 使用的内存分配、网络带宽和磁盘空间。

环境变量名称 IConfiguration 或 Web.config 键

ELASTIC_APM_CAPTURE_HEADERS

ElasticApm:CaptureHeaders

默认 类型

true

布尔值

TraceContinuationStrategy(性能)( [1.17.0] 在 1.17.0 中添加。 )

编辑

dynamic config

有效选项:continuerestartrestart_external

环境变量名称 IConfiguration 或 Web.config 键

ELASTIC_APM_TRACE_CONTINUATION_STRATEGY

ElasticApm:TraceContinuationStrategy

默认 类型

continue

字符串

由 Elastic APM .NET 代理跟踪的请求的 traceparent 标头可能已由第三方组件添加。

随着 w3c 跟踪上下文被采用,这种情况变得越来越普遍。在这种情况下,您可能会得到跟踪的一部分位于 Elastic APM 之外的跟踪。

为了正确处理这种情况,代理提供了具有以下值和行为的跟踪延续策略

  • continue:代理按原样采用 traceparent 标头,并将其应用于新事务。
  • restart:代理始终使用新的跟踪 ID 创建新的跟踪。在这种情况下,代理会在新事务中创建一个指向原始 traceparent 的跨度链接。
  • restart_external:代理首先检查 tracestate 标头。如果标头包含 es 供应商标志(这意味着请求来自受 Elastic APM 代理监控的服务),则将其视为内部,否则(包括当 tracestate 标头不存在时)将其视为外部。对于外部调用,代理会使用新的跟踪 ID 创建新的跟踪,并在新事务中创建一个指向原始跟踪的链接。

TransactionIgnoreUrls(性能)

编辑

dynamic config

这用于限制对某些 URL 的请求进行检测。

此属性应设置为包含一个或多个路径的逗号分隔字符串。

例如,为了忽略 URL /foo/bar,请将配置值设置为 "/foo,/bar"

当检测到传入的 HTTP 请求时,其请求路径将针对此列表中的每个元素进行测试。例如,将 /home/index 添加到此列表将匹配并从以下 URL 中删除检测

https://www.mycoolsite.com/home/index
https://127.0.0.1/home/index
http://whatever.com/home/index?value1=123

换句话说,匹配始终基于请求路径发生,主机和查询字符串将被忽略。

此选项支持通配符 *,它匹配零个或多个字符。示例:"/foo/*/bar/*/baz**foo*"。默认情况下,匹配不区分大小写。在元素前加上 (?-i) 使匹配区分大小写。

在此设置下,在请求被忽略的 URL 期间捕获的所有错误仍然会被发送到 APM 服务器。

环境变量名称 IConfiguration 或 Web.config 键

ELASTIC_APM_TRANSACTION_IGNORE_URLS

ElasticApm:TransactionIgnoreUrls

默认 类型

/VAADIN/*、/heartbeat*、/favicon.ico、*.js、*.css、*.jpg、*.jpeg、*.png、*.gif、*.webp、*.svg、*.woff、*.woff2

逗号分隔的字符串

更改此配置将覆盖默认值。

TransactionNameGroups ( [1.27.0] 在 1.27.0 中添加。 )

编辑

dynamic config

使用此选项,您可以使用通配符表达式对包含动态部分的事务名称进行分组。例如,模式 GET /user/*/cart 将合并事务,例如 GET /users/42/cartGET /users/73/cart,成为单个事务名称 GET /users/*/cart,从而减少事务名称的基数。

此选项支持通配符 *,它匹配零个或多个字符。示例:GET /foo/*/bar/*/baz*`*foo*。默认情况下,匹配不区分大小写。在元素前加上 (?-i) 使匹配区分大小写。

环境变量名称 IConfiguration 或 Web.config 键

ELASTIC_APM_TRANSACTION_NAME_GROUPS

ElasticApm:TransactionNameGroups

默认 类型

<none>

字符串

UseElasticTraceparentHeader ( [1.3.0] 在 1.3.0 中添加。 )

编辑

要启用分布式跟踪,代理会将跟踪上下文标头添加到使用 HttpClient 类型发出的传出 HTTP 请求中。这些标头(traceparenttracestate)在 W3C 跟踪上下文规范中定义。

当此设置是 true 时,代理还会添加标头 elasticapm-traceparent,以向后兼容旧版本的 Elastic APM 代理。在 1.3.0 之前的版本只读取 elasticapm-traceparent 标头。

环境变量名称 IConfiguration 或 Web.config 键

ELASTIC_APM_USE_ELASTIC_TRACEPARENT_HEADER

ElasticApm:UseElasticTraceparentHeader

默认 类型

true

布尔值

UsePathAsTransactionName ( [1.27.0] 在 1.27.0 中添加。 )

编辑

dynamic config

如果设置为 true,则不受支持或部分支持的框架的事务名称将采用 $method $path 的形式,而不仅仅是 $method unknown route

如果您的 URL 包含路径参数,例如 /user/$userId,则在启用此标志时应格外小心,因为它可能导致事务组激增。请查看 TransactionNameGroups 选项,了解如何通过将 URL 分组来缓解此问题。

环境变量名称 IConfiguration 或 Web.config 键

ELASTIC_APM_USE_PATH_AS_TRANSACTION_NAME

ElasticApm:UsePathAsTransactionName

默认 类型

true

布尔值

UseWindowsCredentials

编辑

当 APM 代理发出的请求应在服务器请求时使用当前登录用户的凭据进行身份验证时,将此属性设置为 true。

当在代理上使用 Windows 身份验证时,这非常有用,该代理将 APM 代理请求路由到 APM 服务器。

环境变量名称 IConfiguration 或 Web.config 键

ELASTIC_APM_USE_WINDOWS_CREDENTIALS

ElasticApm:UseWindowsCredentials

默认 类型

false

布尔值

BaggageToAttach ( [1.24] 在 1.24 中添加。 )

编辑

dynamic config

控制哪些行李值会自动附加到给定的事件(事务、跨度、错误)。行李值来自 W3C 行李规范中定义的 baggage 标头。您可以通过 Activity API 以编程方式写入和读取行李值。有关更多详细信息,请参阅我们关于如何与 OpenTelemetry 集成的文档

环境变量名称 IConfiguration 键

ELASTIC_APM_BAGGAGE_TO_ATTACH

ElasticApm:BaggageToAttach

默认 类型

*

逗号分隔的字符串

TraceContextIgnoreSampledFalse

编辑

不推荐使用 TraceContextIgnoreSampledFalse。请使用 TraceContinuationStrategy 并将其值设置为 restart_external

该代理使用 W3C 跟踪上下文规范和标准进行分布式跟踪。W3C 跟踪上下文规范中的 traceparent 标头定义了一个采样标志,该标志从调用方服务传播到被调用方服务,并决定是否在被调用方服务中对跟踪进行采样。该代理的默认行为是遵循采样标志值并据此进行操作。

在某些情况下,您可能希望更改代理关于采样标志的默认行为。通过将 TraceContextIgnoreSampled 配置值设置为 true,当 W3C 跟踪上下文 traceparent 标头的采样标志的值为 false 不存在代理特定的 tracestate 标头值时,代理将忽略该采样标志。在忽略采样标志的情况下,代理会根据采样率做出采样决策。当调用方服务始终将采样标志值设置为 false 时,这可能很有用,这将导致代理永远不会对任何事务进行采样。

.NET 5 应用程序默认情况下为传出的 HTTP 请求设置 W3C 跟踪上下文,但 traceparent 标头的采样标志设置为 false。如果 .NET 5 应用程序具有活动的代理,则该代理会确保使用该代理的采样决策来传播采样标志。但是,如果 .NET 5 应用程序没有活动的代理,并且该应用程序调用了另一个具有活动代理的服务,则传播值为 false 的采样标志将导致被调用方服务中没有采样的事务。

如果您的应用程序被没有活动代理的 .NET 5 应用程序调用,则将 TraceContextIgnoreSampledFalse 配置值设置为 true 会指示代理启动新事务并根据采样率做出采样决策,当 traceparent 标头的采样标志的值为 false 不存在代理特定的 tracestate 标头值时。

环境变量名称 IConfiguration 或 Web.config 键

ELASTIC_APM_TRACE_CONTEXT_IGNORE_SAMPLED_FALSE

ElasticApm:TraceContextIgnoreSampledFalse

默认 类型

false

布尔值