VPC フローログを使用する

VPC フローログには、VM インスタンスによって送受信されたネットワーク フローのサンプルが記録されます。これには GKE ノードとして使用されるインスタンスも含まれます。これらのログは、ネットワーク モニタリング、フォレンジック、リアルタイム セキュリティ分析、および費用の最適化に使用できます。

このページは、VPC フローログで説明されているコンセプトを理解していることを前提としています。

VPC フローログを有効にする

VPC フローログを有効にすると、サブネット内のすべての VM に対して Logging を有効にすることになります。ただし、Logging に書き込まれる情報の量は削減されます。制御できるパラメータの詳細については、ログのサンプリングと集計をご覧ください。

メタデータ フィールドをカスタマイズする、またはログのフィルタリングを構成するには、gcloud CLI または API を使用します。

サブネットの作成時に VPC フローログを有効にする

コンソール

  1. Google Cloud コンソールの [VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  2. サブネットを追加するネットワークをクリックします。

  3. [サブネットを追加] をクリックします。

  4. [フローログ] で [オン] を選択します。

  5. ログのサンプリングと集計を調整する場合は、[ログを構成] をクリックして次のいずれかを調整します。

    • 集約の間隔
    • 最終ログエントリにメタデータを含めるかどうか。デフォルトでは、[メタデータを含める] にはすべてのフィールドが含まれます。
    • サンプルレート100% はすべてのエントリが保持されることを意味します。
  6. 必要に応じて他のフィールドに値を入力します。

  7. [追加] をクリックします。

gcloud

  1. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  2. 次のコマンドを実行します。

    gcloud compute networks subnets create SUBNET_NAME \
       --enable-flow-logs \
       [--logging-aggregation-interval=AGGREGATION_INTERVAL] \
       [--logging-flow-sampling=SAMPLE_RATE] \
       [--logging-filter-expr=FILTER_EXPRESSION] \
       [--logging-metadata=LOGGING_METADATA] \
       [--logging-metadata-fields=METADATA_FIELDS] \
       [other flags as needed]
    

    次のように置き換えます。

    • AGGREGATION_INTERVAL: サブネットのフローログの集計間隔を設定します。間隔は、5 秒(デフォルト)、30 秒、1 分、5 分、10 分、15 分のいずれかに設定できます。
    • SAMPLE_RATE: フロー サンプリング レート。フロー サンプリングは、0.0(サンプリングなし)から1.0(すべてのログ)の範囲で設定できます。デフォルトは 0.5 です。
    • FILTER_EXPRESSION: 保持するログを定義する式です。式は 2,048 文字以内に制限されています。詳細については、ログのフィルタリングをご覧ください。
    • LOGGING_METADATA: ログに含めるメタデータ アノテーション

      • include-all: すべてのメタデータ アノテーションを含める場合
      • exclude-all: すべてのメタデータ アノテーションを除外する場合(デフォルト)
      • custom: METADATA_FIELDS で指定するメタデータ フィールドのカスタムリストを含める場合
    • METADATA_FIELDS: ログに含めるメタデータ フィールドのカンマ区切りのリスト。例: src_instance,dst_instanceLOGGING_METADATAcustom に設定されている場合のみ設定できます。

API

新しいサブネットの作成時に VPC フローログを有効にします。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
{
  "logConfig": {
    "aggregationInterval": "AGGREGATION_INTERVAL",
    "flowSampling": SAMPLING_RATE,
    "filterExpr": EXPRESSION,
    "metadata": METADATA_SETTING,
    "metadataFields": METADATA_FIELDS,
    "enable": true
  },
  "ipCidrRange": "IP_RANGE",
  "network": "NETWORK_URL",
  "name": "SUBNET_NAME"
}

プレースホルダを有効な値に置き換えます。

  • PROJECT_ID は、サブネットが作成されるプロジェクトの ID です。
  • REGION は、サブネットが作成されるリージョンです。
  • AGGREGATION_INTERVAL は、サブネット内のフローログの集計間隔を設定します。間隔は次のいずれかに設定できます。INTERVAL_5_SECINTERVAL_30_SECINTERVAL_1_MININTERVAL_5_MININTERVAL_10_MININTERVAL_15_MIN
  • SAMPLING_RATE はフロー サンプリング レートです。フロー サンプリングは、0.0(サンプリングなし)から 1.0(すべてのログ)まで設定できます。デフォルトは .0.5 です。
  • EXPRESSION は、実際に書き込まれるログをフィルタリングするために使用するフィルタ式です。式は 2,048 文字以内に制限されています。詳細については、ログのフィルタリングをご覧ください。
  • METADATA_SETTING により、すべてのメタデータがログに記録されるか(INCLUDE_ALL_METADATA)、メタデータが記録されない(EXCLUDE_ALL_METADATA)か、特定のメタデータのみがログに記録されるか(CUSTOM_METADATA)を指定します。このフィールドが CUSTOM_METADATA に設定されている場合は、metadataFields フィールドも設定します。デフォルトは EXCLUDE_ALL_METADATA です。詳細については、メタデータのアノテーションをご覧ください。

  • METADATA_FIELDS は、metadata: CUSTOM_METADATA を設定した場合に取得するメタデータ フィールドです。これは、src_instance, src_vpc.project_id などのメタデータ フィールドのカンマ区切りのリストです。

  • IP_RANGE は、サブネットのプライマリ内部 IP アドレスの範囲です。

  • NETWORK_URL は、サブネットが作成される VPC ネットワーク URL です。

  • SUBNET_NAME はサブネットの名前です。

詳細については、subnetworks.insert メソッドをご覧ください。

Terraform

Terraform モジュールを使用して、カスタムモードの VPC ネットワークとサブネットを作成できます。

次の例では、3 つのサブネットを作成します。

  • subnet-01 では VPC フローログが無効になっています。サブネットを作成すると、明示的に有効にしない限り、VPC フローログは無効になります。
  • subnet-02 では、デフォルトのフローログ設定で VPC フローログが有効になっています。
  • subnet-03 では、一部のカスタム設定で VPC フローログが有効になっています。
module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 9.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "my-custom-mode-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "subnet-01"
      subnet_ip     = "10.10.10.0/24"
      subnet_region = "us-west1"
    },
    {
      subnet_name           = "subnet-02"
      subnet_ip             = "10.10.20.0/24"
      subnet_region         = "us-west1"
      subnet_private_access = "true"
      subnet_flow_logs      = "true"
    },
    {
      subnet_name               = "subnet-03"
      subnet_ip                 = "10.10.30.0/24"
      subnet_region             = "us-west1"
      subnet_flow_logs          = "true"
      subnet_flow_logs_interval = "INTERVAL_10_MIN"
      subnet_flow_logs_sampling = 0.7
      subnet_flow_logs_metadata = "INCLUDE_ALL_METADATA"
      subnet_flow_logs_filter   = "false"
    }
  ]
}

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

