通用配置(proto)
config.tap.v3.TapConfig
[config.tap.v3.TapConfig proto]
Tap 配置。
{
"match_config": {...},
"match": {...},
"output_config": {...}
}
- match_config
(config.tap.v3.MatchPredicate) 匹配配置。如果配置与正在被 Tap 的数据源匹配,则会发生 Tap,结果将写入配置的输出。必须设置 match 和 match_config 中的其中一个。如果两个都设置了,则将使用 match。
- match
(config.common.matcher.v3.MatchPredicate) 匹配配置。如果配置与正在被 Tap 的数据源匹配,则会发生 Tap,结果将写入配置的输出。必须设置 match 和 match_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_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 中的其中一个。
- and_match
(config.tap.v3.MatchPredicate.MatchSet) 描述逻辑 AND 的集合。如果集合中的所有成员都匹配,则匹配配置匹配。
必须设置 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 中的其中一个。
- not_match
(config.tap.v3.MatchPredicate) 否定匹配。如果否定匹配条件匹配,则匹配配置将匹配。
必须设置 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 中的其中一个。
- any_match
(bool) 匹配配置将始终匹配。
必须设置 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 中的其中一个。
- http_request_headers_match
(config.tap.v3.HttpHeadersMatch) HTTP 请求标头匹配配置。
必须设置 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 中的其中一个。
- http_request_trailers_match
(config.tap.v3.HttpHeadersMatch) HTTP 请求尾部匹配配置。
必须设置 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 中的其中一个。
- http_response_headers_match
(config.tap.v3.HttpHeadersMatch) HTTP 响应标头匹配配置。
必须设置 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 中的其中一个。
- http_response_trailers_match
(config.tap.v3.HttpHeadersMatch) HTTP 响应尾部匹配配置。
必须设置 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 中的其中一个。
- http_request_generic_body_match
(config.tap.v3.HttpGenericBodyMatch) HTTP 请求通用正文匹配配置。
必须设置 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 中的其中一个。
- http_response_generic_body_match
(config.tap.v3.HttpGenericBodyMatch) HTTP 响应通用正文匹配配置。
必须设置 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 中的其中一个。
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_match 和 binary_match 中的其中一个。
- binary_match
(bytes) 要位于 HTTP 正文中的字节序列。
必须设置 string_match 和 binary_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_admin、file_per_tap、buffered_admin、custom_sink。
- file_per_tap
(config.tap.v3.FilePerTapSink) 每个 tap sink 的输出将写入一个文件。
必须且仅必须设置以下选项之一:streaming_admin、file_per_tap、buffered_admin、custom_sink。
- buffered_admin
(config.tap.v3.BufferedAdminSink) tap 输出将在刷新到
POST /tap
管理端点之前在一个块中进行缓冲。注意
仅当从
POST /tap
管理端点配置 tap 时才允许指定缓冲的管理输出 sink。因此,如果已配置扩展以从其他来源接收 tap 配置(例如静态文件、XDS 等),则配置缓冲的管理输出类型将失败。必须且仅必须设置以下选项之一:streaming_admin、file_per_tap、buffered_admin、custom_sink。
- custom_sink
(config.core.v3.TypedExtensionConfig) tap 输出过滤器将由扩展类型定义。
必须且仅必须设置以下选项之一:streaming_admin、file_per_tap、buffered_admin、custom_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 等)。