本节介绍了如何使用 CLI/UI 捕获虚拟服务流量。

使用 UI 捕获虚拟服务流量

  1. 导航到运维 > 流量捕获捕获配置部分会显示为当前捕获定义的参数。

  2. 单击铅笔图标以启动新捕获。



流量捕获弹出窗口中,根据需要选择以下项:

字段名称

操作

选择虚拟服务

选择要为其捕获流量的虚拟服务。此捕获包括客户端到 SE 和 SE 到服务器端的连接。将在处理该虚拟服务流量的所有 SE 上捕获流量。

要捕获的筛选器

所有流量 - 捕获所有流量。

选择客户端 IP、IP 范围、子网掩码 - 仅捕获指定 IP 地址、IP 地址列表或范围,或者子网的流量。IP 地址可以是客户端地址或服务器地址。

注:
  • 要指定列表,请在各个地址之间使用空格。例如:10.1.1.1 10.1.1.99 192.168.8.200。

  • 要指定范围,请使用以下格式:10.1.1.1-10.1.1.255。

  • 要指定子网,请使用以下格式:10.1.1.1/24。

每个内核捕获的数据包数量

指定要在内核中捕获的最大数据包数。

持续时间

指定捕获运行的时间(以分钟为单位)。

数据包大小

指定要捕获的数据包大小(以字节为单位)。这类似于 TCPdump 中的 snaplen 选项。要捕获整个数据包,请输入 0

高级设置部分下,选择以下选项之一:

  • 运行状况监控器和数据

  • 仅运行状况监控器

  • 仅数据

控制运行状况监控器流量的捕获。

捕获会话密钥

启用会话密钥捕获。

  • 单击开始捕获以查看捕获进度。

注:

有关启用会话密钥捕获的更多信息,请参阅调试虚拟服务时启用会话密钥捕获

完成的捕获

完成捕获时,控制器会对来自多个 SE 的数据进行整理,并将数据格式化为 PCAP 文件。然后,这些捕获会显示在完成的捕获部分下。该部分将以表格形式呈现,其中包含日期虚拟服务名称捕获的数据包大小,这些信息可采用 pcap 格式下载来导出。捕获文件可使用任何标准的流量捕获实用程序进行查看。

使用 CLI 捕获虚拟服务流量

要使用 NSX Advanced Load Balancer CLI 捕获数据包,请登录到 Shell 提示符,然后进入所需虚拟服务的数据包捕获子模式。

debug virtualservice Test-virtual service
Updating an existing object. Currently, the object is:
+-------+-----------------------+
| Field |        Value          |
+-------+-----------------------+
| uuid  | virtualservice-0-1    |
| name  | Test-virtual service  |
+-------+-----------------------+
下面列出了用于进行数据包捕获的参数。默认情况下,将在选定虚拟服务的上下文中执行捕获。此外,还会在处理虚拟服务流量的所有 NSX Advanced Load Balancer SE 上执行捕获,且会捕获来自 SE 客户端和服务器端的数据包。

参数

定义

capture_params duration

时间,以分钟为单位。默认值为“无限制”。

capture_params num_pkts

要收集的最大数据包数。默认情况下无限制。

capture_params pkt_size

要捕获的数据包大小或截断长度。默认值为“无限制”。

debug_ip addrs

IPv4 地址格式。

debug_ip prefixes

IPv4 前缀格式 <x.x.x.x/x>。

debug_virtual service_hm_include

在捕获中包括运行状况监控器数据包。

debug_virtual service_hm_none

在捕获中忽略运行状况监控器数据包(默认)。

debug_virtual service_hm_only Capture

仅运行状况监控器数据包。

debug_ip 命令会进入子模式。此命令允许输入多个 IP 地址或 IP 子网。对于后续条目,忽略 debug_ip 选项。保存以提交所需 IP 并返回到上一个菜单。

注:

默认情况下,不会定义要捕获的最大数据包数或持续时间。建议包含数据包捕获上限。如果不设定限制,捕获将一直运行,直到 NSX Advanced Load Balancer SE 驱动器已满,这可能会导致服务中断。

指定参数,包括要捕获的最大数据包数。

debugvirtualservice> capture_params num_pkts 1000
debugvirtualservice> debug_ip addrs 10.10.10.10
debugvirtualservice:debug_ip> save

根据之前配置的参数开始捕获。

debugvirtualservice> capture
debugvirtualservice> save
+----------------+--------------------+
| Field          |          Value     |
+----------------+--------------------+
| uuid           | virtualservice-0-1 |
| name           | Test-VS            |
| debug_ip       |                    |
| addrs[1]       | 10.10.10.10        |
| capture        | True               |
| capture_params |                    |
| duration       | 0 mins             |
| num_pkts       | 1000               |
+----------------+--------------------+

重新进入数据包捕获子模式,并停止正在进行的数据包捕获。

debug virtualservice Test-virtual service
debugvirtualservice> no capture
debugvirtualservice> save

捕获 PCAPng 格式的虚拟服务数据包

可以采用 PCAPng 格式捕获虚拟服务数据包。每个数据包都包含传输方向、se-uuid 和处理该数据包的内核编号。提供的前端和后端流量带有唯一的流量 ID,通过该 ID,您可以将数据包捕获中的前端连接和后端连接相关联,而无需返回查看连接/应用程序日志。

注:

并非流量中的所有数据包都存在流量 ID。

要禁用此功能并回退到 PCAP,您可以使用以下命令。

debug virtualservice <>
capture_params
no pcap_ng

以下是 Wireshark 上显示的输出示例。



导出虚拟服务和服务引擎 PCAP 的数据包捕获

将数据包捕获导出到可使用 TCPdump 或 Wireshark 等工具查看数据包捕获的远程系统。

show debug virtualservice Test-virtual service capture
Please specify the destination directory: /tmp
Downloaded the attachment to /tmp/virtual service_virtualservice.20141205_192033.pcap
bash
scp /tmp/virtual service_virtualservice.192033.pcap [email protected]:/tmp