フローログにアクセスする
このページでは、Cloud Logging を使用してフローログにアクセスする方法について説明します。
ログ エクスプローラでフローログにアクセスする
VPC Flow Logs は、ログレポーターの Google Cloud プロジェクトにログを書き込みます。フローログは、ログ エクスプローラで表示できます。VPC Flow Logs は、次のログを使用してログエントリを収集します。
compute.googleapis.com/vpc_flows
ログは、サブネットのログエントリを収集します。Compute Engine API を使用して VPC Flow Logs を有効にした場合は、このログを表示します。- 他のすべての VPC Flow Logs 構成については、
networkmanagement.googleapis.com/vpc_flows
ログをご覧ください。このログは、Virtual Private Cloud(VPC)ネットワーク(プレビュー)、サブネット(プレビュー)、Cloud Interconnect の VLAN アタッチメント、Cloud VPN トンネルのログエントリを収集します。
IAM を構成する
ロギングのアクセス制御を構成するには、Logging のアクセス制御ガイドをご覧ください。
リソース フィルタを使用してフローログを表示する
リソース フィルタを使用して Google Cloud プロジェクトのフローログを表示するには、次のセクションをご覧ください。クエリを使用してフローログをフィルタするで説明されているように、ログ エクスプローラのクエリを使用して、これらのログを表示することもできます。
すべてのサブネットのフローログを表示する(compute.googleapis.com/vpc_flows
)
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
[すべてのリソース] をクリックします。
[リソースの選択] リストで [サブネットワーク] をクリックし、[適用] をクリックします。
[すべてのログ名] をクリックします。
[ログ名の選択] リストで [Compute Engine] を見つけて [vpc_flows] をクリックし、[適用] をクリックします。
特定のサブネットのフローログを表示する(compute.googleapis.com/vpc_flows
)
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
[すべてのリソース] をクリックします。
[リソースの選択] リストで、[サブネットワーク] をクリックします。
[サブネットワーク ID] リストでサブネットを選択し、[適用] をクリックします。
[すべてのログ名] をクリックします。
[ログ名の選択] リストで [Compute Engine] を見つけて [vpc_flows] をクリックし、[適用] をクリックします。
すべてのリソースのフローログを表示する(networkmanagement.googleapis.com/vpc_flows
)
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
[すべてのリソース] をクリックします。
[リソースの選択] リストで [VPC Flow Logs 構成] をクリックし、[適用] をクリックします。
特定の構成のフローログを表示する(networkmanagement.googleapis.com/vpc_flows
)
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
[すべてのリソース] をクリックします。
[リソースの選択] リストで [VPC Flow Logs 構成] をクリックし、表示する VPC Flow Logs 構成を選択します。
[適用] をクリックします。
クエリを使用してフローログをフィルタする
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
[クエリ] ペインにクエリ エディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。
クエリエディタ フィールドにクエリを入力します。
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"
他のすべてのクエリでは、クエリは
networkmanagement.googleapis.com
をターゲットにする必要があります。たとえば、特定の送信元 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_ID/regions/REGION/vpnTunnels/NAME"
次のように置き換えます。
PROJECT_ID
: Google Cloud プロジェクト IDREGION
: Cloud VPN トンネルのリージョンNAME
: Cloud VPN トンネルの名前
フローログを表示するために実行できるクエリの例については、VPC Flow Logs のログ エクスプローラ クエリの例をご覧ください。
[クエリを実行] をクリックします。
VPC Flow Logs のログ エクスプローラ クエリの例
次の表に、 Google Cloud プロジェクトでフローログを表示するために実行できるログ エクスプローラ クエリの例を示します。
networkmanagement.googleapis.com/vpc_flows のクエリの例では、各リソースが単一の VPC Flow Logs 構成によってロギングされることを前提としています。リソースごとに複数の VPC Flow Logs 構成を使用する場合は、クエリする構成を指定して、重複するログをクエリ結果から除外します。クエリで複数の構成を指定することもできます。
表示するログ | クエリ |
---|---|
すべてのフローログ | resource.type=("gce_subnetwork" OR "vpc_flow_logs_config") logName=("projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" OR "projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows") |
compute.googleapis.com/vpc_flows ログのクエリ |
|
すべてのサブネットのログ | 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" OR jsonPayload.dest_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) |
特定の Google Kubernetes Engine(GKE)クラスタのログ | resource.type="gce_subnetwork" logName="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") |
サブネットからの下り(外向き)トラフィックのみのログ | resource.type="gce_subnetwork" 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:*) |
Virtual Private Cloud(VPC)ネットワークからのすべての下り(外向き)トラフィックのログ | resource.type="gce_subnetwork" 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 |
networkmanagement.googleapis.com/vpc_flows ログのクエリ |
|
すべての VPC Flow Logs 構成のログ | resource.type="vpc_flow_logs_config" logName="projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" |
特定の VPC Flow Logs 構成のログ | resource.type="vpc_flow_logs_config" logName="projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" resource.labels.name="CONFIG_NAME" |
特定の送信元 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_ID/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
: プロジェクト IDSUBNET_NAME
: サブネットの名前VM_NAME
: VM の名前SUBNET_RANGE
: CIDR 範囲(192.168.1.0/24
など)CLUSTER_NAME
: GKE クラスタの名前VPC_NAME
: VPC ネットワークの名前PORT1
とPORT2
: 宛先ポートPROTOCOL
: 通信プロトコルCONFIG_NAME
: VPC Flow Logs 構成の名前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 を破棄する除外ルールが存在しないことを確認してください。
- ログルーターに移動
- ロギング バケットの 「その他の操作」メニューで、[シンクの詳細を表示] をクリックします。
- VPC Flow Logs を破棄する除外ルールが存在しないことを確認します。
- Google Cloud CLI または API を使用して、ログ フィルタリング構成が特定のサブネット内のすべてのトラフィックをフィルタリングしているかどうかを判断します。たとえば、
filterExpr
がfalse
に設定されている場合、ログは表示されません。
一部のログで RTT 値またはバイト値が存在しない
- RTT をキャプチャするのに十分なパケットがサンプリングされなかった場合、RTT の測定値が存在しないことがあります。この現象は、接続が少量である場合に発生する可能性が高くなります。
- RTT 値は、VM から報告された TCP フローに対してのみ使用できます。
- 一部のパケットはペイロードなしで送信されます。ヘッダーのみのパケットがサンプリングされた場合、バイト値は 0 になります。
一部のフローが見つからない
- 上り(内向き)パケットは、上り(内向き)の VPC ファイアウォール ルールの後にサンプリングされます。ログに記録されると想定したパケットが、いずれかの上り(内向き)ファイアウォール ルールによって拒否されていないかどうか確認してください。VPC ファイアウォール ルールが上り(内向き)パケットをブロックしているかどうか不明な場合は、ファイアウォール ルールのロギングを有効にしてログを調べてください。
- サポートされているのは TCP、UDP、ICMP、ESP、GRE プロトコルのみです。VPC Flow Logs は他のプロトコルをサポートしていません。
- ログはサンプリングされます。非常に少量のフローでは、一部のパケットが失われる場合があります。
一部のログで GKE アノテーションが見つからない
GKE クラスタがサポート対象バージョンであることを確認してください。
一部の GKE フローのログが見つからない
クラスタでノード内の可視化が有効になっていることを確認してください。有効になっていない場合、同じノード上の Pod 間のフローはログに記録されません。
次のステップ
- Logging のドキュメントを参照する
- Logging シンクのドキュメントを参照する
- Flow Analyzer でフローログを分析する