7.2. Traffic flows ビューからのネットワークトラフィックの監視
Traffic flows ビューには、ネットワークフローのデータとトラフィックの量がテーブルに表示されます。管理者は、トラフィックフローテーブルを使用して、アプリケーション全体のトラフィック量を監視できます。
7.2.1. Traffic flows ビューの操作
管理者は、Traffic flows テーブルに移動して、ネットワークフロー情報を確認できます。
手順
-
Observe
Network Traffic に移動します。 - Network Traffic ページで、Traffic flows タブをクリックします。
各行をクリックして、対応するフロー情報を取得できます。
7.2.2. Traffic flows ビューの詳細オプションの設定
Show advanced options を使用して、ビューをカスタマイズおよびエクスポートできます。Display options ドロップダウンメニューを使用して、行サイズを設定できます。デフォルト値は Normal です。
7.2.2.1. 列の管理
表示する必要のある列を選択し、並べ替えることができます。列を管理するには、Manage columns をクリックします。
7.2.2.2. トラフィックフローデータのエクスポート
Traffic flows ビューからデータをエクスポートできます。
手順
- Export data をクリックします。
- ポップアップウィンドウで、Export all data チェックボックスを選択してすべてのデータをエクスポートし、チェックボックスをオフにしてエクスポートする必要のあるフィールドを選択できます。
- 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: これは、指定された間隔内に発生するネットワークトラフィックフローです。
手順
-
Web コンソールで、Operators
Installed Operators に移動します。 - NetObserv Operator の Provided APIs 見出しの下で、Flow Collector を選択します。
- cluster を選択し、YAML タブを選択します。
spec.processor.logTypes
、conversationEndTimeout
、およびconversationHeartbeatInterval
パラメーターが観察のニーズに応じて設定されるように、FlowCollector
カスタムリソースを設定します。設定例は次のとおりです。会話追跡用に
FlowCollector
を設定するCopy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: processor: logTypes: Flows advanced: conversationEndTimeout: 10s conversationHeartbeatInterval: 30s
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、および Conversation end イベントがエクスポートされます。EndedConversations
を指定すると、Conversation end イベントのみがエクスポートされます。ストレージ要件はAll
で最も高く、EndedConversations
で最も低くなります。- 2
- Conversation end イベントは、
conversationEndTimeout
に達するか、TCP フラグがインターセプトされた時点を表します。 - 3
- Conversation tick イベントは、ネットワーク接続がアクティブである間の、
FlowCollector
のconversationHeartbeatInterval
パラメーターで定義された各指定間隔を表します。
注記logType
オプションを更新しても、以前の選択によるフローはコンソールプラグインから消去されません。たとえば、午前 10 時までlogType
をConversations
に設定し、その後EndedConversations
に移行すると、コンソールプラグインは、午前 10 時まではすべての会話イベントを表示し、午前 10 時以降は終了した会話のみを表示します。-
Traffic flows タブの Network Traffic ページを更新します。Event/Type と Conversation Id という 2 つの新しい列があることに注意してください。クエリーオプションとして Flow が選択されている場合、すべての Event/Type フィールドは
Flow
になります。 - Query Options を選択し、Log Type として Conversation を選択します。Event/Type は、必要なすべての会話イベントを表示するようになりました。
- 次に、特定の会話 ID でフィルタリングするか、サイドパネルから Conversation と Flow ログタイプのオプションを切り替えることができます。
7.2.4. パケットドロップの使用
パケットロスは、ネットワークフローデータの 1 つ以上のパケットが宛先に到達できない場合に発生します。パケットのドロップは、次に示す YAML の例の仕様に合わせて FlowCollector
を編集することで追跡できます。
この機能を有効にすると、CPU とメモリーの使用量が増加します。
手順
-
Web コンソールで、Operators
Installed Operators に移動します。 - NetObserv Operator の Provided APIs 見出しの下で、Flow Collector を選択します。
- cluster を選択し、YAML タブを選択します。
パケットドロップ用に
FlowCollector
カスタムリソースを設定します。以下はその例です。FlowCollector
の設定例Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: namespace: netobserv agent: type: eBPF ebpf: features: - PacketDrop privileged: true
apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: namespace: netobserv agent: type: eBPF ebpf: features: - PacketDrop
1 privileged: true
2
検証
Network Traffic ページを更新すると、Overview、Traffic Flow、Topology ビューにパケットドロップに関する新しい情報が表示されます。
- Manage panels で、Overview に表示するパケットドロップのグラフィカル表示を新しく選択します。
Manage columns で、Traffic flows テーブルに表示するパケットドロップ情報を選択します。
-
Traffic Flows ビューでは、サイドパネルを展開してパケットドロップの詳細情報を表示することもできます。ホストドロップには
SKB_DROP
という接頭辞が付き、OVS ドロップにはOVS_DROP
という接頭辞が付きます。
-
Traffic Flows ビューでは、サイドパネルを展開してパケットドロップの詳細情報を表示することもできます。ホストドロップには
- Topology ビューでは、ドロップが発生した場所が赤線で表示されます。
7.2.5. DNS 追跡の使用
DNS 追跡を使用すると、ネットワークの監視、セキュリティー分析の実施、DNS 問題のトラブルシューティングを実行できます。次に示す YAML の例の仕様に合わせて FlowCollector
を編集することで、DNS を追跡できます。
この機能を有効にすると、eBPF agent で CPU とメモリーの使用量の増加が観察されます。
手順
-
Web コンソールで、Operators
Installed Operators に移動します。 - Network Observability の Provided APIs という見出しの下で、Flow Collector を選択します。
- cluster を選択し、YAML タブを選択します。
FlowCollector
カスタムリソースを設定します。設定例は次のとおりです。DNS 追跡用に
FlowCollector
を設定するCopy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: namespace: netobserv agent: type: eBPF ebpf: features: - DNSTracking sampling: 1
apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: namespace: netobserv agent: type: eBPF ebpf: features: - DNSTracking
1 sampling: 1
2 Network Traffic ページを更新すると、Overview ビューと Traffic Flow ビューで表示する新しい DNS 表示と適用可能な新しいフィルターが表示されます。
- Manage panels で新しい DNS の選択肢を選択すると、Overview にグラフィカルな表現と DNS メトリクスが表示されます。
- Manage columns で新しい選択肢を選択すると、DNS 列が Traffic Flows ビューに追加されます。
- DNS Id、DNS Error、DNS Latency、DNS Response Code などの特定の DNS メトリクスでフィルタリングして、サイドパネルから詳細情報を確認します。DNS Latency 列と DNS Response Code 列がデフォルトで表示されます。
TCP ハンドシェイクパケットには DNS ヘッダーがありません。DNS ヘッダーのない TCP プロトコルフローの場合、トラフィックフローデータに表示される DNS Latency、ID、および Response code の値が "n/a" になります。"DNSError" が "0" の Common フィルターを使用すると、フローデータをフィルタリングして、DNS ヘッダーを持つフローのみを表示できます。
7.2.6. RTT トレーシングの使用
次に示す YAML の例の仕様に合わせて FlowCollector
を編集することで、RTT を追跡できます。
手順
-
Web コンソールで、Operators
Installed Operators に移動します。 - NetObserv Operator の Provided APIs という見出しの下で、Flow Collector を選択します。
- cluster を選択し、YAML タブを選択します。
RTT トレーシング用に
FlowCollector
カスタムリソースを設定します。次に例を示します。FlowCollector
の設定例Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: namespace: netobserv agent: type: eBPF ebpf: features: - FlowRTT
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 ページを更新すると、Overview、Traffic Flow、Topology ビューに RTT に関する新しい情報が表示されます。
- Overview で、Manage panels の新しい選択肢を選択して、表示する RTT のグラフィカル表示を選択します。
- Traffic flows テーブルに Flow RTT 列が表示されます。Manage columns で表示を管理できます。
Traffic Flows ビューでは、サイドパネルを展開して RTT の詳細情報を表示することもできます。
フィルタリングの例
-
Common フィルター
Protocol をクリックします。 - TCP、Ingress の方向に基づいてネットワークフローデータをフィルタリングし、10,000,000 ナノ秒 (10 ms) を超える FlowRTT 値を探します。
- Protocol フィルターを削除します。
- Common フィルターで 0 より大きい Flow RTT 値をフィルタリングします。
-
Common フィルター
- Topology ビューで、Display option ドロップダウンをクリックします。次に、edge labels のドロップダウンリストで RTT をクリックします。
7.2.6.1. ヒストグラムの使用
Show histogram をクリックすると、フローの履歴を棒グラフとして視覚化するためのツールバービューが表示されます。ヒストグラムは、時間の経過に伴うログの数を示します。ヒストグラムの一部を選択して、ツールバーに続く表でネットワークフローデータをフィルタリングできます。
7.2.7. アベイラビリティーゾーンの使用
クラスターのアベイラビリティーゾーンに関する情報を収集するように FlowCollector
を設定できます。この設定により、ノードに適用される topology.kubernetes.io/zone
ラベル値を使用してネットワークフローデータをエンリッチできます。
手順
-
Web コンソールで、Operators
Installed Operators に移動します。 - NetObserv Operator の Provided APIs 見出しの下で、Flow Collector を選択します。
- cluster を選択し、YAML タブを選択します。
FlowCollector
カスタムリソースを設定し、spec.processor.addZone
パラメーターをtrue
に設定します。設定例は次のとおりです。アベイラビリティーゾーン収集用に
FlowCollector
を設定するCopy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: # ... processor: addZone: true # ...
apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: # ... processor: addZone: true # ...
検証
Network Traffic ページを更新すると、Overview、Traffic Flow、Topology ビューにアベイラビリティーゾーンに関する新しい情報が表示されます。
- Overview タブに、使用可能な Scope として Zones が表示されます。
-
Network Traffic
Traffic flows の SrcK8S_Zone フィールドと DstK8S_Zone フィールドに Zones が表示されます。 - Topology ビューで、Scope または Group として Zones を設定できます。
7.2.8. グローバルルールを使用した eBPF フローデータのフィルタリング
FlowCollector
を設定して、グローバルルールを使用して eBPF フローをフィルタリングし、eBPF フローテーブルにキャッシュされるパケットのフローを制御できます。
手順
-
Web コンソールで、Operators
Installed Operators に移動します。 - Network Observability の Provided APIs という見出しの下で、Flow Collector を選択します。
- cluster を選択し、YAML タブを選択します。
次のサンプル設定と同じように
FlowCollector
カスタムリソースを設定します。例7.1 特定の Pod IP エンドポイントへの Kubernetes サービストラフィックをフィルタリングする
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: namespace: netobserv deploymentModel: Direct agent: type: eBPF ebpf: flowFilter: action: Accept cidr: 172.210.150.1/24 protocol: SCTP direction: Ingress destPortRange: 80-100 peerIP: 10.10.10.10 enable: true
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
パラメーターは、フローフィルタールールに対して実行されるアクションを示します。可能な値はAccept
またはReject
です。 - 2
- 必須の
cidr
パラメーターは、フローフィルタールールの IP アドレスと CIDR マスクを指定します。IPv4 および IPv6 アドレス形式をサポートしています。すべての IP アドレスと照合する場合、IPv4 の場合は0.0.0.0/0
、IPv6 の場合は::/0
を使用できます。 - 3
- この機能を有効にするには、
spec.agent.ebpf.flowFilter.enable
をtrue
に設定する必要があります。
例7.2 クラスター外のアドレスへのフローを確認する
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: namespace: netobserv deploymentModel: Direct agent: type: eBPF ebpf: flowFilter: action: Accept cidr: 0.0.0.0/0 protocol: TCP direction: Egress sourcePort: 100 peerIP: 192.168.127.12 enable: true
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
7.2.9. エンドポイント変換 (xlat)
Network Observability と拡張 Berkeley Packet Filter (eBPF) を使用して、統合ビューでトラフィックを処理するエンドポイントを可視化できます。通常、トラフィックがサービス、egressIP、またはロードバランサーを通過する場合、トラフィックフロー情報は、利用可能な Pod の 1 つにルーティングされるときに抽象化されます。トラフィックに関する情報を取得しようとすると、サービス IP やポートなどのサービス関連情報のみが表示され、リクエストを処理している特定の Pod に関する情報は表示されません。多くの場合、サービストラフィックと仮想サービスエンドポイントの両方の情報が 2 つの別々のフローとしてキャプチャーされるため、トラブルシューティングが複雑になります。
この問題の解決において、エンドポイント xlat は次のように役立ちます。
- カーネルレベルでネットワークフローをキャプチャーします。この場合のパフォーマンスへの影響は、最小限に抑えられます。
- 変換されたエンドポイント情報を使用してネットワークフローを拡充し、サービスだけでなく特定のバックエンド Pod も表示することで、どの Pod がリクエストを処理したか確認できます。
ネットワークパケットが処理されると、eBPF フックは、変換されたエンドポイントに関するメタデータでフローログを拡充します。これには、Network Traffic ページに 1 行で表示できる次の情報が含まれます。
- ソース Pod IP
- 送信元ポート
- 宛先 Pod IP
- 送信先ポート
- Conntrack Zone ID
7.2.10. エンドポイント変換 (xlat) の操作
Network Observability と eBPF を使用すると、Kubernetes サービスからのネットワークフローを変換されたエンドポイント情報で拡充して、トラフィックを処理するエンドポイントに関する詳細情報を得ることができます。
手順
-
Web コンソールで、Operators
Installed Operators に移動します。 - NetObserv Operator の Provided APIs という見出しの下で、Flow Collector を選択します。
- cluster を選択し、YAML タブを選択します。
PacketTranslation
のFlowCollector
カスタムリソースを、設定します。以下はその例です。FlowCollector
の設定例Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: namespace: netobserv agent: type: eBPF ebpf: features: - PacketTranslation
apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: namespace: netobserv agent: type: eBPF ebpf: features: - PacketTranslation
1 - 1
spec.agent.ebpf.features
仕様リストにPacketTranslation
パラメーターをリストすることで、変換されたパケット情報を使用してネットワークフローを充実させることができます。
フィルタリングの例
Network Traffic ページを更新すると、変換されたパケットに関する情報をフィルタリングできます。
- Destination kind: Service に基づき、ネットワークフローデータをフィルタリングします。
変換された情報が表示される場所を区別する xlat 列と、次のデフォルト列が表示されます。
- Xlat Zone ID
- Xlat Src Kubernetes Object
- Xlat Dst Kubernetes Object
追加の xlat 列の表示は、Manage columns で管理できます。
7.2.11. ネットワークイベントの表示
OVN-Kubernetes ネットワークイベントの追跡は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
FlowCollector
を編集して、次のリソースによってドロップまたは許可されたネットワークフローなどのネットワークトラフィックイベントに関する情報を表示できます。
-
NetworkPolicy
-
AdminNetworkPolicy
-
BaselineNetworkPolicy
-
EgressFirewall
-
UserDefinedNetwork
分離 - マルチキャスト ACL
前提条件
-
cluster
という名前のFeatureGate
カスタムリソース (CR) でTechPreviewNoUpgrade
機能セットを設定することで、OVNObservability
を有効にした。詳細は、「CLI を使用した機能セットの有効化」および「CLI を使用して OVS サンプリングで OVN-Kubernetes ネットワークトラフィックを確認する」を参照してください。 -
NetworkPolicy
、AdminNetworkPolicy
、BaselineNetworkPolicy
、UserDefinedNetwork
の分離、マルチキャスト、またはEgressFirewall
のいずれかのネットワーク API を 1 つ以上作成した。
手順
-
Web コンソールで、Operators
Installed Operators に移動します。 - NetObserv Operator の Provided APIs という見出しの下で、Flow Collector を選択します。
- cluster を選択し、YAML タブを選択します。
NetworkEvents
の表示を有効にするには、FlowCollector
CR を設定します。例:FlowCollector
の設定例Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: agent: type: eBPF ebpf: # sampling: 1 privileged: true features: - "NetworkEvents"
apiVersion: flows.netobserv.io/v1beta2 kind: FlowCollector metadata: name: cluster spec: agent: type: eBPF ebpf: # sampling: 1
1 privileged: true
2 features: - "NetworkEvents"
検証
- Network Traffic ビューに移動し、Traffic flows テーブルを選択します。
-
Network Events という新しい列が表示されます。ここでは、有効にしたネットワーク API (
NetworkPolicy
、AdminNetworkPolicy
、BaselineNetworkPolicy
、UserDefinedNetwork
の分離、マルチキャスト、Egress ファイアウォール) のいずれかがもたらす影響に関する情報を表示できます。
この列で確認できるイベントの kind の例は次のとおりです。
+ .Example of Network Events の出力
<Dropped_or_Allowed> by <network_event_and_event_name>, direction <Ingress_or_Egress>
<Dropped_or_Allowed> by <network_event_and_event_name>, direction <Ingress_or_Egress>