8.2. 从流量流视图观察网络流量


流量流 视图显示网络流的数据以及表中的流量数量。作为管理员,您可以使用流量流表监控应用程序间的流量数量。

8.2.1. 使用流量流视图

作为管理员,您可以进入 流量流 表来查看网络流信息。

流程

  1. 进入到 Observe Network Traffic
  2. Network Traffic 页面中,点 流量流 选项卡。

您可以点击每行来获取对应的流信息。

8.2.2. 为流量流视图配置高级选项

您可以使用 Show advanced options 自定义和导出视图。您可以使用 Display options 下拉菜单设置行大小。默认值为 Normal

8.2.2.1. 管理列

您可以选择显示所需的列,并对它们进行重新排序。若要管理列,可点 Manage 列

8.2.2.2. 导出流量流数据

您可以从流量流视图导出数据。

流程

  1. Export data
  2. 在弹出窗口中,您可以选择 Export all data 复选框,以导出所有数据,然后清除复选框以选择要导出的必填字段。
  3. 单击 Export

8.2.3. 使用 FlowCollector 自定义资源配置 IPsec

在 OpenShift Container Platform 中,默认禁用 IPsec。您可以按照"配置 IPsec 加密"中的说明启用 IPsec。

前提条件

  • 您已在 OpenShift Container Platform 上启用 IPsec 加密。

流程

  1. 在 Web 控制台中,进入到 Operators Installed Operators
  2. NetObserv OperatorProvided APIs 标题下,选择 Flow Collector
  3. 选择 cluster,然后选择 YAML 选项卡。
  4. 为 IPsec 配置 FlowCollector 自定义资源:

    IPsec 的 FlowCollector 配置示例

    apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      namespace: netobserv
      agent:
        type: eBPF
        ebpf:
          features:
          - "IPSec"
    Copy to Clipboard Toggle word wrap

验证

启用 IPsec 时:

  • Network Observability Traffic flows 视图中会显示一个名为 IPsec Status 的新列,以显示流是否已成功 IPsec 加密,或者在加密/解密过程中出现错误。
  • 显示生成加密流量百分比的新仪表板。

8.2.4. 使用对话跟踪

作为管理员,您可以对属于同一对话的网络流进行分组。对话被定义为一组由 IP 地址、端口和协议标识的对等点,从而产生唯一的 Conversation Id。您可以在 web 控制台中查询对话事件。这些事件在 web 控制台中表示,如下所示:

  • Conversation start :连接启动或 TCP 标记被截获时发生此事件
  • Conversation tick:此事件在连接处于活跃状态时根据 FlowCollector spec.processor.conversationHeartbeatInterval 参数中定义的每个指定间隔发生。
  • Conversation end :当达到 FlowCollector spec.processor.conversationEndTimeout 参数或 TCP 标志被截获时,会发生此事件。
  • Flow :这是在指定间隔内的网络流量流。

流程

  1. 在 Web 控制台中,进入到 Operators Installed Operators
  2. NetObserv OperatorProvided APIs 标题下,选择 Flow Collector
  3. 选择 cluster,然后选择 YAML 选项卡。
  4. 配置 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
    Copy to Clipboard Toggle word wrap

    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 后终止对话。

  5. 刷新 Traffic flows 标签页中的 Network Traffic。通知请注意,有两个新列: Event/TypeConversation Id。当 Flow 是所选查询选项时,所有 Event/Type 字段都是 Flow
  6. 选择 Query Options 并选择 Log Type,Conversation。现在,Event/Type 会显示所有所需的对话事件。
  7. 接下来,您可以过滤侧面板中的 Conversation 和 Flow 日志类型选项的特定 对话 ID 或切换。

8.2.5. 使用数据包丢弃

当网络流数据的一个或多个数据包无法访问其目的地时,会发生数据包丢失。您可以通过将 FlowCollector 编辑到以下 YAML 示例中的规格来跟踪这些丢弃。

重要

启用此功能时,CPU 和内存用量会增加。

