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
を設定する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
の設定例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 ビューでは、サイドパネルを展開してパケットドロップの詳細情報を表示することもできます。
- 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
を設定する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
の設定例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
を設定する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 サービストラフィックをフィルタリングする
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 クラスター外のアドレスへのフローを確認する
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