既存のサブネットの VPC フローログを有効にする

コンソール

  1. Google Cloud コンソールの [VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  2. 更新するサブネットをクリックします。

  3. [編集] をクリックします。

  4. [フローログ] で [オン] を選択します。

  5. ログのサンプリングと集計を調整する場合は、[ログを構成] をクリックして次のいずれかを調整します。

    • 集約の間隔
    • 最終ログエントリにメタデータを含めるかどうか。デフォルトでは、[メタデータを含める] にはすべてのフィールドが含まれます。
    • サンプルレート100% はすべてのエントリが保持されることを意味します。
  6. [保存] をクリックします。

gcloud

  1. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  2. 次のコマンドを実行します。

    gcloud compute networks subnets update SUBNET_NAME \
       --enable-flow-logs \
       [--logging-aggregation-interval=AGGREGATION_INTERVAL] \
       [--logging-flow-sampling=SAMPLE_RATE] \
       [--logging-filter-expr=FILTER_EXPRESSION] \
       [--logging-metadata=LOGGING_METADATA] \
       [--logging-metadata-fields=METADATA_FIELDS] \
       [other flags as needed]
    

    次のように置き換えます。

    • AGGREGATION_INTERVAL: サブネットのフローログの集計間隔を設定します。間隔は、5 秒(デフォルト)、30 秒、1 分、5 分、10 分、15 分のいずれかに設定できます。
    • SAMPLE_RATE: フロー サンプリング レート。フロー サンプリングは、0.0(サンプリングなし)から1.0(すべてのログ)の範囲で設定できます。デフォルトは 0.5 です。
    • FILTER_EXPRESSION は、保持するログを定義する式です。式は 2,048 文字以内に制限されています。詳細については、ログのフィルタリングをご覧ください。
    • LOGGING_METADATA: ログに含めるメタデータ アノテーション

      • include-all: すべてのメタデータ アノテーションを含める場合
      • exclude-all: すべてのメタデータ アノテーションを除外する場合(デフォルト)
      • custom: METADATA_FIELDS で指定するメタデータ フィールドのカスタムリストを含める場合
    • METADATA_FIELDS: ログに含めるメタデータ フィールドのカンマ区切りのリスト。例: src_instance,dst_instanceLOGGING_METADATAcustom に設定されている場合のみ設定できます。

API

既存のサブネットの VPC フローログを有効にします。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
{
  "logConfig": {
    "enable": true
    ...other logging fields.
  },
  "fingerprint": "SUBNETWORK_FINGERPRINT"
}

プレースホルダを有効な値に置き換えます。

  • PROJECT_ID は、サブネットが配置されているプロジェクトの ID です。
  • REGION は、サブネットが存在するリージョンです。
  • SUBNET_NAME は既存のサブネットの名前です。
  • SUBNET_FINGERPRINT は、既存のサブネットのフィンガー プリント ID です。サブネットを記述するときに指定します。
  • 他のロギング フィールドについては、サブネット作成時の VPC フローログの有効化を参照してください。

詳細については、subnetworks.patch メソッドをご覧ください。

既存のサブネットの推定ログボリュームを表示する

Google Cloud コンソールでは、既存のサブネットのログボリュームを推定することにより、フローログを有効にする費用を見積もることができます。この推定値は、過去 7 日にわたり各サブネットで 5 秒間隔で取得されたフローに基づきます。また、各ログのサイズは、メタデータ アノテーションを有効にするかどうかによって異なります。

コンソール

  1. Google Cloud コンソールの [VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  2. 費用を推定するサブネットをクリックします。

  3. [編集] をクリックします。

  4. [フローログ] で [オン] を選択します。

  5. [ログを構成] をクリックします。

  6. [1 日あたりの生成ログの推定数] で、推定値を確認します。

  7. 変更が保存されないように [キャンセル] をクリックします。

VPC フローログが有効になっているサブネットを表示する

VPC フローログが有効になっているネットワーク内のサブネットを確認できます。

コンソール

  1. Google Cloud コンソールの [VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  2. [フローログ] 列を表示して、Logging がオンかオフかを確認します。

gcloud

  1. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  2. 次のコマンドを実行します。

    gcloud compute networks subnets list \
       --project PROJECT_ID \
       --network="NETWORK" \
       --format="csv(name,region,logConfig.enable)"

    次のように置き換えます。

    • PROJECT_ID: クエリするプロジェクトの ID。
    • NETWORK: サブネットを含むネットワークの名前。

VPC フローログ パラメータを更新する

ログ サンプリング パラメータを変更できます。制御できるパラメータの詳細については、ログのサンプリングと集計をご覧ください。

メタデータ フィールドをカスタマイズする、またはログのフィルタリングを構成するには、gcloud CLI または API を使用します。

コンソール

  1. Google Cloud コンソールの [VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  2. 更新するサブネットをクリックします。

  3. [編集] をクリックします。

  4. ログのサンプリングと集計を調整する場合は、[ログを構成] をクリックして次のいずれかを調整します。

    • 集約の間隔
    • 最終ログエントリにメタデータを含めるかどうか。デフォルトでは、[メタデータを含める] にはすべてのフィールドが含まれます。
    • サンプルレート100% はすべてのエントリが保持されることを意味します。
  5. [保存] をクリックします。

gcloud

  1. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  2. 次のコマンドを実行します。

    gcloud compute networks subnets update SUBNET_NAME \
       [--logging-aggregation-interval=AGGREGATION_INTERVAL] \
       [--logging-flow-sampling=SAMPLE_RATE] \
       [--logging-filter-expr=FILTER_EXPRESSION] \
       [--logging-metadata=LOGGING_METADATA] \
       [--logging-metadata-fields=METADATA_FIELDS] \
    

    次のように置き換えます。

    • AGGREGATION_INTERVAL: サブネットのフローログの集計間隔を設定します。間隔は、5 秒(デフォルト)、30 秒、1 分、5 分、10 分、15 分のいずれかに設定できます。
    • SAMPLE_RATE: フロー サンプリング レート。フロー サンプリングは、0.0(サンプリングなし)から1.0(すべてのログ)の範囲で設定できます。デフォルトは 0.5 です。
    • FILTER_EXPRESSION は、保持するログを定義する式です。式は 2,048 文字以内に制限されています。詳細については、ログのフィルタリングをご覧ください。
    • LOGGING_METADATA: ログに含めるメタデータ アノテーション

      • include-all: すべてのメタデータ アノテーションを含める場合
      • exclude-all: すべてのメタデータ アノテーションを除外する場合(デフォルト)
      • custom: METADATA_FIELDS で指定するメタデータ フィールドのカスタムリストを含める場合
    • METADATA_FIELDS: ログに含めるメタデータ フィールドのカンマ区切りのリスト。例: src_instance,dst_instanceLOGGING_METADATAcustom に設定されている場合のみ設定できます。

API

ログ サンプリング フィールドを変更して、VPC フローログの動作を更新します。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
{
  "logConfig": {
    ...fields to modify
  },
  "fingerprint": "SUBNETWORK_FINGERPRINT"
}

プレースホルダを有効な値に置き換えます。

  • PROJECT_ID は、サブネットが配置されているプロジェクトの ID です。
  • REGION は、サブネットが存在するリージョンです。
  • SUBNET_NAME は既存のサブネットの名前です。
  • SUBNET_FINGERPRINT は、既存のサブネットのフィンガー プリント ID です。サブネットを記述するときに指定します。
  • 変更可能なフィールドについては、サブネット作成時の VPC フローログの有効化を参照してください。

詳細については、subnetworks.patch メソッドをご覧ください。

サブネットの VPC フローログを無効にする

コンソール

  1. Google Cloud コンソールの [VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  2. 更新するサブネットをクリックします。

  3. [編集] をクリックします。

  4. [フローログ] で [オフ] を選択します。

  5. [保存] をクリックします。

gcloud

  1. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  2. 次のコマンドを実行します。

    gcloud compute networks subnets update SUBNET_NAME \
       --no-enable-flow-logs
    

API

ログレコードの収集を停止するには、サブネットの VPC フローログを無効にします。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
{
  "logConfig": {
    "enable": false
  },
  "fingerprint": "SUBNETWORK_FINGERPRINT"
}

プレースホルダを有効な値に置き換えます。

  • PROJECT_ID は、サブネットが配置されているプロジェクトの ID です。
  • REGION は、サブネットが存在するリージョンです。
  • SUBNET_NAME は既存のサブネットの名前です。
  • SUBNET_FINGERPRINT は、既存のサブネットのフィンガー プリント ID です。サブネットを記述するときに指定します。

詳細については、subnetworks.patch メソッドをご覧ください。

Logging を使用してログにアクセスする

VPC フローログを表示するには、ログ エクスプローラを使用します。次のクエリを使用するには、プロジェクトのプロジェクト ID が必要です。

IAM を構成する

ロギングのアクセス制御を構成するには、Logging のアクセス制御ガイドをご覧ください。

すべてのフローログにアクセスする

コンソール

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. [リソース] をクリックします。

  3. [リソースの選択] リストで [サブネットワーク] をクリックし、[適用] をクリックします。

  4. [ログ名] をクリックします。

  5. [ログ名の選択] リストで [vpc_flows] をクリックし、[適用] をクリックします。

または

コンソール

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. [クエリ] ペインにクエリ エディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。

  3. クエリエディタのフィールドに次の内容を貼り付けます。PROJECT_ID は実際のプロジェクト ID で置き換えます。

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows"
    

  4. [クエリを実行] をクリックします。

特定のサブネットのログにアクセスする

コンソール

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. [リソース] をクリックします。

  3. [リソースの選択] リストで、[サブネットワーク] をクリックします。

  4. [サブネットワーク ID] リストでサブネットを選択し、[適用] をクリックします。

  5. [ログ名の選択] リストで [vpc_flows] をクリックし、[適用] をクリックします。

または

コンソール

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. [クエリ] ペインにクエリ エディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。

  3. クエリエディタのフィールドに次の内容を貼り付けます。PROJECT_ID をプロジェクト ID に、SUBNET_NAME をサブネットワークに置き換えます。

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows"
    resource.labels.subnetwork_name="SUBNET_NAME"
    

  4. [クエリを実行] をクリックします。

特定の VM のログにアクセスする

コンソール

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. [クエリ] ペインにクエリ エディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。

  3. クエリエディタのフィールドに次の内容を貼り付けます。PROJECT_ID をプロジェクト ID に、VM_NAME を VM の名前に置き換えます。

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows"
    jsonPayload.src_instance.vm_name="VM_NAME"
    

  4. [クエリを実行] をクリックします。

特定のサブネット範囲へのトラフィックのログにアクセスする

コンソール

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. [クエリ] ペインにクエリ エディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。

  3. クエリエディタのフィールドに次の内容を貼り付けます。PROJECT_ID をプロジェクト ID に、SUBNET_RANGE192.168.1.0/24 などの CIDR 範囲に置き換えます。

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows"
    ip_in_net(jsonPayload.connection.dest_ip, SUBNET_RANGE)
    

  4. [クエリを実行] をクリックします。

特定の GKE クラスタのログにアクセスする

コンソール

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. [クエリ] ペインにクエリ エディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。

  3. クエリエディタのフィールドに次の内容を貼り付けます。PROJECT_ID をプロジェクト ID に、SUBNET_NAME をサブネットの名前に置き換えます。

    resource.type="k8s_cluster"
    logName="projects/PROJECT_ID/logs/vpc_flows"
    resource.labels.cluster_name="CLUSTER_NAME"
    

  4. [クエリを実行] をクリックします。

サブネットからの下り(外向き)トラフィックのみのログにアクセスする

コンソール

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. [クエリ] ペインにクエリ エディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。

  3. クエリエディタのフィールドに次の内容を貼り付けます。PROJECT_ID をプロジェクトの ID に、SUBNET_NAME を下り(外向き)トラフィックを表示するサブネットの名前に置き換えます。

    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" AND
    jsonPayload.reporter="SRC" AND
    jsonPayload.src_vpc.subnetwork_name="SUBNET_NAME" AND
    (jsonPayload.dest_vpc.subnetwork_name!="SUBNET_NAME" OR NOT jsonPayload.dest_vpc.subnetwork_name:*)
    

  4. [クエリを実行] をクリックします。

VPC ネットワークからのすべての下り(外向き)トラフィックのログにアクセスする

コンソール

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. [クエリ] ペインにクエリ エディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。

  3. クエリエディタのフィールドに次の内容を貼り付けます。PROJECT_ID をプロジェクトの ID に、VPC_NAME を VPC ネットワークの名前に置き換えます。

    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" AND
    jsonPayload.reporter="SRC" AND
    jsonPayload.src_vpc.vpc_name="VPC_NAME" AND
    (jsonPayload.dest_vpc.vpc_name!="VPC_NAME" OR NOT jsonPayload.dest_vpc:*)
    
  4. [クエリを実行] をクリックします。

特定のポートとプロトコルのログにアクセスする

個別の宛先ポートの場合

コンソール

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. [クエリ] ペインにクエリ エディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。

  3. クエリエディタのフィールドに次の内容を貼り付けます。PROJECT_ID をプロジェクト ID に、PORT を宛先ポートに、PROTOCOL をプロトコルに置き換えます。

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows"
    jsonPayload.connection.dest_port=PORT
    jsonPayload.connection.protocol=PROTOCOL
    

  4. [クエリを実行] をクリックします。

複数の宛先ポートの場合

コンソール

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. [クエリ] ペインにクエリ エディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。

  3. クエリエディタのフィールドに次の内容を貼り付けます。PROJECT_ID をプロジェクト ID に、PORT1PORT2 を宛先ポートに、PROTOCOL をプロトコルに置き換えます。

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows"
    jsonPayload.connection.dest_port=(PORT1 OR PORT2)
    jsonPayload.connection.protocol=PROTOCOL
    

  4. [クエリを実行] をクリックします。

BigQuery、Pub/Sub、カスタム ターゲットにログを転送する

Logging のドキュメントのルーティングとストレージの概要の説明に従って、Logging から任意の宛先にフローログを転送できます。フィルタの例については、前のセクションをご覧ください。

トラブルシューティング

Logging で gce_subnetwork リソースの下に vpc_flows が表示されない

  • 指定したサブネットで Logging が有効になっていることを確認します。
  • VPC フローがサポートされるのは VPC ネットワークのみです。レガシー ネットワークを使用している場合、ログは表示されません。
  • 共有 VPC ネットワークでは、ログはホスト プロジェクトでのみ表示され、サービス プロジェクトでは表示されません。ホスト プロジェクトのログを調べていることを確認してください。
  • Logging の除外フィルタは、指定されたログをブロックします。VPC フローログを破棄する除外ルールが存在しないことを確認してください。
    1. [リソースの使用量] に移動します。
    2. [除外] タブをクリックします。
    3. VPC フローログを破棄する除外ルールが存在しないことを確認します。

一部のログで RTT 値またはバイト値が存在しない

  • RTT をキャプチャするのに十分なパケットがサンプリングされなかった場合、RTT の測定値が存在しないことがあります。この現象は、接続が少量である場合に発生する可能性が高くなります。
  • RTT 値は TCP フローでのみ使用できます。
  • 一部のパケットはペイロードなしで送信されます。ヘッダーのみのパケットがサンプリングされた場合、バイト値は 0 になります。

一部のフローが見つからない

  • 上り(内向き)パケットは、上り(内向き)の VPC ファイアウォール ルールの後にサンプリングされます。ログに記録されると想定したパケットが、いずれかの上り(内向き)ファイアウォール ルールによって拒否されていないかどうか確認してください。VPC ファイアウォール ルールが上り(内向き)パケットをブロックしているかどうか不明な場合は、ファイアウォール ルールのロギングを有効にしてログを調べてください。
  • サポートされているのは TCP、UDP、ICMP、ESP、GRE プロトコルのみです。VPC フローログは他のプロトコルをサポートしていません。
  • ログはサンプリングされます。非常に少量のフローでは、一部のパケットが失われる場合があります。

一部のログで GKE アノテーションが見つからない

GKE クラスタがサポート対象バージョンであることを確認してください。

一部の GKE フローのログが見つからない

クラスタでノード内の可視化が有効になっていることを確認してください。有効になっていない場合、同じノード上の Pod 間のフローはログに記録されません。

フローログを有効にした場合でも無効として表示される

  • 内部アプリケーション ロードバランサのプロキシ専用サブネットを構成し、gcloud compute networks subnets コマンドを使用して VPC フローログを有効にした場合、コマンドは成功したように見えますが、フローログは実際には有効になりません。--purpose=INTERNAL_HTTPS_LOAD_BALANCER フラグも指定した場合、--enable-flow-logs フラグは有効になりません。

    Google Cloud コンソールまたは API を使用してフローログを有効にすると、「Invalid value for field 'resource.enableFlowLogs': 'true'.Invalid field set in subnetwork with purpose INTERNAL_HTTPS_LOAD_BALANCER.」というエラー メッセージが表示されます。

    プロキシ専用サブネットには VM がないため、VPC フローログはサポートされません。これは想定の挙動です。

次のステップ