通用配置(proto)

config.tap.v3.TapConfig

[config.tap.v3.TapConfig proto]

Tap 配置。

{
  "match_config": {...},
  "match": {...},
  "output_config": {...}
}
match_config

(config.tap.v3.MatchPredicate) 匹配配置。如果配置与正在被 Tap 的数据源匹配,则会发生 Tap,结果将写入配置的输出。必须设置 matchmatch_config 中的其中一个。如果两个都设置了,则将使用 match

match

(config.common.matcher.v3.MatchPredicate) 匹配配置。如果配置与正在被 Tap 的数据源匹配,则会发生 Tap,结果将写入配置的输出。必须设置 matchmatch_config 中的其中一个。如果两个都设置了,则将使用 match

output_config

(config.tap.v3.OutputConfig, REQUIRED) Tap 输出配置。如果匹配配置与正在被 Tap 的数据源匹配,则会发生 Tap,并且数据将写入配置的输出。

config.tap.v3.MatchPredicate

[config.tap.v3.MatchPredicate proto]

Tap 匹配配置。这是一个递归结构,允许使用各种逻辑运算符构建复杂的嵌套匹配配置。

{
  "or_match": {...},
  "and_match": {...},
  "not_match": {...},
  "any_match": ...,
  "http_request_headers_match": {...},
  "http_request_trailers_match": {...},
  "http_response_headers_match": {...},
  "http_response_trailers_match": {...},
  "http_request_generic_body_match": {...},
  "http_response_generic_body_match": {...}
}
or_match

(config.tap.v3.MatchPredicate.MatchSet) 描述逻辑 OR 的集合。如果集合中的任何成员匹配,则匹配配置匹配。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

and_match

(config.tap.v3.MatchPredicate.MatchSet) 描述逻辑 AND 的集合。如果集合中的所有成员都匹配,则匹配配置匹配。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

not_match

(config.tap.v3.MatchPredicate) 否定匹配。如果否定匹配条件匹配,则匹配配置将匹配。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

any_match

(bool) 匹配配置将始终匹配。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

http_request_headers_match

(config.tap.v3.HttpHeadersMatch) HTTP 请求标头匹配配置。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

http_request_trailers_match

(config.tap.v3.HttpHeadersMatch) HTTP 请求尾部匹配配置。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

http_response_headers_match

(config.tap.v3.HttpHeadersMatch) HTTP 响应标头匹配配置。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

http_response_trailers_match

(config.tap.v3.HttpHeadersMatch) HTTP 响应尾部匹配配置。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

http_request_generic_body_match

(config.tap.v3.HttpGenericBodyMatch) HTTP 请求通用正文匹配配置。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

http_response_generic_body_match

(config.tap.v3.HttpGenericBodyMatch) HTTP 响应通用正文匹配配置。

必须设置 or_matchand_matchnot_matchany_matchhttp_request_headers_matchhttp_request_trailers_matchhttp_response_headers_matchhttp_response_trailers_matchhttp_request_generic_body_matchhttp_response_generic_body_match 中的其中一个。

config.tap.v3.MatchPredicate.MatchSet

[config.tap.v3.MatchPredicate.MatchSet proto]

用于逻辑运算的匹配配置集。

{
  "rules": []
}
rules

(repeated config.tap.v3.MatchPredicate, REQUIRED) 构成集合的规则列表。

config.tap.v3.HttpHeadersMatch

[config.tap.v3.HttpHeadersMatch proto]

HTTP 标头匹配配置。

{
  "headers": []
}
headers

(repeated config.route.v3.HeaderMatcher) 要匹配的 HTTP 标头。

config.tap.v3.HttpGenericBodyMatch

[config.tap.v3.HttpGenericBodyMatch proto]

HTTP 通用正文匹配配置。要位于 HTTP 正文中的文本字符串和十六进制字符串列表。所有指定的字符串都必须位于 HTTP 正文中才能进行正向匹配。搜索可能仅限于正文开始处的指定字节数。

注意

在 HTTP 正文中搜索模式可能非常占用 CPU。对于每个指定的模式,HTTP 正文将逐字节扫描以查找匹配项。如果指定了多个模式,则会针对每个模式重复该过程。如果已知模式的位置,则应指定 bytes_limit 以仅扫描 HTTP 正文的一部分。

{
  "bytes_limit": ...,
  "patterns": []
}
bytes_limit

(uint32) 将搜索限制为指定的字节数 - 默认值为零(无限制 - 匹配整个捕获的缓冲区)。

patterns

(repeated config.tap.v3.HttpGenericBodyMatch.GenericTextMatch, REQUIRED) 要匹配的模式列表。

config.tap.v3.HttpGenericBodyMatch.GenericTextMatch

[config.tap.v3.HttpGenericBodyMatch.GenericTextMatch proto]

{
  "string_match": ...,
  "binary_match": ...
}
string_match

(string) 要位于 HTTP 正文中的文本字符串。

必须设置 string_matchbinary_match 中的其中一个。

binary_match

(bytes) 要位于 HTTP 正文中的字节序列。

必须设置 string_matchbinary_match 中的其中一个。

config.tap.v3.OutputConfig

[config.tap.v3.OutputConfig proto]

Tap 输出配置。

{
  "sinks": [],
  "max_buffered_rx_bytes": {...},
  "max_buffered_tx_bytes": {...},
  "streaming": ...
}
sinks

(repeated config.tap.v3.OutputSink, REQUIRED) Tap 数据的输出接收器。目前列表中只允许一个接收器。一旦支持多个接收器类型,此约束将被放宽。

max_buffered_rx_bytes

