Flow Analyzer を使用すると、Virtual Private Cloud(VPC)Flow Logs を分析するための複雑な SQL クエリを記述することなく、VPC のトラフィック フローを迅速かつ効率的に把握できます。Flow Analyzer では、5 タプルの粒度(送信元 IP、宛先 IP、送信元ポート、宛先ポート、プロトコル)で、独自のネットワーク トラフィック分析を実行できます。
Log Analytics を使用して開発され、BigQuery を搭載している Flow Analyzer を利用することで、VM インスタンスのインバウンド トラフィックとアウトバウンド トラフィックの詳細な分析を行えます。これにより、ネットワーク デプロイのモニタリング、トラブルシューティング、最適化を行い、パフォーマンスを向上させ、セキュリティを強化して、コンプライアンスの確保と費用の削減を実現できます。
Flow Analyzer は、ログバケット(レコード形式)に保存された VPC Flow Logs のデータを分析します。Flow Analyzer を使用するには、VPC Flow Logs を含むログバケットがあるプロジェクトを選択する必要があります。詳細については、VPC Flow Logs の概要をご覧ください。VPC Flow Logs は、ネットワーク モニタリング、フォレンジック、リアルタイム セキュリティ分析、費用の最適化に使用できます。
Flow Analyzer は、VPC Flow Logs に含まれるフィールドに対してクエリを実行します。詳細については、VPC Flow Logs の主要なプロパティをご覧ください。
Flow Analyzer を使って次のタスクを実施できます。
- VPC Flow Logs に対して単純なクエリを構築して実行する
- VPC Flow Logs のクエリ用に SQL フィルタを(WHERE ステートメントを使用して)作成する
- 選択したフィールドを使用して結果を整理し、合計トラフィックと集計パケットを使用してクエリ結果を並べ替える
- 選択した時間間隔でトラフィックを表示する
- 時間の経過とともに上位 5 つのトラフィック フローをグラフィカル形式で、他のトラフィックと比較する
- 選択した期間に集計されたトラフィック量が最も多いリソースを表形式で表示する
- クエリ結果から、特定の送信元と宛先のペア間のトラフィックの詳細を表示する
- VPC Flow Logs で使用可能な残りのフィールドを使用して、クエリ結果をドリルダウンする
仕組み
VPC Flow Logs は、VM インスタンスや Google Kubernetes Engine ノードなどの VPC リソースから送受信されるネットワーク フローのサンプルを記録します。
フローログは Cloud Logging で表示でき、Logging のエクスポートが対応している任意の宛先にエクスポートできます。Log Analytics を使用してログデータを分析するクエリを実行し、クエリ結果をグラフとテーブルの形式で表示できます。
Flow Analyzer は、Log Analytics を使用して VPC Flow Logs に対してクエリを実行し、最高データフロー グラフやすべてのデータフローの詳細を提供するテーブルなどの情報を提供することで、トラフィック フローの詳細を確認できます。
クエリ コンポーネント
トラフィック フローを分析して理解するには、VPC Flow Logs でクエリを実行する必要があります。Flow Analyzer は、クエリの作成、表示オプションのカスタマイズ、ドリルダウンにより、トラフィック フローの表示とモニタリングに役立ちます。
トラフィックの集計
VPC トラフィック フローを分析するには、リソース間のフローをフィルタする集計方法を決める必要があります。Flow Analyzer は、集計用のフローログを次のように整理します。
- 送信元と宛先: このオプションでは、VPC Flow Logs に含まれる SRC と DEST の情報が使用されます。このビューでは、送信元から宛先へのトラフィックが集計されます。
- クライアントとサーバー: このオプションでは、接続のイニシエータを検索します。ポート番号が小さいリソースがサーバーとみなされます。また、サービスはリクエストを開始しないため、gke_service 定義があるリソースをサーバーとみなします。このビューには、双方向のトラフィックが集約されます。
期間セレクタ
デフォルトの期間は 1 時間ですが、プリセット時間のオプションから選択することも、カスタムの開始時刻と終了時刻を指定することも可能で、期間セレクタを使用して特定のタイムスタンプを中心に期間を設定することもできます。たとえば、過去 1 週間のデータを表示する場合は、期間セレクタから [過去 1 週間] を選択します。
期間セレクタを使用してタイムゾーンの設定を行うこともできます。
基本フィルタ
基本フィルタを使用すると、クエリのスコープを定義できます。クエリ結果には、選択したフィルタに一致するフローのみが表示されます。次のフィルタを選択できます。
- [送信元] と [宛先]([トラフィックの集計] が [送信元 - 宛先] に設定されている場合)
- クライアントとサーバー([トラフィックの集計] が [クライアント - サーバー] に設定されている場合)
- フロー パラメータ
各 [フィルタ] リストには、複数のフィルタ式を追加できます。同じフィルタに複数の値を選択すると、OR 演算子が使用されます。複数のフィルタを選択すると、AND 演算子が使用されます。
たとえば、2 つの IP アドレス値(10.10.0.10
と 10.10.0.20
)と 2 つの Country 値(usa
と fra
)を選択した場合は、フィルタ ロジック (IP=10.10.0.10 OR IP=10.10.0.20) AND (Country=usa OR Country=fra)
がクエリに適用されます。
基本的なフィルタを使用してクエリを作成して実行するには、クエリを作成して実行するをご覧ください。
SQL フィルタ
複雑なクエリを作成するには、SQL フィルタを使用します。複雑なクエリを使用すると、次のようなタスクを実施できます。
- フィールド値を相互比較する
- AND/OR とネストされた OR 演算を使用して複雑なブール論理を構築する
- BigQuery 関数を使用した IP アドレスに対し複雑なオペレーションを実行する
SQL フィルタクエリでは BigQuery SQL 構文が使用されます。詳細については、BigQuery SQL 構文をご覧ください。
フィルタ式の構文と例を表示するには、[フィルタ式の構文と例] をクリックします。
SQL フィルタを使用してクエリを作成し実行するには、SQL クエリを作成して実行するをご覧ください。
クエリ結果
クエリ結果には次のコンポーネントが含まれます。
- 最高データフロー グラフ: トラフィックの上位 5 つのトラフィック フローを残りのトラフィックと一緒に表示します。このグラフを使用すると、トラフィックの急増などの傾向を把握できます。
- すべてのデータフロー テーブル: 選択した期間で集計された最大 10,000 行までの上位のトラフィック フローが表示されます。このテーブルには、クエリのフィルタを定義するときにフローを整理するために選択したフィールドが表示されます。
表示オプション
クエリを実行した後、さまざまな表示オプションを使用して結果をさらに絞り込むことができます。新しく選択したオプションが反映されるように、グラフと表の両方が更新されます。カスタム オプションを選択してクエリを実行するには、表示オプションをカスタマイズするをご覧ください。
指標タイプ
次のいずれかの指標タイプを表示できます。
送信バイト数: ペイロード ボリュームに関する情報が含まれます。ヘッダーは含まれません。一部のパケットにはヘッダーのみがあり、ペイロードが含まれていないため、この指標値はゼロになる場合があります。
送信されたパケット数: 送信元から宛先に送信されたパケット数を示します。
どちらの指標タイプでも、追加の指標集計を選択できます。
指標の集計
指標の集計は次の方法で表示できます。
指標として [送信バイト数] を選択し、トラフィックの集計として [送信元と送信先] を選択した場合は、次のオプションを使用できます。
- 合計トラフィック: デフォルトで常に有効になっており、選択した期間の合計トラフィックが表示されます。
- 平均トラフィック レート: 選択した期間の平均トラフィック レート(1 秒あたりのバイト数)を示します。トラフィックは観測されたアライメント期間に対してのみ計算されます。詳細については、アライメント期間をご覧ください。
- トラフィック レートの中央値: 選択した期間のトラフィック レートの中央値(1 秒あたりのバイト数)を示します。トラフィックが観測されたアライメント期間に対してのみ計算されます。詳細については、アライメント期間をご覧ください。
- P95 トラフィック レート: 選択した期間の 95 パーセンタイル トラフィック レート(1 秒あたりのバイト数)を示します。トラフィックは観測されたアライメント期間に対してのみ計算されます。詳細については、アライメント期間をご覧ください。
- 最大トラフィック レート: 選択した期間の最大トラフィック レート(1 秒あたりのバイト数)が表示されます。
指標として [送信パケット数] を選択し、トラフィックの集計として [送信元と送信先] を選択した場合は、次のオプションを使用できます。
- パケットの集計: 選択した期間に送信されたパケットの数が表示されます。デフォルトで有効になっています。
- 平均パケット率: 選択した期間の平均パケット率が表示されます。トラフィックが観測されたアライメント期間に対してのみ計算されます。詳細については、アライメント期間をご覧ください。
- パケット率の中央値: 選択した期間のパケット率の中央値を表示します。トラフィックが観測されたアライメント期間に対してのみ計算されます。詳細については、アライメント期間をご覧ください。
- P95 パケット率: 選択した期間の 95 パーセンタイル パケット率を示します。トラフィックが観測されたアライメント期間に対してのみ計算されます。詳細については、アライメント期間をご覧ください。
- 最大パケット率: 選択した期間の最大パケット率が表示されます。
アライメント期間
グラフの詳細の時間範囲は、5 秒から 1 日の間で選択できます。自動モードでは、選択した期間の長さに応じて最適なアライメント期間が選択されます。
タイムライン上の各ポイントは、特定の期間の集計データを表します。この期間の長さは、アライメント期間と呼ばれます。
アライメント期間の値が小さくなると、パフォーマンスは低下します。アライメント期間の値が大きいほど、グラフの粒度は細かくなります。値の高い短時間の急増は表示されない場合があります。
期間が長い場合、短いアライメント期間は役に立ちません。たとえば、30 日の期間で 1 分間のアライメントを選択すると、Flow Analyzer は 43,000 個を超えるデータポイントを生成します。これは 4K ディスプレイの 10 倍の画素数なので、すべての詳細を表示することはできず、一部のオプションは長時間使用できません。
サンプリングの実行方法と、クエリ結果を表示するためのアライメント期間の決定方法について詳しくは、指標とアライメント期間をご覧ください。
サンプリング ポイント
VM 間のネットワーク通信の場合、フローログは、トラフィックを送受信する両方の VM で(サンプリングが適用された状態で)使用できます。VPC Flow Logs が有効になっているサブネット内に両方のエンドポイント VM がある場合、同じフローが 2 回報告されます。次の 4 つの方法のいずれかを選択して、計算された指標に寄与する VPC Flow Logs と、それらの評価方法を決定できます。
- 送信元エンドポイント: フローの送信元エンドポイントで報告された送信バイト数または送信パケット数
- 宛先エンドポイント: フローの宛先エンドポイントで報告された送信バイト数または送信パケット数
- 送信元エンドポイントと宛先エンドポイントの合計: フローの両方のエンドポイントで報告された送信バイト数または送信パケット数の合計
- 送信元エンドポイントと宛先エンドポイントの平均: VPC Flow Logs で送信元と宛先の両方の情報が利用できる場合に、フローの両方のエンドポイントで報告された送信バイト数または送信パケット数の平均
トラフィックの重複除去
送信元 VM と宛先 VM で報告されたトラフィックが 2 回カウントされないようにするには、[送信元エンドポイントと宛先エンドポイントの平均] サンプリング オプションを選択します。Flow Analyzer は、各アライメント期間内で同等のフローを識別し、報告された指標値(バイト数とパケット数)の平均を計算します。
同等のフローが SRC と DEST の両方で報告されるアライメント期間では、特定のアライメント期間に起因するすべてのトラフィックが 2 で除算されます。
フローの詳細を表示する
[すべてのデータフロー] テーブルで、任意のフローの [詳細] をクリックします。[フロー詳細] パネルが表示されます。このパネルには、送信元、宛先、トラフィック、ドリルダウン オプション、下り(外向き)自律システム(AS)パスなどの情報が表示されます。
ドリルダウン ビュー
追加フィールドを使用して選択したトラフィック フローを分割することで、ドリルダウンできます。たとえば、 Google Cloud ゾーン X からゾーン Y への 1,000 GiB のトラフィックに関する一般的な詳細がフローに含まれる場合、送信元 IP アドレスなどの別のフィールドを使用してドリルダウンできます。結果には、元のフローを構成する複数の IP アドレスが含まれます。
ドリルダウン コンポーネントに表示されるフィールドは、次のように選択されます。
- フローの詳細にアクセスすると、Flow Analyzer でいくつかのクエリが実行されます。各クエリは、VPC Flow Logs で使用可能で、元のクエリではまだ使用されていないフィールドを使用して、選択したフローのドリルダウンを試みます。たとえば、実行されたクエリに IP アドレスの詳細がすでに含まれている場合、このフィールドを使用してクエリを再度実行する必要はありません。また、このフィールドを使用してドリルダウンすることもできません。
- 追加のクエリのいずれかが単一のフィールド値を返した場合、その値は、以前にフェッチされていなくても、送信元と宛先の詳細セクションに追加されます。
- クエリ結果に複数のフィールド値が含まれている場合は、対応するフィールドがドリルダウン リストに表示されます。
ドリルダウン リストでフィールドを選択すると、ドリルダウン テーブルとグラフが更新され、上位 3 つのトラフィック フローが表示されます。
[過去と比較] 切り替えを使用することもできます。この機能を選択すると、6 本の線が表示されます。ドリルダウンからの上位 3 人のトーカーを表す 3 本の実線と、過去のトラフィックを表す対応する色の 3 本の破線です。
他のフィールドを使用してトラフィック フローをドリルダウンするには、トラフィック フローをドリルダウンするをご覧ください。
下り(外向き)AS パスのビュー
[下り(外向き)AS パス] タブでは、下り(外向き)パケットが通過して Google Cloudのネットワーク外の宛先に到達する AS パスを確認できます。AS パスには複数の自律システム番号(ASN)を含めることができます。
[下り(外向き)AS パス] タブに表示される AS の詳細は、[フロー パラメータ] リストの [下り(外向き)AS パス] フィルタを使用して制御します。たとえば、[比較] フィールドの [次より長い] オプションと [次より短い] オプションを使用すると、AS パスあたりの ASN の数を指定できます。特定の ASN を含む AS パスを表示するには、[最初の ASN である] または [ASN を含む] オプションを使用します。
下り(外向き)AS パスのグラフのエッジには、フローログの数によって重みが付けられます。グラフの AS パスでは、エッジはエッジが接続する両方の ASN を含むフローログの数を表します。下り(外向き)AS パスのグラフに表示されるデータは、下り(外向き)AS パスのフィルタ オプションと、クエリの実行時に選択した期間に基づいて変化します。
ログ分析で探索
元の SQL クエリは、ログ分析で確認できます。
高度な分析を行う場合は、トラフィックの可視化に使用する SQL コードを直接変更できます。[ログ分析で探索] 機能を使用すると、事前入力されたクエリで [ログ分析] ページが表示されます。
次のステップ
- 指標とアライメント期間
- トラフィック フローを分析する
- ログ分析を有効にする
- 一元的なバケットを構成する
- Flow Analyzer から接続テストを実施する
- トラフィック フローをモニタリングする
- Flow Analyzer でデータの問題をトラブルシューティングする