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

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

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

VPC フローログを表示するには、ログ エクスプローラを使用します。ログ エクスプローラでは、リソース フィルタとクエリを使用してフローログを表示できます。

IAM を構成する

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

リソース フィルタを使用してフローログにアクセスする

すべてのフローログまたは特定のサブネットのフローログを表示するには、次のセクションをご覧ください。クエリを使用してフローログにアクセスするで説明されているように、ログ エクスプローラのクエリを使用して、これらのログを表示することもできます。

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

コンソール

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

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

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

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

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

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

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

コンソール

  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"
    

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

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

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

次の表に、フローログを表示するために実行できるログ エクスプローラ クエリの例を示します。

表示するログ クエリ
すべてのログ
resource.type="gce_subnetwork"
logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows"
特定のサブネットのログを表示する
resource.type="gce_subnetwork"
logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows"
resource.labels.subnetwork_name="SUBNET_NAME"
特定の VM のログ
resource.type="gce_subnetwork"
logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows"
jsonPayload.src_instance.vm_name="VM_NAME"
特定のサブネット範囲へのトラフィックのログ
resource.type="gce_subnetwork"
logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows"
ip_in_net(jsonPayload.connection.dest_ip, SUBNET_RANGE)
特定の GKE クラスタのログ
resource.type="k8s_cluster"
logName="projects/PROJECT_ID/logs/vpc_flows"
resource.labels.cluster_name="CLUSTER_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:*)
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:*)
個別の宛先ポートのログ
resource.type="gce_subnetwork"
logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows"
jsonPayload.connection.dest_port=PORT
jsonPayload.connection.protocol=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

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

  • PROJECT_ID: プロジェクト ID。
  • SUBNET_NAME: サブネットワークの名前。
  • VM_NAME: VM の名前。
  • SUBNET_RANGE: CIDR 範囲(192.168.1.0/24 など)。
  • CLUSTER_NAME: GKE クラスタの名前。
  • VPC_NAME: VPC ネットワークの名前。
  • PORT1PORT2: 宛先ポート。
  • PROTOCOL: 通信プロトコル。

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 間のフローはログに記録されません。

次のステップ