7.2. 从流量流视图观察网络流量
流量流 视图显示网络流的数据以及表中的流量数量。作为管理员,您可以使用流量流表监控应用程序间的流量数量。
7.2.1. 使用流量流视图
作为管理员,您可以进入 流量流 表来查看网络流信息。
流程
-
进入到 Observe
Network Traffic。 - 在 Network Traffic 页面中,点 流量流 选项卡。
您可以点击每行来获取对应的流信息。
7.2.2. 为流量流视图配置高级选项
您可以使用 Show advanced options 自定义和导出视图。您可以使用 Display options 下拉菜单设置行大小。默认值为 Normal。
7.2.2.1. 管理列
您可以选择显示所需的列,并对它们进行重新排序。若要管理列,可点 Manage 列。
7.2.2.2. 导出流量流数据
您可以从流量流视图导出数据。
流程
- 点 Export data。
- 在弹出窗口中,您可以选择 Export all data 复选框,以导出所有数据,然后清除复选框以选择要导出的必填字段。
- 单击 Export。
7.2.3. 使用对话跟踪
作为管理员,您可以对属于同一对话的网络流进行分组。对话被定义为一组由 IP 地址、端口和协议标识的对等点,从而产生唯一的 Conversation Id。您可以在 web 控制台中查询对话事件。这些事件在 web 控制台中表示,如下所示:
- Conversation start :连接启动或 TCP 标记被截获时发生此事件
-
Conversation tick:此事件在连接处于活跃状态时根据
FlowCollector
spec.processor.conversationHeartbeatInterval
参数中定义的每个指定间隔发生。 -
Conversation end :当达到
FlowCollector
spec.processor.conversationEndTimeout
参数或 TCP 标志被截获时,会发生此事件。 - Flow :这是在指定间隔内的网络流量流。
流程
-
在 Web 控制台中,进入到 Operators
Installed Operators。 - 在 NetObserv Operator 的 Provided APIs 标题下,选择 Flow Collector。
- 选择 cluster,然后选择 YAML 选项卡。
配置
FlowCollector
自定义资源,以便根据您的观察需求设置spec.processor.logTypes
,conversationEndTimeout
, 和conversationHeartbeatInterval
参数。示例配置示例如下:配置
FlowCollector
以对话跟踪apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: processor: logTypes: Flows 1 advanced: conversationEndTimeout: 10s 2 conversationHeartbeatInterval: 30s 3
- 1
- 当
logTypes
设置为Flows
时,只会导出 Flow 事件。如果将值设为All
,则会在 Network Traffic 页面中导出并看到对话和流事件。要只专注于对话事件,您可以指定Conversations
,它会导出 Conversation start, Conversation tick and Conversation end 事件;或指定EndedConversations
,它只导出 Conversation end 事件。All
对于存储的请求最高,EndedConversations
对于存储的要求最低。 - 2
- Conversation end 事件表示达到了
conversationEndTimeout
,或 TCP 标志被截获。 - 3
- Conversation tick 事件表示当网络连接活跃时,在
FlowCollector
conversationHeartbeatInterval
参数中定义的每个指定间隔。
注意如果您更新了
logType
选项,则之前选择中的流不会从控制台插件中清除。例如,如果您最初将logType
设置为Conversations
,持续到 10 AM,然后移到EndedConversations
,控制台插件会显示 10 AM 之前的所有对话事件,且仅在 10 AM 后终止对话。-
刷新 Traffic flows 标签页中的 Network Traffic。通知请注意,有两个新列: Event/Type 和 Conversation Id。当
Flow
是所选查询选项时,所有 Event/Type 字段都是 Flow。 - 选择 Query Options 并选择 Log Type,Conversation。现在,Event/Type 会显示所有所需的对话事件。
- 接下来,您可以过滤侧面板中的 Conversation 和 Flow 日志类型选项的特定 对话 ID 或切换。
7.2.4. 使用数据包丢弃
当网络流数据的一个或多个数据包无法访问其目的地时,会发生数据包丢失。您可以通过将 FlowCollector
编辑到以下 YAML 示例中的规格来跟踪这些丢弃。
启用此功能时,CPU 和内存用量会增加。
流程
-
在 Web 控制台中,进入到 Operators
Installed Operators。 - 在 NetObserv Operator 的 Provided APIs 标题下,选择 Flow Collector。
- 选择 集群,然后选择 YAML 选项卡。
为数据包丢弃配置
FlowCollector
自定义资源,例如:FlowCollector
配置示例apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: namespace: netobserv agent: type: eBPF ebpf: features: - PacketDrop 1 privileged: true 2
验证
刷新 Network Traffic 页面时,Overview、Traffic Flow 和 Topology 视图会显示有关数据包丢弃的新信息:
- 在 Manage 面板中选择新选择,以选择要在 Overview 中显示的数据包丢弃的图形视觉化。
在 Manage 列中选择新选择,以选择要在流量流表中显示哪些数据包丢弃信息。
-
在 流量流视图 中,您还可以展开侧面板来查看有关数据包丢弃的更多信息。主机丢弃的带有
SKB_DROP
前缀,OVS drops 带有OVS_DROP
前缀。
-
在 流量流视图 中,您还可以展开侧面板来查看有关数据包丢弃的更多信息。主机丢弃的带有
- 在 Topology 视图中,会显示红色的行,其中出现 drops。
7.2.5. 使用 DNS 跟踪
使用 DNS 跟踪,您可以监控网络、进行安全分析并对 DNS 问题进行故障排除。您可以通过将 FlowCollector
编辑到以下 YAML 示例中的规格来跟踪 DNS。
启用这个功能时,在 eBPF 代理中观察到 CPU 和内存用量。
流程
-
在 Web 控制台中,进入到 Operators
Installed Operators。 - 在 Network Observability 的 Provided APIs 标题下,选择 Flow Collector。
- 选择 cluster,然后选择 YAML 选项卡。
配置
FlowCollector
自定义资源。示例配置示例如下:为 DNS 跟踪配置
FlowCollector
apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: namespace: netobserv agent: type: eBPF ebpf: features: - DNSTracking 1 sampling: 1 2
刷新 Network Traffic 页面时,您可以选择在 Overview 和 Traffic Flow 视图和可以应用的新过滤器中查看新的 DNS 表示。
- 在 Manage 面板中选择新的 DNS 选项,在 Overview 中显示图形视觉化和 DNS 指标。
- 在 Manage 列中选择新选择,将 DNS 列添加到 流量流视图 中。
- 过滤特定 DNS 指标,如 DNS Id、DNS Error DNS Latency 和 DNS Response Code,并在侧面面板中查看更多信息。默认情况下会显示 DNS Latency 和 DNS Response Code 列。
TCP 握手数据包没有 DNS 标头。在 DNS Latency、ID 和 响应代码 值 "n/a" 的流量流中会显示没有 DNS 标头的 TCP 协议流。您可以过滤掉流数据,以只查看使用通用过滤器 "DNSError" 等于 "0" 的 DNS 标头的流。
7.2.6. 使用 RTT 追踪
您可以通过将 FlowCollector
编辑到以下 YAML 示例中的规格来跟踪 RTT。
流程
-
在 Web 控制台中,进入到 Operators
Installed Operators。 - 在 NetObserv Operator 的 Provided APIs 标题中,选择 Flow Collector。
- 选择 集群,然后选择 YAML 选项卡。
为 RTT 追踪配置
FlowCollector
自定义资源,例如:FlowCollector
配置示例apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: namespace: netobserv agent: type: eBPF ebpf: features: - FlowRTT 1
- 1
- 您可以通过列出
spec.agent.ebpf.features
规格列表中的FlowRTT
参数来启动追踪 RTT 网络流。
验证
刷新 Network Traffic 页面时,Overview、Traffic Flow 和 Topology 视图会显示有关 RTT 的新信息:
- 在 Overview 中,在 Manage 面板中选择新选择,以选择要显示的 RTT 的图形视觉化。
- 在 Traffic flows 表中,可以看到 Flow RTT 列,您可以在 Manage 列中管理显示。
在 流量流视图 中,您还可以展开侧面板来查看有关 RTT 的更多信息。
过滤示例
-
点 Common 过滤
Protocol。 - 根据 TCP、Ingress 方向过滤网络流数据,并查找大于 10,000,000 纳秒(10ms)的 FlowRTT 值。
- 删除 Protocol 过滤。
- 在 Common 过滤器中过滤大于 0 的 Flow RTT 值。
-
点 Common 过滤
- 在 Topology 视图中,点 Display 选项下拉菜单。然后点 edge labels 下拉列表中的 RTT。
7.2.6.1. 使用直方图
您可以点 Show histogram 来显示工具栏视图,以使用栏图的形式可视化流历史记录。histogram 显示一段时间内的日志数量。您可以选择直方图的一部分在下面的工具栏中过滤网络流数据。
7.2.7. 使用可用区
您可以配置 FlowCollector
以收集有关集群可用区的信息。这可让您使用应用到节点的 topology.kubernetes.io/zone
标签值增强网络流数据。
流程
-
在 Web 控制台中,进入 Operators
Installed Operators。 - 在 NetObserv Operator 的 Provided APIs 标题下,选择 Flow Collector。
- 选择 cluster,然后选择 YAML 选项卡。
配置
FlowCollector
自定义资源,使spec.processor.addZone
参数设置为true
。示例配置示例如下:为可用区集合配置
FlowCollector
apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: # ... processor: addZone: true # ...
验证
刷新 Network Traffic 页面时,Overview、Traffic Flow 和 Topology 视图会显示有关可用区的新信息:
- 在 Overview 选项卡中,您可以将 Zones 视为可用 Scope。
-
在 Network Traffic
Traffic flows 中,Zone 可以在 SrcK8S_Zone 和 DstK8S_Zone 字段下查看。 - 在 Topology 视图中,您可以将 Zones 设置为 Scope 或 Group。
7.2.8. 使用全局规则过滤 eBPF 流数据
您可以使用全局规则配置 FlowCollector
来过滤 eBPF 流,以控制在 eBPF 流表中缓存的数据包流。
流程
-
在 Web 控制台中,进入到 Operators
Installed Operators。 - 在 Network Observability 的 Provided APIs 标题下,选择 Flow Collector。
- 选择 集群,然后选择 YAML 选项卡。
配置
FlowCollector
自定义资源,类似以下示例配置:例 7.1. 过滤到特定 Pod IP 端点的 Kubernetes 服务流量
apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: namespace: netobserv deploymentModel: Direct agent: type: eBPF ebpf: flowFilter: action: Accept 1 cidr: 172.210.150.1/24 2 protocol: SCTP direction: Ingress destPortRange: 80-100 peerIP: 10.10.10.10 enable: true 3
例 7.2. 请参阅流到集群外的任何地址
apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: namespace: netobserv deploymentModel: Direct agent: type: eBPF ebpf: flowFilter: action: Accept 1 cidr: 0.0.0.0/0 2 protocol: TCP direction: Egress sourcePort: 100 peerIP: 192.168.127.12 3 enable: true 4