Azure Kubernetes Service (AKS)用の Advanced Container Networking Services のコンテナー ネットワーク ログを使用すると、クラスター内のすべてのネットワーク フローを可視化できます。 メトリックは、ネットワークで何が起こっている かを 通知します (帯域幅の使用量、エラー率)。 ログには、接続を開始した 理由、使用されたプロトコル、トラフィックが許可されたかブロックされたかが示されます。
これらのログは、すべてのネットワーク フローのメタデータをキャプチャします。
- 送信元と宛先の IP アドレス、ポッド名、およびサービス名
- 名前空間、ポート、プロトコル
- トラフィックの方向とポリシーの判定
このコンテキストを使用すると、ネットワークの動作を特定のワークロードと関連付け、接続のトラブルシューティング、セキュリティ ポリシーの検証、フォレンジック分析の実行を行うことができます。 コンテナー ネットワーク ログには、レイヤー 3 (IP)、レイヤー 4 (TCP/UDP)、レイヤー 7 (HTTP/gRPC/Kafka) トラフィックが含まれます。
データの量とコストを管理するために、コンテナー ネットワーク ログでは フロー ログの集計がサポートされています。このログでは、接続イベントごとに 1 つのレコードを格納するのではなく、類似のフローを集約されたレコードにグループ化します。 ストレージとインジェストのコストを削減しながら、必要な運用パターンを維持します。 詳細については、「 フロー ログの集計」を参照してください。
コンテナー ネットワーク ログには、次の 2 つのモードがあります。
- 保存されたログ - カスタム フィルターとフロー集計を使用した継続的な収集。 長期的な監視と分析に最適です。
- オンデマンド ログ - Hubble CLI と Hubble UI を使用したリアルタイム キャプチャ。 アドホックトラブルシューティングに最適です。
コンプライアンス、傾向分析、または自動アラートに永続的なレコードが必要な場合は、保存されたログを使用します。 接続またはパフォーマンスの問題をアクティブにデバッグしていて、ライブ トラフィックをすぐに可視化する必要がある場合は、オンデマンド ログを使用します。
保存されたログ
保存されたログ モードは、クラスターで Advanced Container Networking Services が有効になると自動的に有効になります。 機能は用意されていますが、キャプチャする内容を ACNS に指示するまでログは生成されません。
ログの収集を開始するには、監視するトラフィック ContainerNetworkLog 指定するカスタム リソースを定義します(名前空間、ポッド、サービス、プロトコル、または判定別)。 CRD が適用されると、Cilium エージェントはフィルターに一致するフローの生成を開始し、各ノードに書き込みます。 コレクションは、CRD を削除するか、ACNS を無効にするまでアクティブなままです。
CRD フィルターを使用してログに記録されるトラフィックを正確に制御するため、重要なフローに集中し、不要なデータの収集を回避できます。 フロー ログ集計と組み合わせることで、このアプローチにより、ストレージ コストを予測可能にし、分析に重点を置くことができます。
保存ログモードの操作方法
Advanced Container Networking Services では、Cilium を使用して eBPF テクノロジを使用して、各ノード上のネットワーク フローをキャプチャします。 ACNS が有効になり、 ContainerNetworkLog カスタム リソースが適用されると、Cilium エージェントはフィルターに一致するトラフィックを収集し、JSON 形式でログを書き込んで各ホストで /var/log/acns/hubble/events.log します。 ログ生成はクラスター内で完全に実行され、Azure Monitorに依存しません。
運用環境で使用する場合は、Azure Monitor アドオンを有効にすることをお勧めします。 有効にすると、Container Insights エージェントはホストローカル ログを収集し、調整制限を適用して、Log Analytics ワークスペースに送信します。このワークスペースには、長期的なリテンション期間、KQL クエリ、組み込みのAzure ポータルと Grafana ダッシュボードが表示されます。 これは最も統合されたパスであり、ほとんどのお客様が選択する必要があります。
チームに既存の監視パイプラインがある場合は、代わりに、同じホストローカル ログを、Azure Monitorまたは代わりに、OpenTelemetry と互換性のあるコレクターまたはログ サービスに転送できます。
スロットリングと Container Insights の詳細については、Container Insights のドキュメントを参照してください。
Azure Monitorの有無に関係なくコンテナー ネットワーク ログを使用する
コンテナー ネットワーク ログは、2 つの方法で使用できます。 適切な選択は、統合されたAzureネイティブ エクスペリエンスが必要か、使用し続ける可観測パイプラインが既にあるかによって異なります。
| 経路 | 受け取るもの | 選択するタイミング |
|---|---|---|
| Azure Monitor アドオン (推奨) | Container Insights は、ホストローカルログをLog Analyticsワークスペースに収集します。 長期間のデータ保持、KQL、組み込みのAzureポータルダッシュボード、およびマネージドGrafanaダッシュボードは、すぐに使用できます。 | 最小限のセットアップで、AKS で最も統合された運用環境対応のエクスペリエンスが必要です。 |
| 独自のパイプラインを使用したホスト ローカル ファイル | ACNS は、各ノードの /var/log/acns/hubble/events.log に JSON ログを書き込みます。 任意のOpenTelemetry互換のコレクターまたはログサービスに転送することができます。Azure Monitorと組み合わせて使用するか、またはその代わりに使用することもできます。 |
あなたは既に一元化された監視プラットフォームを持っており、ネットワーク ログをそこに記録したいと考えています。 |
ほとんどのお客様には、Azure Monitorを有効にすることをお勧めします。 独自のパイプラインを構築することなく、保持、クエリ、ダッシュボードの機能を取得する最も高速な方法です。
保存されたログ モードの主な機能
カスタマイズ可能なフィルター。 名前空間、ポッド、サービス、ポート、プロトコル、判定、またはトラフィックの方向でフィルター処理するカスタム リソース
ContainerNetworkLog定義します。 一致するトラフィックのみがログに記録されるため、収集される内容とコストを正確に制御できます。フロー ログの集計。 同様のフローは、30 秒ごとに集計されたレコードに自動的にグループ化され、サービス通信パターン、エラー率、セキュリティ判定などの運用シグナルを維持しながらデータ量を削減します。 対象フィルターと組み合わせて集計することで、過剰なインジェスト コストなしで幅広い可視性を維持できます。 詳細については、「 フロー ログの集計」を参照してください。
ログ ストレージ オプション。 ACNS は常に各ノードでローカルにログを書き込みます。 そこから、それらを使用する方法を選択できます。
ホスト ローカル ファイル (常にオン): ログは、
/var/log/acns/hubbleのホスト ノードに格納されます。 ファイルは 50 MB で自動ローテーションされ、古いログは上書きされます。 これを短期的なリアルタイム監視に直接使用するか、OpenTelemetry 互換のコレクターまたはログ サービスにファイルを転送して追加のログ管理を行います。Azure Monitor (推奨): Azure Monitor アドオンを有効にして、Log Analytics ワークスペースにログを収集して格納します。 Prometheus のマネージド サービスを通じて、長期的なリテンション期間、KQL クエリ、異常検出、履歴分析、アラートを使用して、セキュリティで保護された準拠ストレージを取得できます。 ログ生成は引き続き Cilium エージェントと
ContainerNetworkLogCRD を介して実行されます。Azure Monitorは、従量課金レイヤーを上に追加します。ContainerNetworkLogsテーブルでは、既定で Analytics レベルが使用されます。 同様の可観測エクスペリエンスを維持しながら、インジェストとリテンション期間のコストを削減するために Basic レベルに切り替えることができます。 各層には、クエリ機能用に最適化された専用のAzure ポータル ダッシュボードがあります。 表プランの詳細については、Log Analytics 表プランを参照してください。 表プランを設定する方法については、表プラン の設定を参照してください。
Azure ポータルでの視覚化。 Log Analyticsでログのクエリと分析を直接行うか、組み込みのAzure ポータル ダッシュボードを使用します。 テーブル層ごとに専用のダッシュボードを使用できるため、選択したレベルに関係なく、同じ可観測性エクスペリエンスが得られます。 詳細については、Azure ポータル<>ログの表示に関するページを参照>。
Azure ポータルでログを視覚化する
クラスターのLog Analytics ワークスペースのAzure ポータルで、フロー ログを視覚化、クエリ、分析できます。
コンテナー ネットワーク ログには、フロー データを視覚化するための組み込みのAzure ポータル ダッシュボードが含まれています。 Log Analyticsテーブルレベルごとに個別のダッシュボードを使用できます。
| ダッシュボード | 経路 | テーブル階層 |
|---|---|---|
| フロー ログ - ベーシック ティア (ID: 23155) | Azure>Insights>Containers>Networking>Flow Logs - Basic Tier | Basic |
| フロー ログ - 分析層 (ID: 23156) | Azure>Insights>Containers>Networking>Flow Logs - Analytics Tier | 分析 (デフォルト) |
どちらのダッシュボードにも、ネットワーク要求、応答、ドロップ、エラーなど、相互に通信している AKS ワークロードが表示されます。
ContainerNetworkLogs テーブル用に構成されたテーブル層に一致するダッシュボードを使用します。
Tip
ContainerNetworkLogs テーブルの既定値は Analytics レベルです。 コストを削減する場合は、監視対象範囲を失うことなく、Basic レベルに切り替えて、対応する Basic レベルダッシュボードを使用できます。 詳細については、「Log Analytics テーブル プランを参照してください。
Azure ポータルのダッシュボードには、次の主要なコンポーネントがあります。
ネットワーク正常性の概要。 上部のセクションには、異常をすばやく特定できるように、概要メトリック (フロー ログの合計、一意の要求、削除された要求、転送された要求) が表示されます。 統計情報はプロトコルによって分類されます。DNS 破棄要求、HTTP 2xx 応答、レイヤー 4 の要求と応答のレート、ドロップ数。 サービス依存関係グラフは、どのサービスが相互に通信するかを示し、ボトルネックや予期しないトラフィック パスを簡単に特定できるようにします。
フロー ログとエラー ログ。 ダッシュボードでは、フロー ログとエラー ログが個別のビューに分離されるため、通常のトラフィックを処理することなくエラーに集中できます。 組み込みのフィルターを使用して、プロトコル、名前空間、または判定によって結果を絞り込みます。 たとえば、DNS 解決エラーのトラブルシューティングを行うには、DNS プロトコルでエラー ログをフィルター処理します。
各ログ エントリには、調査中に特定のイベントを特定するのに役立つラベル、タイムスタンプ、およびソース/宛先の詳細が含まれています。
上位の名前空間、ワークロード、DNS エラー。 このセクションでは、最もアクティブな名前空間、トラフィックの最も高いワークロード、ポートの使用状況、および最も頻繁な DNS エラーについて説明します。 これを使用して、最も多くのトラフィックを生成するワークロードを特定し、破棄された要求をスポットし、プロトコルの分散 (TCP と UDP など) を比較します。 予期しないスパイクや未知の宛先など、ここでは通常とは異なるパターンは、構成の誤りやセキュリティ上の問題を示している可能性があります。
フロー ログの集計
ネットワーク フローはすぐに増加します。 マイクロサービスが 200 個あるクラスターでは、30 秒ごとに数十万のフロー レコードを生成できます。 生データをすべて格納するとコストがかかります。
たとえば、 client-1 と client-2 の両方が TCP 経由で server ポッドと通信するとします。 30 秒のウィンドウでは、ノード上の生フロー レコードは次のようになります。
| Source | 送信元ポート | Destination | 宛先ポート | プロトコル | フラグ |
|---|---|---|---|---|---|
| client-1 | 12345 | サーバー | 80 | TCP | SYN |
| サーバー | 80 | client-1 | 12345 | TCP | SYN-ACK |
| client-1 | 12345 | サーバー | 80 | TCP | ACK |
| client-1 | 12345 | サーバー | 80 | TCP | PSH |
| サーバー | 80 | client-1 | 12345 | TCP | ACK |
| client-2 | 23456 | サーバー | 80 | TCP | SYN |
| サーバー | 80 | client-2 | 23456 | TCP | SYN-ACK |
| client-2 | 23456 | サーバー | 80 | TCP | ACK |
| client-2 | 23456 | サーバー | 80 | TCP | PSH |
| サーバー | 80 | client-2 | 23456 | TCP | ACK |
集計では、これらの 10 個のレコードは次の 2 つになります。
| Source | 送信元ポート | Destination | 宛先ポート | プロトコル | 送信されたフロー | 受信したフロー |
|---|---|---|---|---|---|---|
| client-1 | 12345 | サーバー | 80 | TCP | 4 | 6 |
| client-2 | 23456 | サーバー | 80 | TCP | 4 | 6 |
フロー ログの集計では、同様のフローを要約されたレコードにグループ化することで、これに取り組みます。 各 30 秒のウィンドウでは、同じ集計キー フィールドを共有するフローが、それを表すフローの数を含む 1 つのレコードに結合されます。
集計キーは次のフィールドで構成されます。
| フィールド | Description |
|---|---|
verdict |
FORWARDED、DROPPED、またはエラー |
is_reply |
フローが要求 (false) か応答 (true) か |
drop_reason_desc |
パケットが破棄された理由 |
source.namespace |
ソースポッドのネームスペース |
destination.namespace |
宛先ポッドの名前空間 |
source.workloads |
ソース ワークロード (Deployment、StatefulSet、または DaemonSet) |
destination.workloads |
移行先ワークロード (Deployment、StatefulSet、または DaemonSet) |
source.identity |
ソース セキュリティ ID (常にフォールバックとして存在) |
destination.identity |
宛先セキュリティ ID (常にフォールバックとして存在) |
l4.TCP.destination_port |
TCP 宛先ポート |
l4.UDP.destination_port |
UDP 宛先ポート |
l7.http.code |
HTTP 応答コード (200、404、500 など) |
l7.dns.rcode |
DNS 応答コード (NOERROR、NXDOMAIN など) |
IP.ipVersion |
IPv4 または IPv6 |
IP.encrypted |
フローが暗号化されているかどうか (WireGuard/IPsec) |
source.cluster_name |
ソース クラスター名 |
destination.cluster_name |
宛先クラスター名 |
30 秒のウィンドウ内のすべてのこれらのフィールドに一致するフローは、1 つのレコードにマージされます。 これにより、データ量を大幅に削減しながら、必要なシグナル (どのサービスが通信するか、どのくらいの頻度で、どのようなエラーが発生したか、トラフィックが許可されたかブロックされたか) が保持されます。 ランダムにフローを破棄し、まれなセキュリティ イベントを見逃す可能性があるサンプリングとは異なり、集計ではパターン情報の 100% が保持されます。
重要なポイント:
- 集計は既定で有効にされ、構成されます。 これにより、手動でチューニングしなくても、ログストレージとインジェストのコストが削減されます。
-
includeFiltersCRD でContainerNetworkLogを介してキャプチャされるトラフィックを制御します。 - キャプチャされたフローの方が似ているため、フィルター (特定の名前空間またはサービス のペア) を狭くすると、通常、圧縮が向上します。
- 集約されたログでは、インジェスト量とストレージ コストを最小限に抑えるために、高カーディナリティとフローごとの属性 (個々のタイムスタンプ、ポッド IP、HTTP URL、DNS クエリ名など) がスキップされます。 これらは、高レベルの問題検出用に設計されています。 詳細なフロー分析と調査には、オンデマンド ログを使用します。
注
実際のストレージの削減は、フィルター構成、ワークロードの多様性、トラフィック パターンによって異なります。
オンデマンド ログ
オンデマンド ログを使用すると、事前の構成や永続的なストレージを使用せずに、フロー ログをリアルタイムでキャプチャして検査できます。 接続またはパフォーマンスの問題のトラブルシューティングを積極的に行っており、即時の可視性が必要な場合は、オンデマンド ログを使用します。
ACNS には、オンデマンド キャプチャ用の 2 つのツールが用意されています。 いずれかのツールを設定するには、「 オンデマンド ログ モードの構成」を参照してください。
Hubble CLI
Hubble CLI を使用すると、ターミナルから直接フロー ログのクエリ、フィルター処理、分析を行うことができます。 これは、アクティブなデバッグ セッション中に名前空間、ポッド ラベル、または判定によってトラフィックを分離するなど、きめ細かいフィルターが必要な場合に特に便利です。
Hubble UI
Hubble UI は、サービス間通信のグラフィカル ビューを提供します。 CLI コマンドを記述せずに、トラフィック パスを視覚的にトレースし、通信しているサービスを特定し、異常を特定する場合に適しています。
オンデマンド ログの主な利点
- 以前の構成は必要ありません。 カスタム リソースを定義したり、ストレージを設定したりせずに、フローのキャプチャをすぐに開始します。
- リアルタイムの可視性。 ライブ トラフィックを検査し、問題が発生した場合にパケット メタデータを表示します。
- 迅速なトラブルシューティング。 Hubble CLI を使用して対話形式でフローをフィルター処理するか、Hubble UI でサービス マップを視覚的に表示します。
- オーバーヘッドが少ない。 永続的なストレージは必要ないため、アドホック調査の継続的なコストは発生しません。
保存されたログに関する推奨事項
幅広いフィルターから始めて、絞り込みます。 フロー ログを初めて有効にする場合は、ワイド フィルターを使用して、キー名前空間全体のトラフィックをキャプチャします。 数日間構成を実行し、Log Analyticsで収集されたデータを確認します。 データ量、コスト、キャプチャされたフローが実際に必要なものと一致するかどうかを確認します。 その後、
includeFiltersを締めて、価値の高いトラフィックに集中し、ノイズをカットします。事前構築済みのダッシュボードを最初に使用します。 組み込みのAzure ポータル ダッシュボードには、サービス通信パターン、エラー率、DNS エラーなどの一般的なユース ケースが含まれています。 そこから開始します。 カスタム パネルまたはLog Analyticsクエリを追加するのは、事前に構築されたダッシュボードで提供されない可視性が必要な場合のみです。
定期的に確認します。 ワークロードとトラフィック パターンが変わると、フィルターの更新が必要になる場合があります。 データボリュームとフローカバレッジを定期的に確認して、適切なトラフィックを妥当なコストでキャプチャしていることを確認します。
制限事項
データプレーンと機能の必要条件:
- 保存されたログ モードは、Cilium データ プレーンでのみ機能します。
- レイヤー 7 のフロー ログは、レイヤー 7 ポリシーのサポートが有効になっている場合にのみキャプチャされます。 詳細については、「 レイヤ 7 ポリシーを設定する」を参照してください。
- DNS フローとメトリックは、Cilium 完全修飾ドメイン名 (FQDN) ネットワーク ポリシーが適用されている場合にのみキャプチャされます。 詳細については、「 FQDN ポリシーの構成」を参照してください。
集計のトレードオフ:
- フロー ログの集計では、個々のフロー タイムスタンプ、ポッドごとの IP アドレス、または HTTP URL や DNS クエリ名などのカーディナリティの高いフィールドは保持されません。 フローごとの調査には、オンデマンド ログを使用します。
ストレージとプラットフォーム:
-
/var/log/acns/hubble/のホスト ローカル ファイルは、ノードあたり 50 MB に制限され、自動ローテーションされます。 長期的なリテンション期間が必要な場合は、Azure Monitorを有効にするか (推奨)、ファイルを独自のログ サービスに転送します。 - 補助ログ テーブル プランはサポートされていません。
価格設定
Von Bedeutung
アドバンスト コンテナー ネットワークサービスは有料オファリングです。
価格の詳細については、「アドバンスト コンテナー ネットワークサービス - 価格」を参照してください。
関連コンテンツ
- コンテナー ネットワーク ログを設定する
- AKS 用の高度なコンテナー ネットワーク サービス
- 高度なコンテナネットワークサービスにおけるコンテナネットワーク監視
- 高度なコンテナネットワークサービスにおけるコンテナネットワークセキュリティ