14.2. 使用 Network Observability CLI
您可以在终端中直接视觉化和过滤流和数据包数据,以查看特定使用情况,例如识别谁正在使用特定端口。Network Observability CLI 将流作为 JSON 和数据库文件或数据包作为 PCAP 文件来收集,该文件可用于第三方工具。
14.2.1. 捕获流 复制链接链接已复制到粘贴板!
捕获网络流,并根据 CLI 中的资源或区域应用过滤。这有助于您解决复杂的用例,如可视化两个不同区域之间的 Round-Trip Time (RTT)。
CLI 中的表视觉化提供了查看和流搜索功能。
先决条件
-
安装 OpenShift CLI (
oc) 。 -
安装 Network Observability CLI (
oc netobserv) 插件。
流程
运行以下命令,通过过滤捕获流:
$ oc netobserv flows --enable_filter=true --action=Accept --cidr=0.0.0.0/0 --protocol=TCP --port=49051在终端的
live table filter提示下添加过滤以进一步优化传入的流。例如:live table filter: [SrcK8S_Zone:us-west-1b] press enter to match multiple regular expressions at once- 使用 PageUp 和 PageDown 键在 None、Resource、Zone、Host、Owner 和 all 之间切换。
-
要停止捕获,按 Ctrl+C。捕获的数据被写入两个单独的文件,位于用于安装 CLI 的同一路径中的
./output目录中。 在
./output/flow/<capture_date_time>.jsonJSON 文件中查看捕获的数据,其中包含了捕获数据的 JSON 阵列。JSON 文件示例
{ "AgentIP": "10.0.1.76", "Bytes": 561, "DnsErrno": 0, "Dscp": 20, "DstAddr": "f904:ece9:ba63:6ac7:8018:1e5:7130:0", "DstMac": "0A:58:0A:80:00:37", "DstPort": 9999, "Duplicate": false, "Etype": 2048, "Flags": 16, "FlowDirection": 0, "IfDirection": 0, "Interface": "ens5", "K8S_FlowLayer": "infra", "Packets": 1, "Proto": 6, "SrcAddr": "3e06:6c10:6440:2:a80:37:b756:270f", "SrcMac": "0A:58:0A:80:00:01", "SrcPort": 46934, "TimeFlowEndMs": 1709741962111, "TimeFlowRttNs": 121000, "TimeFlowStartMs": 1709741962111, "TimeReceived": 1709741964 }您可以使用 SQLite 检查
./output/flow/<capture_date_time>.db数据库文件。例如:运行以下命令打开该文件:
$ sqlite3 ./output/flow/<capture_date_time>.db运行 SQLite
SELECT语句来查询数据,例如:sqlite> SELECT DnsLatencyMs, DnsFlagsResponseCode, DnsId, DstAddr, DstPort, Interface, Proto, SrcAddr, SrcPort, Bytes, Packets FROM flow WHERE DnsLatencyMs >10 LIMIT 10;输出示例
12|NoError|58747|10.128.0.63|57856||17|172.30.0.10|53|284|1 11|NoError|20486|10.128.0.52|56575||17|169.254.169.254|53|225|1 11|NoError|59544|10.128.0.103|51089||17|172.30.0.10|53|307|1 13|NoError|32519|10.128.0.52|55241||17|169.254.169.254|53|254|1 12|NoError|32519|10.0.0.3|55241||17|169.254.169.254|53|254|1 15|NoError|57673|10.128.0.19|59051||17|172.30.0.10|53|313|1 13|NoError|35652|10.0.0.3|46532||17|169.254.169.254|53|183|1 32|NoError|37326|10.0.0.3|52718||17|169.254.169.254|53|169|1 14|NoError|14530|10.0.0.3|58203||17|169.254.169.254|53|246|1 15|NoError|40548|10.0.0.3|45933||17|169.254.169.254|53|174|1
14.2.2. 捕获数据包 复制链接链接已复制到粘贴板!
使用 Network Observability CLI 捕获网络数据包。您可以应用过滤器,并在终端中实时优化它们,以进行准确、实时的调试。
先决条件
-
安装 OpenShift CLI (
oc) 。 -
安装 Network Observability CLI (
oc netobserv) 插件。
流程
在启用了过滤的情况下运行数据包捕获:
$ oc netobserv packets --action=Accept --cidr=0.0.0.0/0 --protocol=TCP --port=49051在终端的
live table filter提示下添加过滤以进一步优化传入的数据包。过滤示例如下:live table filter: [SrcK8S_Zone:us-west-1b] press enter to match multiple regular expressions at once- 使用 PageUp 和 PageDown 键在 None、Resource、Zone、Host、Owner 和 all 之间切换。
- 要停止捕获,按 Ctrl+C。
查看捕获的数据,这些数据被写入一个文件中,该文件位于用于安装 CLI 的同一路径中的
./output/pcap目录中:-
./output/pcap/<capture_date_time>.pcap文件可以使用 wireshark 打开。
-
14.2.3. 捕获指标 复制链接链接已复制到粘贴板!
使用服务监控器在 Prometheus 中生成按需网络可观察性仪表板。这可让您快速查看和分析网络指标。
先决条件
-
安装 OpenShift CLI (
oc) 。 -
安装 Network Observability CLI (
oc netobserv) 插件。
流程
运行以下命令,捕获启用了过滤器的指标:
输出示例
$ oc netobserv metrics --enable_filter=true --cidr=0.0.0.0/0 --protocol=TCP --port=49051打开终端提供的链接,以查看 NetObserv / On-Demand 仪表板:
URL 示例
https://console-openshift-console.apps.rosa...openshiftapps.com/monitoring/dashboards/netobserv-cli注意未作为空图形显示的功能。
14.2.4. 清理 Network Observability CLI 复制链接链接已复制到粘贴板!
使用 oc netobserv cleanup 从集群中删除 Network Observability CLI 安装的所有组件。虽然客户端在捕获后自动运行此命令,但如果您遇到连接问题,可能需要手动运行该命令。
流程
运行以下命令:
$ oc netobserv cleanup