流程

  1. 在 Web 控制台中,进入到 Operators Installed Operators
  2. NetObserv OperatorProvided APIs 标题下,选择 Flow Collector
  3. 选择 集群,然后选择 YAML 选项卡。
  4. 为数据包丢弃配置 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
    Copy to Clipboard Toggle word wrap

    1
    您可以通过列出 spec.agent.ebpf.features 规格列表中的 PacketDrop 参数开始报告每个网络流的数据包丢弃。
    2
    对于数据包丢弃跟踪,spec.agent.ebpf.privileged 规格值必须是 true

验证

  • 刷新 Network Traffic 页面时,OverviewTraffic FlowTopology 视图会显示有关数据包丢弃的新信息:

    1. Manage 面板中选择新选择,以选择要在 Overview 中显示的数据包丢弃的图形视觉化。
    2. Manage 列中选择新选择,以选择要在流量流表中显示哪些数据包丢弃信息。

      1. 流量流视图 中,您还可以展开侧面板来查看有关数据包丢弃的更多信息。主机丢弃的带有 SKB_DROP 前缀,OVS drops 带有 OVS_DROP 前缀。
    3. Topology 视图中,会显示红色的行,其中出现 drops。

8.2.6. 使用 DNS 跟踪

使用 DNS 跟踪,您可以监控网络、进行安全分析并对 DNS 问题进行故障排除。您可以通过将 FlowCollector 编辑到以下 YAML 示例中的规格来跟踪 DNS。

重要

启用这个功能时,在 eBPF 代理中观察到 CPU 和内存用量。

流程

  1. 在 Web 控制台中,进入到 Operators Installed Operators
  2. Network ObservabilityProvided APIs 标题下,选择 Flow Collector
  3. 选择 cluster,然后选择 YAML 选项卡。
  4. 配置 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
    Copy to Clipboard Toggle word wrap

    1
    您可以设置 spec.agent.ebpf.features 参数列表,以便在 web 控制台中启用每个网络流的 DNS 跟踪。
    2
    您可以将 sampling 设置为 1,以获得更准确的指标并捕获 DNS 延迟。如果 sampling 的值大于 1,您可以使用 DNS Response CodeDNS Id 观察流,且不太可能观察 DNS 延迟
  5. 刷新 Network Traffic 页面时,您可以选择在 OverviewTraffic Flow 视图和可以应用的新过滤器中查看新的 DNS 表示。

    1. Manage 面板中选择新的 DNS 选项,在 Overview 中显示图形视觉化和 DNS 指标。
    2. Manage 列中选择新选择,将 DNS 列添加到 流量流视图 中。
    3. 过滤特定 DNS 指标,如 DNS IdDNS Error DNS LatencyDNS Response Code,并在侧面面板中查看更多信息。默认情况下会显示 DNS LatencyDNS Response Code 列。
注意

TCP 握手数据包没有 DNS 标头。在 DNS LatencyID响应代码 值 "n/a" 的流量流中会显示没有 DNS 标头的 TCP 协议流。您可以过滤掉流数据,以只查看使用通用过滤器 "DNSError" 等于 "0" 的 DNS 标头的流。

8.2.7. 使用 RTT 追踪

您可以通过将 FlowCollector 编辑到以下 YAML 示例中的规格来跟踪 RTT。

流程

  1. 在 Web 控制台中,进入到 Operators Installed Operators
  2. NetObserv OperatorProvided APIs 标题中,选择 Flow Collector
  3. 选择 集群,然后选择 YAML 选项卡。
  4. 为 RTT 追踪配置 FlowCollector 自定义资源,例如:

    FlowCollector 配置示例

    apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      namespace: netobserv
      agent:
        type: eBPF
        ebpf:
          features:
           - FlowRTT   
    1
    Copy to Clipboard Toggle word wrap

    1
    您可以通过列出 spec.agent.ebpf.features 规格列表中的 FlowRTT 参数来启动追踪 RTT 网络流。

验证

