9.2. Traffic flows ビューからのネットワークトラフィックの監視
Traffic flows ビューには、ネットワークフローのデータとトラフィックの量がテーブルに表示されます。管理者は、トラフィックフローテーブルを使用して、アプリケーション全体のトラフィック量を監視できます。
9.2.1. Traffic flows ビューの操作 リンクのコピーリンクがクリップボードにコピーされました!
管理者は、Traffic flows テーブルに移動して、ネットワークフロー情報を確認できます。
手順
-
Observe
Network Traffic に移動します。 - Network Traffic ページで、Traffic flows タブをクリックします。
各行をクリックして、対応するフロー情報を取得できます。
9.2.2. Traffic flows ビューの詳細オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Show advanced options を使用して、ビューをカスタマイズおよびエクスポートできます。Display options ドロップダウンメニューを使用して、行サイズを設定できます。デフォルト値は Normal です。
9.2.2.1. 列の管理 リンクのコピーリンクがクリップボードにコピーされました!
表示する必要のある列を選択し、並べ替えることができます。列を管理するには、Manage columns をクリックします。
9.2.2.2. トラフィックフローデータのエクスポート リンクのコピーリンクがクリップボードにコピーされました!
Traffic flows ビューからデータをエクスポートできます。
手順
- Export data をクリックします。
- ポップアップウィンドウで、Export all data チェックボックスを選択してすべてのデータをエクスポートし、チェックボックスをオフにしてエクスポートする必要のあるフィールドを選択できます。
- Export をクリックします。
9.2.3. FlowCollector カスタムリソースを使用した IPsec の設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform では、IPsec はデフォルトで無効になっています。「IPsec 暗号化の設定」の手順に従って IPsec を有効にできます。
前提条件
- OpenShift Container Platform で IPsec 暗号化を有効にした。
手順
-
Web コンソールで、Operators
Installed Operators に移動します。 - NetObserv Operator の Provided APIs 見出しの下で、Flow Collector を選択します。
- cluster を選択し、YAML タブを選択します。
IPsec の
FlowCollectorカスタムリソースを設定します。IPsec の
FlowCollectorの設定例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
IPsec が有効な場合:
- IPsec Status という新しい列が Network Observability の Traffic フロービューに表示され、フローが正常に IPsec で暗号化されたかどうか、または暗号化/復号化中にエラーが発生したかどうかが表示されます。
- 生成された暗号化トラフィックの割合を示す新しいダッシュボード。
9.2.4. 会話追跡の使用 リンクのコピーリンクがクリップボードにコピーされました!
管理者は、同じ会話の一部であるネットワークフローをグループ化できます。会話は、IP アドレス、ポート、プロトコルによって識別されるピアのグループとして定義され、その結果、一意の Conversation ID が得られます。Web コンソールで対話イベントをクエリーできます。これらのイベントは、Web コンソールでは次のように表示されます。
- Conversation start: このイベントは、接続が開始されているか、TCP フラグがインターセプトされたときに発生します。
-
Conversation tick: このイベントは、接続がアクティブである間、
FlowCollectorspec.processor.conversationHeartbeatIntervalパラメーターで定義された指定間隔ごとに発生します。 -
Conversation end: このイベントは、
FlowCollectorspec.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 - 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 ログタイプのオプションを切り替えることができます。
9.2.5. パケットドロップの使用 リンクのコピーリンクがクリップボードにコピーされました!
パケットロスは、ネットワークフローデータの 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
検証
Network Traffic ページを更新すると、Overview、Traffic Flow、Topology ビューにパケットドロップに関する新しい情報が表示されます。
- Manage panels で、Overview に表示するパケットドロップのグラフィカル表示を新しく選択します。
Manage columns で、Traffic flows テーブルに表示するパケットドロップ情報を選択します。
-
Traffic Flows ビューでは、サイドパネルを展開してパケットドロップの詳細情報を表示することもできます。ホストドロップには
SKB_DROPという接頭辞が付き、OVS ドロップにはOVS_DROPという接頭辞が付きます。
-
Traffic Flows ビューでは、サイドパネルを展開してパケットドロップの詳細情報を表示することもできます。ホストドロップには
- Topology ビューでは、ドロップが発生した場所が赤線で表示されます。
9.2.6. 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 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 ヘッダーを持つフローのみを表示できます。
9.2.7. 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 - 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 をクリックします。
9.2.8. eBPF Manager Operator の操作 リンクのコピーリンクがクリップボードにコピーされました!
eBPF Manager Operator は、すべての eBPF プログラムを管理することで、攻撃対象領域を削減し、コンプライアンス、セキュリティー、競合防止を実現します。Network Observability は、eBPF Manager Operator を使用してフックをロードできます。そのため、特権モードや、CAP_BPF や CAP_PERFMON などの追加の Linux ケイパビリティーを eBPF エージェントに提供する必要がなくなります。eBPF Manager Operator と Network Observability の連携は、64 ビット AMD アーキテクチャーでのみサポートされています。
eBPF Manager Operator と Network Observability の連携は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
手順
-
Web コンソールで、Operator
Operator Hub に移動します。 - eBPF Manager をインストールします。
-
bpfmannamespace の WorkloadsPod をチェックして、すべてが稼働していることを確認します。 eBPF Manager Operator を使用するように
FlowCollectorカスタムリソースを設定します。FlowCollectorの設定例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
-
Web コンソールで、Operators
Installed Operators に移動します。 eBPF Manager Operator
All instances タブをクリックします。 各ノードについて、
netobservという名前のBpfApplicationと、BpfProgramオブジェクトのペア (Traffic Control (TCx) Ingress 用と TCx Egress 用のもの) が存在することを確認します。他の eBPF エージェント機能を有効にすると、オブジェクトが増える可能性があります。
9.2.8.1. ヒストグラムの使用 リンクのコピーリンクがクリップボードにコピーされました!
Show histogram をクリックすると、フローの履歴を棒グラフとして視覚化するためのツールバービューが表示されます。ヒストグラムは、時間の経過に伴うログの数を示します。ヒストグラムの一部を選択して、ツールバーに続く表でネットワークフローデータをフィルタリングできます。
9.2.9. アベイラビリティーゾーンの使用 リンクのコピーリンクがクリップボードにコピーされました!
クラスターのアベイラビリティーゾーンに関する情報を収集するように 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
検証
Network Traffic ページを更新すると、Overview、Traffic Flow、Topology ビューにアベイラビリティーゾーンに関する新しい情報が表示されます。
- Overview タブに、使用可能な Scope として Zones が表示されます。
-
Network Traffic
Traffic flows の SrcK8S_Zone フィールドと DstK8S_Zone フィールドに Zones が表示されます。 - Topology ビューで、Scope または Group として Zones を設定できます。
9.2.10. 複数のルールを使用した eBPF フローデータのフィルタリング リンクのコピーリンクがクリップボードにコピーされました!
FlowCollector カスタムリソースを設定して、複数のルールを使用して eBPF フローをフィルタリングし、eBPF フローテーブルにキャッシュされるパケットのフローを制御できます。
- フィルタールールでは重複する Classless Inter-Domain Routing (CIDR) を使用することはできません。
- IP アドレスが複数のフィルタールールにマッチする場合、最も具体的な CIDR 接頭辞 (最も長い接頭辞) を持つルールが優先されます。
手順
-
Web コンソールで、Operators
Installed Operators に移動します。 - Network Observability の Provided APIs という見出しの下で、Flow Collector を選択します。
- cluster を選択し、YAML タブを選択します。
-
次のサンプル設定と同じように
FlowCollectorカスタムリソースを設定します。
すべての North-South トラフィックと 1:50 の East-West トラフィックをサンプリングする YAML の例
デフォルトでは、他のすべてのフローが拒否されます。
- 1
- eBPF フローフィルタリングを有効にするには、
spec.agent.ebpf.flowFilter.enableをtrueに設定します。 - 2
- フローフィルタールールのアクションを定義するには、必要な
actionパラメーターを設定します。有効な値はAcceptまたはRejectです。 - 3
- フローフィルタールールの IP アドレスと CIDR マスクを定義するには、必要な
cidrパラメーターを設定します。このパラメーターは IPv4 と IPv6 の両方のアドレス形式をサポートしています。すべての IP アドレスにマッチさせるには、IPv4 の場合は0.0.0.0/0、IPv6 の場合は::/0を使用します。 - 4
- マッチさせるフローのサンプリングレートを定義し、グローバルサンプリング設定
spec.agent.ebpf.samplingをオーバーライドするには、samplingパラメーターを設定します。 - 5
- Peer IP CIDR でフローをフィルタリングするには、
peerCIDRパラメーターを設定します。
パケットドロップでフローをフィルタリングする YAML の例
デフォルトでは、他のすべてのフローが拒否されます。
- 1
- パケットドロップを有効にするには、
spec.agent.ebpf.privilegedをtrueに設定します。 - 2
- 各ネットワークフローのパケットドロップを報告するには、
spec.agent.ebpf.featuresリストにPacketDrop値を追加します。 - 3
- eBPF フローフィルタリングを有効にするには、
spec.agent.ebpf.flowFilter.enableをtrueに設定します。 - 4
- フローフィルタールールのアクションを定義するには、必要な
actionパラメーターを設定します。有効な値はAcceptまたはRejectです。 - 5
- ドロップを含むフローをフィルタリングするには、
pktDropsをtrueに設定します。
9.2.11. エンドポイント変換 (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
9.2.12. エンドポイント変換 (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 - 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 で管理できます。
9.2.13. ユーザー定義ネットワークの操作 リンクのコピーリンクがクリップボードにコピーされました!
Network Observability リソースでユーザー定義ネットワーク (UDN) を有効にできます。次の例は、FlowCollector リソースの設定を示しています。
前提条件
- Red Hat OpenShift Networking で UDN を設定した。詳細は、「CLI を使用した UserDefinedNetwork の作成」または「Web コンソールを使用した UserDefinedNetwork の作成」を参照してください。
手順
次のコマンドを実行して、Network Observability の
FlowCollectorリソースを編集します。oc edit flowcollector
$ oc edit flowcollectorCopy to Clipboard Copied! Toggle word wrap Toggle overflow FlowCollectorリソースのebpfセクションを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- すべてのフローを観測できるように、この設定が推奨されます。
検証
Network Traffic ページを更新して、Traffic Flow と Topology ビューで更新された UDN の情報を表示します。
-
Network Traffic > Traffic flows では、
SrcK8S_NetworkNameフィールドとDstK8S_NetworkNameフィールドで UDN を確認できます。 - Topology ビューでは、Network を Scope または Group に設定できます。
-
Network Traffic > Traffic flows では、
9.2.14. ネットワークイベントの表示 リンクのコピーリンクがクリップボードにコピーされました!
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の表示を有効にするには、FlowCollectorCR を設定します。例:FlowCollectorの設定例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
- Network Traffic ビューに移動し、Traffic flows テーブルを選択します。
-
Network Events という新しい列が表示されます。ここでは、有効にしたネットワーク API (
NetworkPolicy、AdminNetworkPolicy、BaselineNetworkPolicy、UserDefinedNetworkの分離、マルチキャスト、Egress ファイアウォール) のいずれかがもたらす影響に関する情報を表示できます。
この列で確認できるイベントの kind の例は次のとおりです。
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>