搜索

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

download PDF

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

7.2.1. 使用流量流视图

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

流程

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

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

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

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

7.2.2.1. 管理列

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

7.2.2.2. 导出流量流数据

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

流程

  1. Export data
  2. 在弹出窗口中,您可以选择 Export all data 复选框,以导出所有数据,然后清除复选框以选择要导出的必填字段。
  3. 单击 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 :这是在指定间隔内的网络流量流。

流程

  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

    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 或切换。

7.2.4. 使用数据包丢弃

当网络流数据的一个或多个数据包无法访问其目的地时,会发生数据包丢失。您可以通过将 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

    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。

7.2.5. 使用 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

    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 标头的流。

7.2.6. 使用 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

    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

7.2.6.1. 使用直方图

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

7.2.7. 使用可用区

您可以配置 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
    # ...

验证

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

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

7.2.8. 使用全局规则过滤 eBPF 流数据

您可以使用全局规则配置 FlowCollector 来过滤 eBPF 流,以控制在 eBPF 流表中缓存的数据包流。

流程

  1. 在 Web 控制台中,进入到 Operators Installed Operators
  2. Network ObservabilityProvided APIs 标题下,选择 Flow Collector
  3. 选择 集群,然后选择 YAML 选项卡。
  4. 配置 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
    1
    必需的 action 参数描述了为流过滤规则执行的操作。可能的值有 AcceptReject
    2
    必需的 cidr 参数为流过滤规则提供 IP 地址和子网掩码,并支持 IPv4 和 IPv6 地址格式。如果要匹配任何 IP 地址,您可以使用 0.0.0.0/0(用于 IPv4),::/0(用于 IPv6)。
    3
    您必须将 spec.agent.ebpf.flowFilter.enable 设置为 true 才能启用此功能。

    例 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
    1
    您可以根据 flowFilter 规格中的条件 Accept 流。
    2
    cidr0.0.0.0/0 匹配任何 IP 地址。
    3
    peerIP 被配置为 192.168.127.12 后的流。
    4
    您必须将 spec.agent.ebpf.flowFilter.enable 设置为 true 才能启用此功能。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.