刷新 Network Traffic 页面时,OverviewTraffic FlowTopology 视图会显示有关 RTT 的新信息:

  1. Overview 中,在 Manage 面板中选择新选择,以选择要显示的 RTT 的图形视觉化。
  2. Traffic flows 表中,可以看到 Flow RTT 列,您可以在 Manage 列中管理显示。
  3. 流量流视图 中,您还可以展开侧面板来查看有关 RTT 的更多信息。

    过滤示例

    1. Common 过滤 Protocol
    2. 根据 TCPIngress 方向过滤网络流数据,并查找大于 10,000,000 纳秒(10ms)的 FlowRTT 值。
    3. 删除 Protocol 过滤。
    4. Common 过滤器中过滤大于 0 的 Flow RTT 值。
  4. Topology 视图中,点 Display 选项下拉菜单。然后点 edge labels 下拉列表中的 RTT

8.2.8. 使用 eBPF Manager Operator

eBPF Manager Operator 通过管理所有 eBPF 程序来减少攻击面,并确保合规性、安全性和冲突防止。网络可观察性可以使用 eBPF Manager Operator 来加载 hook。因此,您不再需要为 eBPF Agent 提供特权模式或其他 Linux 功能,如 CAP_BPFCAP_PERFMON。只有 64 位 AMD 架构上才支持带有网络可观察性的 eBPF Manager Operator。

重要

带有网络可观察性的 eBPF Manager Operator 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

流程

  1. 在 Web 控制台中,进入到 Operators Operator Hub
  2. 安装 eBPF Manager
  3. 检查 bpfman 命名空间中的 Workloads Pods,以确保它们都已启动并运行。
  4. 配置 FlowCollector 自定义资源以使用 eBPF Manager Operator:

    FlowCollector 配置示例

    apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      agent:
        ebpf:
          features:
            - EbpfManager
    Copy to Clipboard Toggle word wrap

验证

  1. 在 Web 控制台中,进入到 Operators Installed Operators
  2. eBPF Manager Operator All instances 选项卡。

    对于每个节点,验证名为 netobservBpfApplicationBpfProgram 对象的对,一个用于流量控制(TCx) ingress,另一个用于 TCx egress。如果启用其他 eBPF Agent 功能,可能会有更多对象。

8.2.8.1. 使用直方图

您可以点 Show histogram 来显示工具栏视图,以使用栏图的形式可视化流历史记录。histogram 显示一段时间内的日志数量。您可以选择直方图的一部分在下面的工具栏中过滤网络流数据。

8.2.9. 使用可用区

您可以配置 FlowCollector 以收集有关集群可用区的信息。这可让您使用应用到节点的 topology.kubernetes.io/zone 标签值增强网络流数据。

流程

  1. 在 Web 控制台中,进入 Operators Installed Operators
  2. NetObserv OperatorProvided APIs 标题下,选择 Flow Collector
  3. 选择 cluster,然后选择 YAML 选项卡。
  4. 配置 FlowCollector 自定义资源,使 spec.processor.addZone 参数设置为 true。示例配置示例如下:

    为可用区集合配置 FlowCollector

    apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
    # ...
     processor:
       addZone: true
    # ...
    Copy to Clipboard Toggle word wrap

验证

刷新 Network Traffic 页面时,OverviewTraffic FlowTopology 视图会显示有关可用区的新信息:

  1. Overview 选项卡中,您可以将 Zones 视为可用 Scope
  2. Network Traffic Traffic flows 中,Zone 可以在 SrcK8S_Zone 和 DstK8S_Zone 字段下查看。
  3. Topology 视图中,您可以将 Zones 设置为 ScopeGroup

8.2.10. 使用多个规则过滤 eBPF 流数据

您可以配置 FlowCollector 自定义资源,使用多个规则过滤 eBPF 流,以控制在 eBPF 流表中缓存的数据包流。

重要
  • 您不能在过滤规则中使用重复的无类别域间路由(CIDR)。
  • 当 IP 地址与多个过滤器规则匹配时,具有最具体 CIDR 前缀(前缀最长)的规则具有优先权。

流程

  1. 在 Web 控制台中,进入到 Operators Installed Operators
  2. Network ObservabilityProvided APIs 标题下,选择 Flow Collector
  3. 选择 集群,然后选择 YAML 选项卡。
  4. 配置 FlowCollector 自定义资源,类似以下示例配置:

示例 YAML 示例,以对所有北流量进行抽样,以及 1:50 个东部流量

默认情况下,所有其他流都会被拒绝。

