enable
作为管理员,您可以在 OpenShift Container Platform 控制台中观察网络流量,以进行详细的故障排除和分析。此功能可帮助您从流量流的不同图形表示中获得见解。有多个可用的视图可用于观察网络流量。
**概述**视图显示集群上网络流量流的整体聚合指标。作为管理员,您可以使用可用的显示选项监控统计信息。
作为管理员,您可以导航到**概述**视图以查看流量速率统计信息的图形表示。
导航到**观察** → **网络流量**。
在**网络流量**页面中,单击**概述**选项卡。
您可以通过单击菜单图标来配置每个流量速率数据的范围。
您可以使用高级选项自定义图形视图。要访问高级选项,请单击**显示高级选项**。您可以使用**显示选项**下拉菜单配置图形中的详细信息。可用的选项如下:
**范围:**选择查看网络流量流经的组件。您可以将范围设置为**节点**、**命名空间**、**所有者**、**区域**、**集群**或**资源**。**所有者**是资源的聚合。**资源**可以是 Pod、服务、节点(对于主机网络流量)或未知 IP 地址。默认值为**命名空间**。
**截断标签:**从下拉列表中选择所需的标签宽度。默认值为**M**。
您可以在**概述**视图中配置具有数据包丢失的网络流记录的图形表示。通过使用 eBPF 追踪点钩子,您可以深入了解 TCP、UDP、SCTP、ICMPv4 和 ICMPv6 协议的数据包丢失情况,这可能导致以下操作:
识别:查明发生数据包丢失的确切位置和网络路径。确定哪些特定设备、接口或路由更容易丢失数据包。
根本原因分析:检查 eBPF 程序收集的数据,以了解数据包丢失的原因。例如,它们是由于拥塞、缓冲区问题还是特定网络事件造成的?
性能优化:更清晰地了解数据包丢失后,您可以采取措施优化网络性能,例如调整缓冲区大小、重新配置路由路径或实施服务质量 (QoS) 措施。
启用数据包丢失跟踪后,默认情况下您可以在**概述**中看到以下面板:
前 X 个数据包丢失状态(与总和叠加)
前 X 个数据包丢失原因(与总和叠加)
前 X 个平均丢失数据包速率
前 X 个丢失数据包速率(与总和叠加)
其他数据包丢失面板可在**管理面板**中添加
前 X 个平均丢失字节速率
前 X 个丢失字节速率(与总和叠加)
网络可观测性检测到两种类型的丢包:主机丢包和 OVS 丢包。主机丢包以SKB_DROP
为前缀,OVS 丢包以OVS_DROP
为前缀。“流量流”表格的侧面板显示了丢弃的流,并提供了每个丢包类型的描述链接。主机丢包原因示例如下:
SKB_DROP_REASON_NO_SOCKET
:由于缺少套接字而导致数据包丢弃。
SKB_DROP_REASON_TCP_CSUM
:由于 TCP 校验和错误而导致数据包丢弃。
OVS 丢包原因示例如下:
OVS_DROP_LAST_ACTION
:由于隐式丢弃操作(例如,由于配置的网络策略)而导致 OVS 数据包丢弃。
OVS_DROP_IP_TTL
:由于 IP TTL 过期而导致 OVS 数据包丢弃。
有关启用和使用数据包丢弃跟踪的更多信息,请参阅本节的“其他资源”。
您可以在**概述**视图中配置域名系统 (DNS) 网络流跟踪的图形表示。使用具有扩展 Berkeley 数据包过滤器 (eBPF) 追踪点钩子的 DNS 跟踪可以服务于各种目的。
网络监控:深入了解 DNS 查询和响应,帮助网络管理员识别异常模式、潜在瓶颈或性能问题。
安全分析:检测可疑的 DNS 活动,例如恶意软件使用的域名生成算法 (DGA),或识别可能表明安全漏洞的未授权 DNS 解析。
故障排除:通过跟踪 DNS 解析步骤、跟踪延迟和识别错误配置来调试 DNS 相关问题。
默认情况下,启用 DNS 跟踪后,您可以在**概述**中看到以下非空指标,以环形图或折线图表示:
前 X 个 DNS 响应代码
前 X 个平均 DNS 延迟(含总计)
前 X 个 DNS 延迟的第 90 百分位数
其他 DNS 跟踪面板可以在**管理面板**中添加。
后 X 个最小 DNS 延迟
前 X 个最大 DNS 延迟
前 X 个 DNS 延迟的第 99 百分位数
此功能支持 IPv4 和 IPv6 UDP 和 TCP 协议。
有关启用和使用此视图的更多信息,请参阅本节的“其他资源”。
您可以使用 TCP 平滑往返时间 (sRTT) 来分析网络流延迟。您可以使用从fentry/tcp_rcv_established
eBPF 钩子点捕获的 RTT 从 TCP 套接字读取 sRTT,以帮助执行以下操作:
网络监控:深入了解 TCP 延迟,帮助网络管理员识别异常模式、潜在瓶颈或性能问题。
故障排除:通过跟踪延迟和识别错误配置来调试 TCP 相关问题。
默认情况下,启用 RTT 后,您可以在**概述**中看到以下 TCP RTT 指标:
前 X 个 TCP 往返时间的第 90 百分位数(含总计)
前 X 个平均 TCP 往返时间(含总计)
后 X 个最小 TCP 往返时间(含总计)
其他 RTT 面板可以在**管理面板**中添加。
前 X 个最大 TCP 往返时间(含总计)
前 X 个 TCP 往返时间的第 99 百分位数(含总计)
有关启用和使用此视图的更多信息,请参阅本节的“其他资源”。
您可以使用基于规则的过滤来控制缓存在 eBPF 流表中的数据包数量。例如,过滤器可以指定只记录来自端口 100 的数据包。然后,只有与过滤器匹配的数据包才会被缓存,其余数据包不会被缓存。
CIDR 表示法通过将基本 IP 地址与前缀长度组合来有效地表示 IP 地址范围。对于入站和出站流量,首先使用源 IP 地址来匹配使用 CIDR 表示法配置的过滤器规则。如果匹配,则继续进行过滤。如果没有匹配,则使用目标 IP 地址来匹配使用 CIDR 表示法配置的过滤器规则。
匹配源 IP 或目标 IP CIDR 后,您可以使用peerIP
精确定位特定端点以区分数据包的目标 IP 地址。根据配置的操作,流数据要么缓存在 eBPF 流表中,要么不缓存。
启用此选项后,**eBPF 代理统计信息**的**Netobserv/Health**仪表盘现在具有**已过滤流速率**视图。此外,在**观察**→**指标**中,您可以查询netobserv_agent_filtered_flows_total
以使用**FlowFilterAcceptCounter**、**FlowFilterNoMatchCounter**或**FlowFilterRecjectCounter**中的原因来观察指标。
流过滤器规则由必需参数和可选参数组成。
参数 | 描述 |
---|---|
|
将 |
|
为流过滤器规则提供 IP 地址和 CIDR 掩码。支持 IPv4 和 IPv6 地址格式。如果要匹配任何 IP,则可以对 IPv4 使用 |
|
描述对流过滤器规则采取的操作。可能的值为
|
参数 | 描述 |
---|---|
|
定义流过滤器规则的方向。可能的值为 |
|
定义流过滤器规则的协议。可能的值为 |
|
定义用于过滤流的 TCP 标志。可能的值为 |
|
定义用于过滤流的端口。它可以用于源端口或目标端口。要过滤单个端口,请将单个端口设置为整数值。例如 |
|
定义用于过滤流的源端口。要过滤单个端口,请设置单个端口作为整数值,例如 |
|
destPorts 定义用于过滤流的目标端口。要过滤单个端口,请设置单个端口作为整数值,例如 |
|
定义用于过滤流的 ICMP 类型。 |
|
定义用于过滤流的 ICMP 代码。 |
|
定义用于过滤流的 IP 地址,例如: |
流量流视图以表格形式显示网络流的数据和流量量。作为管理员,您可以使用流量流表监控应用程序间的流量量。
作为管理员,您可以将属于同一会话的网络流分组。会话定义为由其 IP 地址、端口和协议标识的对等方分组,从而产生唯一的会话 ID。您可以在 Web 控制台中查询会话事件。这些事件在 Web 控制台中表示如下:
会话开始:当连接启动或拦截 TCP 标志时,会发生此事件。
会话心跳:在连接处于活动状态时,此事件会在FlowCollector
spec.processor.conversationHeartbeatInterval
参数中定义的每个指定间隔发生。
会话结束:当达到FlowCollector
spec.processor.conversationEndTimeout
参数或拦截 TCP 标志时,会发生此事件。
流:这是在指定间隔内发生的网络流量流。
在 Web 控制台中,导航到操作员→已安装的操作员。
在NetObserv 操作员的提供的 API标题下,选择流收集器。
选择集群,然后选择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 时,只导出流事件。如果将其值设置为All ,则会导出并显示网络流量页面中的会话和流事件。要仅关注会话事件,您可以指定Conversations ,它导出会话开始、会话心跳和会话结束事件;或者EndedConversations 只导出会话结束事件。对于All ,存储要求最高,对于EndedConversations ,存储要求最低。 |
2 | 会话结束事件表示达到conversationEndTimeout 或拦截 TCP 标志的点。 |
3 | 会话心跳事件表示网络连接处于活动状态时FlowCollector conversationHeartbeatInterval 参数中定义的每个指定间隔。 |
如果更新 |
刷新网络流量页面上的流量流选项卡。注意,有两个新列,事件/类型和会话 ID。当流是选定的查询选项时,所有事件/类型字段均为流
。
选择查询选项并选择日志类型,会话。现在事件/类型显示所有所需的会话事件。
接下来,您可以根据特定会话 ID 进行过滤,或从侧面板切换会话和流日志类型选项。
当一个或多个网络流数据的包未能到达其目的地时,就会发生数据包丢失。您可以通过将FlowCollector
编辑为以下 YAML 示例中的规范来跟踪这些丢失。
启用此功能会增加 CPU 和内存使用率。 |
在 Web 控制台中,导航到操作员→已安装的操作员。
在NetObserv 操作员的提供的 API标题下,选择流收集器。
选择集群,然后选择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)
1 | 您可以通过在spec.agent.ebpf.features 规范列表中列出PacketDrop 参数来开始报告每个网络流的数据包丢失。 |
2 | 对于数据包丢失跟踪,spec.agent.ebpf.privileged 规范值必须为true 。 |
刷新网络流量页面时,概述、流量流和拓扑视图会显示有关数据包丢失的新信息。
在**管理面板**中选择新的选项,以选择在**概览**中显示哪些数据包丢失的图形可视化。
在**管理列**中选择新的选项,以选择在**流量流**表中显示哪些数据包丢失信息。
在**流量流**视图中,您还可以展开侧面板以查看有关数据包丢失的更多信息。主机丢失以SKB_DROP
为前缀,OVS丢失以OVS_DROP
为前缀。
在**拓扑**视图中,存在丢失的地方会显示红线。
使用DNS跟踪,您可以监控网络、进行安全分析和排查DNS问题。您可以通过将FlowCollector
编辑为以下YAML示例中的规范来跟踪DNS。
启用此功能后,在eBPF代理中会观察到CPU和内存使用率的增加。 |
在 Web 控制台中,导航到操作员→已安装的操作员。
在**网络可观察性**的**提供的API**标题下,选择**Flow Collector**。
选择集群,然后选择YAML选项卡。
配置FlowCollector
自定义资源。示例配置如下:
FlowCollector
以进行DNS跟踪apiVersion: flows.netobserv.io/v1beta2
kind: FlowCollector
metadata:
name: cluster
spec:
namespace: netobserv
agent:
type: eBPF
ebpf:
features:
- DNSTracking (1)
sampling: 1 (2)
1 | 您可以设置spec.agent.ebpf.features 参数列表以启用Web控制台中每个网络流的DNS跟踪。 |
2 | 您可以将sampling 设置为1 ,以获得更准确的指标并捕获**DNS延迟**。对于大于1的sampling 值,您可以观察具有**DNS响应代码**和**DNS ID**的流,并且不太可能观察到**DNS延迟**。 |
刷新**网络流量**页面后,您可以选择在**概览**和**流量流**视图中查看新的DNS表示,以及您可以应用的新过滤器。
在**管理面板**中选择新的DNS选项,以在**概览**中显示图形可视化和DNS指标。
在**管理列**中选择新的选项,以将DNS列添加到**流量流**视图。
根据特定的DNS指标(例如**DNS ID**、**DNS错误**、**DNS延迟**和**DNS响应代码**)进行筛选,并从侧面板查看更多信息。**DNS延迟**和**DNS响应代码**列默认显示。
TCP三次握手数据包没有DNS报头。没有DNS报头的TCP协议流在流量流数据中显示为**DNS延迟**、**ID**和**响应代码**值为“n/a”。您可以使用**通用**过滤器“DNSError”等于“0”过滤掉流量数据,以仅查看具有DNS报头的流。 |
您可以通过将FlowCollector
编辑为以下YAML示例中的规范来跟踪RTT。
在 Web 控制台中,导航到操作员→已安装的操作员。
在**NetObserv Operator**的**提供的API**标题下,选择**Flow Collector**。
选择集群,然后选择YAML选项卡。
配置FlowCollector
自定义资源以进行RTT跟踪,例如:
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网络流。 |
刷新**网络流量**页面后,**概览**、**流量流**和**拓扑**视图将显示有关RTT的新信息。
在**概览**中,在**管理面板**中选择新的选项,以选择要显示哪些RTT图形可视化。
在**流量流**表中,可以看到**流RTT**列,您可以在**管理列**中管理显示。
在**流量流**视图中,您还可以展开侧面板以查看有关RTT的更多信息。
单击**通用**过滤器→**协议**。
根据**TCP**、**入口**方向过滤网络流数据,并查找大于10,000,000纳秒(10毫秒)的**FlowRTT**值。
删除**协议**过滤器。
在**通用**过滤器中过滤大于0的**流RTT**值。
在**拓扑**视图中,单击“显示选项”下拉菜单。然后在**边标签**下拉列表中单击**RTT**。
您可以配置FlowCollector
以收集有关集群可用区的信息。这允许您使用应用于节点的topology.kubernetes.io/zone
标签值来丰富网络流数据。
在Web控制台中,转到**运算符**→**已安装的运算符**。
在NetObserv 操作员的提供的 API标题下,选择流收集器。
选择集群,然后选择YAML选项卡。
配置FlowCollector
自定义资源,以便将spec.processor.addZone
参数设置为true
。示例配置如下:
FlowCollector
以收集可用区信息apiVersion: flows.netobserv.io/v1beta2
kind: FlowCollector
metadata:
name: cluster
spec:
# ...
processor:
addZone: true
# ...
刷新**网络流量**页面后,**概览**、**流量流**和**拓扑**视图将显示有关可用区的新信息。
在**概览**选项卡中,您可以看到**可用区**作为可用的**范围**。
在**网络流量**→**流量流**中,可以在SrcK8S_Zone和DstK8S_Zone字段下查看**可用区**。
在**拓扑**视图中,您可以将**可用区**设置为**范围**或**组**。
您可以配置FlowCollector
以使用全局规则过滤eBPF流,以控制缓存在eBPF流表中的数据包的流量。
在 Web 控制台中,导航到操作员→已安装的操作员。
在**网络可观察性**的**提供的API**标题下,选择**Flow Collector**。
选择**集群**,然后选择**YAML**选项卡。
配置FlowCollector
自定义资源,类似于以下示例配置:
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)
1 | 必需的action 参数描述了对流过滤器规则采取的操作。可能的值为Accept 或Reject 。 |
2 | 必需的cidr 参数为流过滤器规则提供IP地址和CIDR掩码,并支持IPv4和IPv6地址格式。如果要匹配任何IP地址,则可以使用IPv4的0.0.0.0/0 或IPv6的::/0 。 |
3 | 必须将spec.agent.ebpf.flowFilter.enable 设置为true 才能启用此功能。 |
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)
1 | 您可以根据flowFilter 规范中的条件Accept 流。 |
2 | cidr 值为0.0.0.0/0 与任何IP地址匹配。 |
3 | 在peerIP 配置为192.168.127.12 后查看流。 |
4 | 必须将spec.agent.ebpf.flowFilter.enable 设置为true 才能启用此功能。 |
**拓扑**视图提供网络流和流量量的图形表示。作为管理员,您可以使用**拓扑**视图监控应用程序中的流量数据。
作为管理员,您可以导航到**拓扑**视图以查看组件的详细信息和指标。
导航到**观察** → **网络流量**。
在**网络流量**页面中,单击**拓扑**选项卡。
您可以单击**拓扑**中的每个组件以查看组件的详细信息和指标。
您可以使用显示高级选项来自定义和导出视图。高级选项视图具有以下功能:
视图内查找:在视图中搜索所需的组件。
显示选项:配置以下选项:
边标签:显示指定的度量值作为边标签。默认显示平均速率(单位:字节)。
范围:选择网络流量流经的组件范围。默认值为命名空间。
分组:通过对组件分组来增强对所有权的理解。默认值为无。
布局:选择图形表示的布局。默认值为ColaNoForce。
显示:选择需要显示的详细信息。默认情况下,所有选项都已选中。可用的选项包括:边、边标签和徽章。
截断标签:从下拉列表中选择所需的标签宽度。默认值为M。
折叠分组:展开或折叠分组。默认情况下,分组已展开。如果分组的值为无,则此选项被禁用。
默认情况下,“网络流量”页面基于在FlowCollector
实例中配置的默认过滤器显示集群中的流量数据。您可以使用过滤器选项通过更改预设过滤器来观察所需的数据。
您可以使用查询选项优化搜索结果,如下所示:
日志类型:可用的选项会话和流提供按日志类型查询流的能力,例如流日志、新会话、已完成会话和心跳(这是对长时间会话的更新的定期记录)。会话是相同对等体之间流的聚合。
匹配过滤器:您可以确定高级过滤器中选择的不同过滤器参数之间的关系。可用的选项是全部匹配和任意匹配。全部匹配提供匹配所有值的的结果,而任意匹配提供匹配任何输入值的的结果。默认值为全部匹配。
数据源:您可以选择用于查询的数据源:Loki、Prometheus或自动。当使用 Prometheus 作为数据源而不是 Loki 时,可以实现显著的性能改进,但 Prometheus 支持的过滤器和聚合集有限。默认数据源为自动,它在支持的查询中使用 Prometheus,如果查询不支持 Prometheus,则使用 Loki。
丢包过滤器:您可以使用以下查询选项查看不同级别的丢包:
完全丢包显示完全丢包的流记录。
包含丢包显示包含丢包但可以发送的流记录。
无丢包显示包含已发送数据包的记录。
全部显示上述所有记录。
限制:内部后端查询的数据限制。根据匹配和过滤器设置,流量数据将在指定的限制内显示。
快速过滤器下拉菜单中的默认值在FlowCollector
配置中定义。您可以从控制台修改这些选项。
您可以通过从下拉列表中选择要过滤的参数来设置高级过滤器,通用、源或目标。流数据将根据所选项进行过滤。要启用或禁用应用的过滤器,您可以点击过滤器选项下方的应用过滤器。
您可以切换 单向 和
双向 过滤。
单向 过滤器根据您的过滤器选择仅显示源和目标流量。您可以使用交换来更改源和目标流量的方向视图。
双向 过滤器包含具有源和目标过滤器的返回流量。网络流量的方向流在流量流表中的方向列中显示为节点间流量的
Ingress
或Egress
,以及单节点内流量的Inner
。
您可以单击重置默认值以删除现有过滤器,并应用在FlowCollector
配置中定义的过滤器。
要了解指定文本值的规则,请单击了解更多。 |
或者,您可以在命名空间、服务、路由、节点和工作负载页面网络流量选项卡中访问流量流数据,这些页面提供相应聚合的过滤数据。