HTTP 配置选项编辑

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

dynamic config

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

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

从 ASP.NET Core 3.0 开始,AllowSynchronousIO 默认情况下为 false,因为大量阻塞同步 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

逗号分隔的字符串

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

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

布尔值

UseWindowsCredentials编辑

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

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

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

ELASTIC_APM_USE_WINDOWS_CREDENTIALS

ElasticApm:UseWindowsCredentials

默认值 类型

false

布尔值

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

dynamic config

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

环境变量名称 IConfiguration 键

ELASTIC_APM_BAGGAGE_TO_ATTACH

ElasticApm:BaggageToAttach

默认值 类型

*

逗号分隔的字符串

TraceContextIgnoreSampledFalse编辑

不建议使用 TraceContextIgnoreSampledFalse。请将 TraceContinuationStrategyrestart_external 值一起使用。

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

在某些情况下,您可能希望更改代理关于采样标志的默认行为。通过将 TraceContextIgnoreSampled 配置值设置为 true,当 W3C Trace Context traceparent 标头的采样标志值为 false 并且 且不存在特定于代理的 tracestate 标头值时,代理会忽略该标志。在忽略采样标志的情况下,代理会根据 采样率 做出采样决定。当调用方服务始终将采样标志值设置为 false(这会导致代理从不采样任何事务)时,这非常有用。

.NET 5 应用程序默认情况下会为传出 HTTP 请求设置 W3C Trace Context,但会将 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

布尔值