apiVersion: flows.netobserv.io/v1beta2
kind: FlowCollector
metadata:
  name: cluster
spec:
  namespace: netobserv
  deploymentModel: Direct
  agent:
    type: eBPF
    ebpf:
      flowFilter:
        enable: true 
1

        rules:
         - action: Accept 
2

           cidr: 0.0.0.0/0 
3

           sampling: 1 
4

         - action: Accept
           cidr: 10.128.0.0/14
           peerCIDR: 10.128.0.0/14 
5

         - action: Accept
           cidr: 172.30.0.0/16
           peerCIDR: 10.128.0.0/14
           sampling: 50
Copy to Clipboard Toggle word wrap
1
要启用 eBPF 流过滤,将 spec.agent.ebpf.flowFilter.enable 设置为 true
2
要为流过滤器规则定义操作,请设置所需的 action 参数。有效值为 AcceptReject
3
要为流过滤器规则定义 IP 地址和 CIDR 掩码,请设置所需的 cidr 参数。这个参数支持 IPv4 和 IPv6 地址格式。若要匹配任何 IP 地址,请将 0.0.0.0/0 用于 IPv4,对于 IPv6,则使用 '::/0
4
要为匹配流定义抽样率并覆盖全局抽样设置 spec.agent.ebpf.sampling,请设置 sampling 参数。
5
要根据 Peer IP CIDR 过滤流,请设置 peerCIDR 参数。

使用数据包丢弃过滤流的 YAML 示例

默认情况下,所有其他流都会被拒绝。

apiVersion: flows.netobserv.io/v1beta2
kind: FlowCollector
metadata:
  name: cluster
spec:
  namespace: netobserv
  deploymentModel: Direct
  agent:
    type: eBPF
    ebpf:
      privileged: true 
1

      features:
        - PacketDrop 
2

      flowFilter:
        enable: true 
3

        rules:
        - action: Accept 
4

          cidr: 172.30.0.0/16
          pktDrops: true 
5
Copy to Clipboard Toggle word wrap
1
要启用数据包丢弃,将 spec.agent.ebpf.privileged 设置为 true
2
要报告每个网络流的数据包丢弃,请将 PacketDrop 值添加到 spec.agent.ebpf.features 列表中。
3
要启用 eBPF 流过滤,将 spec.agent.ebpf.flowFilter.enable 设置为 true
4
要为流过滤器规则定义操作,请设置所需的 action 参数。有效值为 AcceptReject
5
要过滤包含丢弃的流,请将 pktDrops 设置为 true

8.2.11. 端点转换(xlat)

您可以使用 Network Observability 和扩展的 Berkeley Packet Filter (eBPF)了解集成视图中的端点服务流量。通常,当流量流通过服务、egressIP 或负载均衡器时,流量流信息会被抽象到其中一个可用 pod。如果您尝试获取有关流量的信息,则只能查看服务相关信息,如服务 IP 和端口,而不获取有关服务请求的特定 pod 的信息。通常,服务流量和虚拟服务端点的信息都捕获为两个独立的流,这导致故障排除变得复杂。

要解决这个问题,端点 xlat 可通过以下方式帮助:

  • 捕获内核级别的网络流,这会影响性能。
  • 使用转换的端点信息增强网络流,仅显示服务,以及特定的后端 pod,以便您可以查看提供请求的 pod。

在处理网络数据包时,eBPF hook 会增强流日志,其中包含有关转换端点的元数据,其中包括您可以在一行中的 Network Traffic 页中查看以下信息:

8.2.12. 使用端点转换(xlat)

您可以使用 Network Observability 和 eBPF 来增强来自带有转换端点信息的 Kubernetes 服务网络流,了解端点服务流量。

流程

  1. 在 Web 控制台中,进入到 Operators Installed Operators
  2. NetObserv OperatorProvided APIs 标题中,选择 Flow Collector
  3. 选择 集群,然后选择 YAML 选项卡。
  4. PacketTranslation 配置 FlowCollector 自定义资源,例如:

    FlowCollector 配置示例

    apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      namespace: netobserv
      agent:
        type: eBPF
        ebpf:
          features:
           - PacketTranslation   
    1
    Copy to Clipboard Toggle word wrap

    1
    您可以通过列出 spec.agent.ebpf.features 规格列表中的 PacketTranslation 参数来启动带有转换数据包信息的增强网络流。

