流量监听
Envoy 目前提供两个实验性的扩展,可以监听流量
HTTP 监听过滤器。有关更多信息,请参阅链接的过滤器文档。
监听传输套接字扩展,它可以拦截流量并写入 protobuf 跟踪文件。本文档的其余部分描述了监听传输套接字的配置。
监听传输套接字配置
注意
监听传输套接字处于实验阶段,目前正在积极开发中。目前匹配条件、输出配置、输出接收器等功能集非常有限。随着时间的推移,功能将不断扩展,配置结构也可能会发生变化。
监听可以在 监听器 和 集群 传输套接字上配置,分别提供对下游和上游 L4 连接的拦截能力。
要配置流量监听,请在监听器或集群中添加一个 envoy.transport_sockets.tap
传输套接字 配置。对于纯文本套接字,这可能看起来像
29 transport_socket:
30 name: envoy.transport_sockets.tap
31 typed_config:
32 "@type": type.googleapis.com/envoy.extensions.transport_sockets.tap.v3.Tap
33 common_config:
34 static_config:
35 match:
36 any_match: true
37 output_config:
38 sinks:
39 - format: PROTO_BINARY
40 file_per_tap:
41 path_prefix: /some/tap/path
42 transport_socket:
43 name: envoy.transport_sockets.raw_buffer
44 typed_config:
45 "@type": type.googleapis.com/envoy.extensions.transport_sockets.raw_buffer.v3.RawBuffer
对于 TLS 套接字,这将是
44 transport_socket:
45 name: envoy.transport_sockets.tap
46 typed_config:
47 "@type": type.googleapis.com/envoy.extensions.transport_sockets.tap.v3.Tap
48 common_config:
49 static_config:
50 match:
51 any_match: true
52 output_config:
53 sinks:
54 - format: PROTO_BINARY
55 file_per_tap:
56 path_prefix: /some/tap/path
57 transport_socket:
58 name: envoy.transport_sockets.tls
59 typed_config:
60 "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
其中 TLS 上下文配置将替换监听器或集群上任何现有的 下游 或 上游 TLS 配置,分别。
每个唯一的套接字实例都将生成一个以 path_prefix
为前缀的跟踪文件。例如,/some/tap/path_0.pb
。
缓冲数据限制
对于缓冲套接字监听,Envoy 将限制监听的正文数据量,以避免出现 OOM 情况。接收和传输数据的默认限制均为 1KiB。这可以通过 max_buffered_rx_bytes 和 max_buffered_tx_bytes 设置进行配置。当缓冲套接字监听被截断时,跟踪将通过 read_truncated 和 write_truncated 字段以及正文 truncated 字段来指示截断。
流式传输
监听传输套接字支持缓冲和流式传输,由 streaming 设置控制。缓冲时,将发出 SocketBufferedTrace 消息。流式传输时,将发出一系列 SocketStreamedTraceSegment。
有关更多信息,请参阅 HTTP 监听过滤器流式传输 文档。HTTP 过滤器和传输套接字之间的许多概念是重叠的。
PCAP 生成
生成的跟踪文件可以转换为 libpcap 格式,适合使用 Wireshark 等工具进行分析,使用 tap2pcap
实用程序,例如
bazel run @envoy_api//tools:tap2pcap /some/tap/path_0.pb path_0.pcap
tshark -r path_0.pcap -d "tcp.port==10000,http2" -P
1 0.000000 127.0.0.1 → 127.0.0.1 HTTP2 157 Magic, SETTINGS, WINDOW_UPDATE, HEADERS
2 0.013713 127.0.0.1 → 127.0.0.1 HTTP2 91 SETTINGS, SETTINGS, WINDOW_UPDATE
3 0.013820 127.0.0.1 → 127.0.0.1 HTTP2 63 SETTINGS
4 0.128649 127.0.0.1 → 127.0.0.1 HTTP2 5586 HEADERS
5 0.130006 127.0.0.1 → 127.0.0.1 HTTP2 7573 DATA
6 0.131044 127.0.0.1 → 127.0.0.1 HTTP2 3152 DATA, DATA