(UInt32Value) 对于缓冲的 Tap,在截断之前将缓冲的最大接收正文量。如果发生截断,则将设置 truncated 字段。如果未指定,则默认值为 1KiB。

max_buffered_tx_bytes

(UInt32Value) 对于缓冲的 Tap,在截断之前将缓冲的最大传输正文量。如果发生截断,则将设置 truncated 字段。如果未指定,则默认值为 1KiB。

streaming

(bool) 指示 Tap 是否为每个 Tap 生成一条缓冲消息,或者在发出的 TraceWrapper 消息中生成多条流式消息。请注意,流式 Tap 并不意味着不进行缓冲。如果在可以确定匹配之前处理数据,可能需要缓冲。有关更多信息,请参阅 HTTP Tap 过滤器 streaming 文档。

config.tap.v3.OutputSink

[config.tap.v3.OutputSink proto]

Tap 输出接收器配置。

{
  "format": ...,
  "streaming_admin": {...},
  "file_per_tap": {...},
  "buffered_admin": {...},
  "custom_sink": {...}
}
format

(config.tap.v3.OutputSink.Format) 接收器输出格式。

streaming_admin

(config.tap.v3.StreamingAdminSink) Tap 输出将通过 POST /tap 管理端点流出。

注意

仅当从 POST /tap 管理端点配置 Tap 时,才允许指定流式管理输出接收器。因此,如果扩展已配置为从其他来源(例如,静态文件、XDS 等)接收 Tap 配置,则配置流式管理输出类型将失败。

必须且仅必须设置以下选项之一:streaming_adminfile_per_tapbuffered_admincustom_sink

file_per_tap

(config.tap.v3.FilePerTapSink) 每个 tap sink 的输出将写入一个文件。

必须且仅必须设置以下选项之一:streaming_adminfile_per_tapbuffered_admincustom_sink

buffered_admin

(config.tap.v3.BufferedAdminSink) tap 输出将在刷新到 POST /tap 管理端点之前在一个块中进行缓冲。

注意

仅当从 POST /tap 管理端点配置 tap 时才允许指定缓冲的管理输出 sink。因此,如果已配置扩展以从其他来源接收 tap 配置(例如静态文件、XDS 等),则配置缓冲的管理输出类型将失败。

必须且仅必须设置以下选项之一:streaming_adminfile_per_tapbuffered_admincustom_sink

custom_sink

(config.core.v3.TypedExtensionConfig) tap 输出过滤器将由扩展类型定义。

必须且仅必须设置以下选项之一:streaming_adminfile_per_tapbuffered_admincustom_sink

Enum config.tap.v3.OutputSink.Format

[config.tap.v3.OutputSink.Format proto]

输出格式。所有输出都采用一个或多个 TraceWrapper 消息的形式。此枚举指示如何写入这些消息。请注意,并非所有 sink 都支持所有输出格式。有关更多信息,请参阅各个 sink 文档。

JSON_BODY_AS_BYTES

(DEFAULT) ⁣每条消息都将以 JSON 格式写入。任何 body 数据将出现在 as_bytes 字段中。这意味着正文数据将根据 proto3 JSON 映射 进行 Base64 编码。

JSON_BODY_AS_STRING

⁣每条消息都将以 JSON 格式写入。任何 body 数据将出现在 as_string 字段中。这意味着正文数据将根据 proto3 JSON 映射 进行字符串编码。当已知正文是可读的(例如 HTTP 上的 JSON)并且用户希望直接查看它,而不必强制对正文进行 Base64 解码时,此格式类型很有用。

PROTO_BINARY

⁣二进制 proto 格式。请注意,二进制 proto 不是自限定的。如果 sink 写入多个二进制消息,而没有任何长度信息,则数据流将无用。但是,对于某些自限定的 sink(例如,每个文件一条消息),这种输出格式使使用更简单。

PROTO_BINARY_LENGTH_DELIMITED

⁣消息被写为一系列元组,其中每个元组都是作为 protobuf 32 位 varint 编码的消息长度,后跟二进制消息。可以使用特定于语言的 protobuf 编码流实现读取消息,以获取消息长度和消息。

PROTO_TEXT

⁣文本 proto 格式。

config.tap.v3.StreamingAdminSink

[config.tap.v3.StreamingAdminSink proto]

流式管理 sink 配置。

config.tap.v3.BufferedAdminSink

[config.tap.v3.BufferedAdminSink proto]

BufferedAdminSink 配置 tap 输出,以便收集跟踪,但不会在满足多个条件之一之前返回这些跟踪。与 StreamingAdminSink 类似,仅当从 /tap 管理端点配置 tap 时才允许指定缓冲的管理输出 sink。

{
  "max_traces": ...,
  "timeout": {...}
}
max_traces

(uint64) 收集到指定数量的跟踪后,停止收集跟踪。如果首先达到其他结束收集条件,则不使用此值。

timeout

(Duration) 充当防止客户端长时间等待的备用措施。超时后,将触发缓冲区刷新,返回迄今为止缓冲的跟踪。这可能会导致返回的跟踪数量少于请求的数量,并且如果在此期间没有缓冲任何跟踪,则不会返回任何跟踪。指定 0 作为超时值(或根本不指定值)表示无限超时。

config.tap.v3.FilePerTapSink

[config.tap.v3.FilePerTapSink proto]

每个 tap sink 都会为每个被 tap 的流输出一个独立的文件。

{
  "path_prefix": ...
}
path_prefix

(string, REQUIRED) 路径前缀。输出文件将采用 <<path_prefix>_<id>.pb 的形式,其中 <id> 是区分流实例记录的跟踪的标识符(Envoy 连接 ID、HTTP 流 ID 等)。