过滤示例

当您刷新 Network Traffic 页时,您可以过滤以了解转换数据包的信息:

  1. 根据 Destination kind: Service 过滤网络流数据。
  2. 您可以查看 xlat 列,它区分显示转换的信息的位置,以及以下默认列:

    • Xlat Zone ID
    • Xlat Src Kubernetes 对象
    • Xlat Dst Kubernetes 对象

您可以在 Manage 列中管理其他 xlat 列。

8.2.13. 使用用户定义的网络

您可以在 Network Observability 资源中启用用户定义的网络(UDN)。以下示例显示了 FlowCollector 资源的配置。

前提条件

  • 您已在 Red Hat OpenShift Networking 中配置了 UDN。如需更多信息,请参阅"使用 CLI 创建 UserDefinedNetwork"或"使用 Web 控制台创建 UserDefinedNetwork"。

流程

  1. 运行以下命令来编辑 Network Observability FlowCollector 资源:

    $ oc edit flowcollector
    Copy to Clipboard Toggle word wrap
  2. 配置 FlowCollector 资源的 ebpf 部分:

    apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      agent:
        ebpf:
          sampling: 1  
    1
    
          privileged: true
          features:
          - UDNMapping
    Copy to Clipboard Toggle word wrap
    1
    建议查看所有流。

验证

  • 刷新 Network Traffic 页,在 Traffic FlowTopology 视图中查看更新的 UDN 信息:

    • Network Traffic > Traffic flows 中,您可以在 SrcK8S_NetworkNameDstK8S_NetworkName 字段中查看 UDNs。
    • Topology 视图中,您可以将 Network 设置为 ScopeGroup

8.2.14. 查看网络事件

重要

OVN-Kubernetes 网络事件跟踪只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

您可以编辑 FlowCollector 来查看网络流量事件的信息,如以下资源丢弃或允许的网络流:

  • NetworkPolicy
  • AdminNetworkPolicy
  • BaselineNetworkPolicy
  • EgressFirewall
  • UserDefinedNetwork 隔离
  • 多播 ACL

先决条件

  • 您必须通过在名为 clusterFeatureGate 自定义资源(CR)中设置 TechPreviewNoUpgrade 功能集来启用 OVNObservability。如需更多信息,请参阅"使用 CLI 启用功能集"和"使用 CLI 检查 OVN-Kubernetes 网络流量"。
  • 您至少创建了以下网络 API 之一: NetworkPolicyAdminNetworkPolicyBaselineNetworkPolicyUserDefinedNetwork 隔离、多播或 EgressFirewall

流程

  1. 在 Web 控制台中,进入到 Operators Installed Operators
  2. NetObserv OperatorProvided APIs 标题中,选择 Flow Collector
  3. 选择 集群,然后选择 YAML 选项卡。
  4. 配置 FlowCollector CR 以启用查看 NetworkEvents,例如:

    FlowCollector 配置示例

    apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
       agent:
        type: eBPF
        ebpf:
      #   sampling: 1       
    1
    
          privileged: true  
    2
    
          features:
           - "NetworkEvents"
    Copy to Clipboard Toggle word wrap

    1
    可选: sampling 参数设置为 1,以便捕获所有网络事件。如果使用抽样 1 会消耗太多资源,请将 sampling 设置为更适合您的需要的内容。
    2
    privileged 参数设置为 true,因为 OVN observability 库需要访问本地 Open vSwitch (OVS)套接字和 OpenShift Virtual Network (OVN)数据库。

验证

  1. 进入 Network Traffic 视图并选择 Traffic flows 表。
  2. 您应该会看到新的列 Network Events,您可以在其中查看您启用以下网络 API 的影响信息: NetworkPolicyAdminNetworkPolicyBaselineNetworkPolicyUserDefinedNetwork 隔离、多播或出口防火墙。

您可以在此列中看到的事件类型示例如下:

网络事件输出示例

<Dropped_or_Allowed> by <network_event_and_event_name>, direction <Ingress_or_Egress>
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat