8.2. Traffic flows ビューからのネットワークトラフィックの監視
Traffic flows ビューには、ネットワークフローのデータとトラフィックの量がテーブルに表示されます。管理者は、トラフィックフローテーブルを使用して、アプリケーション全体のトラフィック量を監視できます。
8.2.1. Traffic flows ビューの操作 リンクのコピーリンクがクリップボードにコピーされました!
管理者は、Traffic flows テーブルに移動して、ネットワークフロー情報を確認できます。
手順
-
Observe
Network Traffic に移動します。 - Network Traffic ページで、Traffic flows タブをクリックします。
各行をクリックして、対応するフロー情報を取得できます。
8.2.2. Traffic flows ビューの詳細オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Show advanced options を使用して、ビューをカスタマイズおよびエクスポートできます。Display options ドロップダウンメニューを使用して、行サイズを設定できます。デフォルト値は Normal です。
8.2.2.1. 列の管理 リンクのコピーリンクがクリップボードにコピーされました!
表示する必要のある列を選択し、並べ替えることができます。列を管理するには、Manage columns をクリックします。
8.2.2.2. トラフィックフローデータのエクスポート リンクのコピーリンクがクリップボードにコピーされました!
Traffic flows ビューからデータをエクスポートできます。
手順
- Export data をクリックします。
- ポップアップウィンドウで、Export all data チェックボックスを選択してすべてのデータをエクスポートし、チェックボックスをオフにしてエクスポートする必要のあるフィールドを選択できます。
- Export をクリックします。
8.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 で暗号化されたかどうか、または暗号化/復号化中にエラーが発生したかどうかが表示されます。
- 生成された暗号化トラフィックの割合を示す新しいダッシュボード。
8.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 ログタイプのオプションを切り替えることができます。
8.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 ビューでは、ドロップが発生した場所が赤線で表示されます。
8.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 ヘッダーを持つフローのみを表示できます。
8.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 をクリックします。
8.2.7.1. ヒストグラムの使用 リンクのコピーリンクがクリップボードにコピーされました!
Show histogram をクリックすると、フローの履歴を棒グラフとして視覚化するためのツールバービューが表示されます。ヒストグラムは、時間の経過に伴うログの数を示します。ヒストグラムの一部を選択して、ツールバーに続く表でネットワークフローデータをフィルタリングできます。
8.2.8. アベイラビリティーゾーンの使用 リンクのコピーリンクがクリップボードにコピーされました!
クラスターのアベイラビリティーゾーンに関する情報を収集するように 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 を設定できます。
8.2.9. 複数のルールを使用した eBPF フローデータのフィルタリング リンクのコピーリンクがクリップボードにコピーされました!
FlowCollector カスタムリソースを設定して、複数のルールを使用して eBPF フローをフィルタリングし、eBPF フローテーブルにキャッシュされるパケットのフローを制御できます。
- フィルタールールで重複する 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に設定します。
8.2.10. エンドポイント変換 (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
8.2.11. エンドポイント変換 (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 で管理できます。