12.2. Network Observability CLI の使用
フローやパケットデータをターミナル内で直接可視化およびフィルタリングすると、特定のポートを使用しているユーザーの特定など、詳細な使用状況を確認できます。Network Observability CLI は、フローを JSON およびデータベースファイルとして、パケットを PCAP ファイルとして収集します。これらのファイルはサードパーティーツールで使用できます。
12.2.1. フローのキャプチャー
フローをキャプチャーし、データ内の任意のリソースまたはゾーンでフィルタリングすると、2 つのゾーン間のラウンドトリップタイム (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 of the above を切り替えます。
-
キャプチャーを停止するには、Ctrl+C を押します。キャプチャーされたデータは、CLI のインストールに使用したのと同じパスにある
./output
ディレクトリー内の 2 つの異なるファイルに書き込まれます。 キャプチャーされたデータを、JSON ファイル
./output/flow/<capture_date_time>.json
で確認します。このファイルには、キャプチャーされたデータの 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
12.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 of the above を切り替えます。
- キャプチャーを停止するには、Ctrl+C を押します。
キャプチャーされたデータを確認します。このデータは、CLI のインストールに使用したのと同じパスにある
./output/pcap
ディレクトリー内の 1 つのファイルに書き込まれます。-
./output/pcap/<capture_date_time>.pcap
ファイルは Wireshark で開くことができます。
-
12.2.3. Network Observability CLI のクリーンアップ
oc netobserv cleanup
を実行して、CLI ワークロードを手動でクリーンアップできます。このコマンドは、クラスターからすべての CLI コンポーネントを削除します。
キャプチャーを終了すると、このコマンドがクライアントによって自動的に実行されます。接続の問題が発生した場合は、手動で実行する必要がある場合があります。
手順
以下のコマンドを実行します。
$ oc netobserv cleanup