フローログにアクセスする

このページでは、Cloud Logging を使用してフローログにアクセスする方法について説明します。

ログ エクスプローラでフローログにアクセスする

VPC Flow Logs は、ログレポーターの Google Cloud プロジェクトにログを書き込みます。フローログは、ログ エクスプローラで表示できます。VPC Flow Logs は、次のログを使用してログエントリを収集します。

  • networkmanagement.googleapis.com/vpc_flows ログは、Virtual Private Cloud(VPC)ネットワーク、サブネット、Cloud Interconnect の VLAN アタッチメント、Cloud VPN トンネルのログエントリを収集します。
  • compute.googleapis.com/vpc_flows ログは、サブネットのログエントリを収集します。このログは、Compute Engine API を使用してサブネットの VPC Flow Logs を有効にした場合にのみ生成されます。

IAM を構成する

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

リソース フィルタを使用してフローログを表示する

リソース フィルタを使用して Google Cloud プロジェクトのフローログを表示するには、次のセクションをご覧ください。クエリを使用してフローログをフィルタするで説明されているように、ログ エクスプローラのクエリを使用して、これらのログを表示することもできます。

すべての構成のフローログを表示する(networkmanagement.googleapis.com/vpc_flows

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

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

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

  3. [リソースの選択] リストで [VPC Flow Logs 構成] をクリックし、[適用] をクリックします。

特定の構成のフローログを表示する(networkmanagement.googleapis.com/vpc_flows

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

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

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

  3. [リソースの選択] リストで [VPC Flow Logs 構成] をクリックし、表示する VPC Flow Logs 構成を選択します。

  4. [適用] をクリックします。

すべての構成のフローログを表示する(compute.googleapis.com/vpc_flows

Compute Engine API を使用して VPC Flow Logs を有効にした場合は、次の手順に沿って操作します。

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

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

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

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

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

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

特定のサブネットのフローログを表示する(compute.googleapis.com/vpc_flows

Compute Engine API を使用して VPC Flow Logs を有効にした場合は、次の手順に沿って操作します。

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

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

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

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

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

  5. [すべてのログ名] をクリックします。

  6. [ログ名の選択] リストで [Compute Engine] を見つけて [vpc_flows] をクリックし、[適用] をクリックします。

クエリを使用してフローログをフィルタする

ログ エクスプローラ クエリを使用して Google Cloud プロジェクトのフローログを表示する手順は次のとおりです。

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

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

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

  3. クエリエディタ フィールドにクエリを入力します。

    • たとえば、特定の送信元 Cloud VPN トンネルのフローログを表示するには、次のクエリを入力します。

      resource.type="vpc_flow_logs_config"
      logName="projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows"
      jsonPayload.reporter="SRC_GATEWAY"
      labels.target_resource_name="projects/PROJECT_NUMBER/regions/REGION/vpnTunnels/NAME"
      

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

      • PROJECT_ID: Cloud VPN トンネルの Google Cloud プロジェクト ID
      • PROJECT_NUMBER: Cloud VPN トンネルのプロジェクト番号
      • REGION: Cloud VPN トンネルのリージョン
      • NAME: Cloud VPN トンネルの名前
    • Compute Engine API を使用してサブネットの VPC Flow Logs を有効にした場合、クエリで compute.googleapis.com をターゲットにする必要があります。たとえば、次のクエリを入力します。PROJECT_ID は Google Cloud プロジェクト ID に、SUBNET_NAME はサブネットに置き換えます。

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

      フローログを表示するために実行できるクエリの例については、VPC Flow Logs のログ エクスプローラ クエリの例をご覧ください。

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

VPC Flow Logs のログ エクスプローラ クエリの例

このセクションでは、フローログを表示するために実行できるログ エクスプローラ クエリの例を示します。すべてのクエリに次の情報を含めます。

  • 次の表の説明に従って、クエリするログのリソースタイプとログ名を指定します。両方のログを 1 つのクエリでクエリできます。

    ログ リソースタイプとログ名
    networkmanagement.googleapis.com/vpc_flows

    Network Management API によって管理される構成のログを収集します。

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

    Compute Engine API によって管理される構成のログを収集します。

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

    PROJECT_ID は、レポート リソースの Google Cloud プロジェクト ID に置き換えます。

  • リソースごとに複数の VPC Flow Logs 構成を使用する場合は、クエリする構成の名前とターゲット リソースを指定します。これを行うには、resource.labels.name フィールドと labels.target_resource_name フィールドをクエリに追加します。これにより、重複するログがクエリ結果から除外されます。詳細については、ログの複製をご覧ください。

    • resource.labels.name は構成の名前です。クエリごとに複数の構成を指定できます。
    • labels.target_resource_name は、レポートする VPC ネットワーク、サブネット、VLAN アタッチメント、または Cloud VPN トンネルの名前です。組織の構成では、ターゲット リソースは設定されません。
    • これらのフィールドは networkmanagement.googleapis.com/vpc_flows ログでのみ使用できます。

フローログを表示するために使用できるログ エクスプローラ クエリの例については、次の表をご覧ください。

表示するログ クエリ
すべてのフローログ
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
特定の構成のログ
resource.type="vpc_flow_logs_config"
logName="projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows"
resource.labels.name="CONFIG_NAME"
特定の VPC ネットワーク内の VM インスタンスのログ
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
(jsonPayload.src_vpc.vpc_name="NETWORK_NAME" OR
jsonPayload.dest_vpc.vpc_name="NETWORK_NAME")
特定のサブネット内の VM インスタンスのログ
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
(jsonPayload.src_vpc.subnetwork_name="SUBNET_NAME" OR
jsonPayload.dest_vpc.subnetwork_name="SUBNET_NAME")
特定の VM インスタンスのログ
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
(jsonPayload.src_instance.vm_name="VM_NAME" OR
jsonPayload.dest_instance.vm_name="VM_NAME")
特定の Google Kubernetes Engine クラスタのログ
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
(jsonPayload.src_gke_details.cluster.cluster_name="CLUSTER_NAME" OR
jsonPayload.dest_gke_details.cluster.cluster_name="CLUSTER_NAME")
サブネットからの下り(外向き)VM トラフィックのみのログ
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
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:*)
VPC ネットワークからの下り(外向き)VM トラフィックのみのログ
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
jsonPayload.reporter="SRC" AND
jsonPayload.src_vpc.vpc_name="VPC_NAME" AND
(jsonPayload.dest_vpc.vpc_name!="VPC_NAME" OR NOT jsonPayload.dest_vpc:*)
特定のサブネット範囲へのトラフィックのログ
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
ip_in_net(jsonPayload.connection.dest_ip, "SUBNET_RANGE")
個別の宛先ポートのログ
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
jsonPayload.connection.dest_port=PORT
jsonPayload.connection.protocol=PROTOCOL
複数の宛先ポートのログ
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
jsonPayload.connection.dest_port=(PORT_1 OR PORT_2)
jsonPayload.connection.protocol=PROTOCOL
特定の送信元 Cloud VPN トンネルのログ
resource.type="vpc_flow_logs_config"
logName="projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows"
jsonPayload.reporter="SRC_GATEWAY"
labels.target_resource_name="projects/PROJECT_NUMBER/regions/REGION/vpnTunnels/NAME"
すべての宛先 VLAN アタッチメントのログ
resource.type="vpc_flow_logs_config"
logName="projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows"
jsonPayload.reporter="DEST_GATEWAY"
jsonPayload.dest_gateway.type="INTERCONNECT_ATTACHMENT"
特定のリージョン内のすべての宛先 VLAN アタッチメントのログ
resource.type="vpc_flow_logs_config"
logName="projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows"
jsonPayload.reporter="DEST_GATEWAY"
jsonPayload.dest_gateway.type="INTERCONNECT_ATTACHMENT"
jsonPayload.dest_gateway.location="REGION"

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

  • PROJECT_ID: プロジェクト ID
  • CONFIG_NAME: VPC Flow Logs 構成の名前
  • SUBNET_NAME: サブネットの名前
  • VM_NAME: VM の名前
  • SUBNET_RANGE: CIDR 範囲(192.168.1.0/24 など)
  • CLUSTER_NAME: GKE クラスタの名前
  • VPC_NAME: VPC ネットワークの名前
  • PORT_1PORT_2: 宛先ポート
  • PROTOCOL: 通信プロトコル
  • PROJECT_NUMBER: Cloud VPN トンネルのプロジェクト番号
  • REGION: VLAN アタッチメントまたは Cloud VPN トンネルのリージョン
  • NAME: Cloud VPN トンネルの名前

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

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

トラブルシューティング

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

  • 指定したサブネットで Logging が有効になっていることを確認します。
  • VPC フローがサポートされるのは VPC ネットワークのみです。レガシー ネットワークを使用している場合、ログは表示されません。
  • 共有 VPC ネットワークでは、ログはホスト プロジェクトでのみ表示され、サービス プロジェクトでは表示されません。ホスト プロジェクトのログを調べていることを確認してください。
  • Logging の除外フィルタは、指定されたログをブロックします。VPC Flow Logs を破棄する除外ルールが存在しないことを確認してください。
    1. ログルーターに移動
    2. ロギング バケットの その他の操作」メニューで、[シンクの詳細を表示] をクリックします。
    3. VPC Flow Logs を破棄する除外ルールが存在しないことを確認します。
  • Google Cloud CLI または API を使用して、ログ フィルタリング構成が特定のサブネット内のすべてのトラフィックをフィルタリングしているかどうかを判断します。たとえば、filterExprfalse に設定されている場合、ログは表示されません。

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

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

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

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

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

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

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

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

ログの重複

VPC Flow Logs 構成ごとに個別のログセットが生成されます。ロギング情報に重複するログが含まれている場合は、レポート対象のリソースが複数の構成に関連付けられていないか確認します。

リソースごとに複数の構成を作成した場合、または次のリストで説明するように、複数の構成を作成してスコープが重複している場合、リソースは複数の構成に関連付けられます。

  • VPC Flow Logs が組織用に構成されており、組織のプロジェクトのいずれかで、組織、VPC ネットワーク、サブネット、VLAN アタッチメント、Cloud VPN トンネルの追加構成がある。

    デフォルトでは、組織の VPC Flow Logs 構成は、組織内のすべてのサブネット、すべての VLAN アタッチメント、すべての Cloud VPN トンネルのすべての VM インスタンスのログを生成します。追加の構成を作成すると、追加の構成ごとに独自のログセットが生成されます。

  • VPC Flow Logs が VPC ネットワーク用に構成されており、同じネットワーク内のサブネット、VLAN アタッチメント、または Cloud VPN トンネルに追加の構成がある。

    デフォルトでは、VPC ネットワークの VPC Flow Logs 構成は、ネットワーク内のすべてのサブネット、すべての VLAN アタッチメント、すべての Cloud VPN トンネルにあるすべての VM インスタンスのログを生成します。追加の構成を作成すると、追加の構成ごとに独自のログセットが生成されます。

  • VPC Flow Logs は、Network Management API と Compute Engine API の両方を使用してサブネットに構成されます。サブネットの Compute Engine API 管理の VPC Flow Logs 構成と、Network Management API を使用して作成した各適用可能な構成の両方でログが生成されます。

各 VPC Flow Logs 構成スコープでロギングされるリソースの詳細については、サポートされている構成をご覧ください。VPC Flow Logs 構成を表示するには、VPC Flow Logs 構成(すべて)を表示するをご覧ください。

ログを表示するときに重複するログを除外するには、次のフィールドを使用します。

  • ログ名でログをフィルタするには、resource_type フィールドと log_name フィールドを指定します。
  • 構成とターゲット リソース名でログをフィルタリングするには、resource.labels.name フィールドと labels.target_resource_name フィールドを指定します。

これらのフィールドとその使用方法の詳細については、VPC Flow Logs のログ エクスプローラ クエリの例をご覧ください。

次のステップ