VPC Flow Logs のレコードについて

このページでは、使用可能な基本フィールドとメタデータ フィールドなど、VPC Flow Logs のレコード形式について説明します。また、ログフィルタを使用して、特定の条件に一致するログのみが生成されるようにする方法についても説明します。

レコードの形式

ログレコードには、各ログレコードのコアフィールドである基本フィールドと、詳細情報を追加するメタデータ フィールドが含まれています。メタデータ フィールドは、ストレージ費用を節約するために省略できます。

一部のログフィールドはマルチ フィールド形式であり、1 つのフィールドに複数のデータが含まれます。たとえば、connection フィールドは IpConnection 形式で、送信元と宛先の IP アドレスとポート、およびプロトコルが 1 つのフィールドに格納されます。これらのマルチフィールド形式のフィールドについては、レコードの形式に関する表の後に情報が提供されています。

メタデータ フィールドの値はデータプレーン パスに基づくものではなく近似値であるため、存在しない可能性や、不正確な可能性もあります。メタデータ フィールドとは異なり、基本フィールドの値はパケット ヘッダーから直接取得されます。

フィールド フィールドの形式 フィールド タイプ: 基本 / メタデータ(省略可)
connection IpConnection
フローを記述する 5 タプル。
基本
reporter 文字列
フローを報告した側。
  • VM の場合、レポーターは SRC または DEST になります。
  • Cloud Interconnect の VLAN アタッチメントや Cloud VPN トンネルなどのゲートウェイの場合、レポーターは SRC_GATEWAY または DEST_GATEWAY になります。
基本
rtt_msec int64
一定期間に測定されたレイテンシ。このフィールドには次のように入力します。
  • VM から報告された TCP トラフィックに対して入力されます。
  • VLAN アタッチメントと Cloud VPN トンネルでは入力されません。

測定されたレイテンシは、SEQ を送信してから対応する ACK を受信するまでの経過時間です。レイテンシの結果は、ネットワーク RTT とアプリケーションが消費した時間の合計です。

基本
bytes_sent int64
送信元から宛先に送信されるバイト数。
基本
packets_sent int64
送信元から宛先に送信されるパケット数。
基本
start_time 文字列
集計対象の期間で最初に観測されるパケットのタイムスタンプ(RFC 3339 の日付文字列形式)。
基本
end_time 文字列
集計対象の期間で最後に観測されるパケットのタイムスタンプ(RFC 3339 の日付文字列形式)。
基本
送信元と宛先のメタデータ フィールド
src_gateway GatewayDetails
フローの送信元が、Cloud Interconnect の VLAN アタッチメントや Cloud VPN トンネルなどのゲートウェイを介して Google Cloud に接続されているオンプレミスまたはその他のクラウド エンドポイントで、次のいずれかの条件を満たしている場合、このフィールドにはゲートウェイの詳細が入力されます。
  • 送信元ゲートウェイがフローのレポーターである。
  • フローの宛先がレポーターであり、次のいずれかに該当する。
    • 送信元ゲートウェイがフローの宛先と同じプロジェクトに存在する。
    • VPC Flow Logs が組織レベルで構成され、プロジェクト間のアノテーションが無効になっていない。1
メタデータ
dest_gateway GatewayDetails
フローの宛先が、Cloud Interconnect の VLAN アタッチメントや Cloud VPN トンネルなどのゲートウェイを介して Google Cloud に接続されているオンプレミスまたは他のクラウド エンドポイントで、次の条件を満たしている場合、このフィールドにはゲートウェイの詳細が入力されます。
  • 宛先ゲートウェイがフローのレポーターである。
  • フローの送信元がレポーターであり、次のいずれかに該当する。
    • 宛先ゲートウェイがフローの送信元と同じプロジェクトに存在する。
    • VPC Flow Logs が組織レベルで構成され、プロジェクト間のアノテーションが無効になっていない。1
メタデータ
src_gke_details GkeDetails
フローの送信元が Google Kubernetes Engine(GKE)エンドポイントの場合、このフィールドには GKE エンドポイントの詳細が入力されます。
メタデータ
dest_gke_details GkeDetails
フローの宛先が GKE エンドポイントの場合、このフィールドには GKE エンドポイントの詳細が入力されます。
メタデータ
src_google_service GoogleServiceDetails
フローの送信元が Google サービスの場合、このフィールドにはサービスの詳細が入力されます。
メタデータ
dest_google_service GoogleServiceDetails
フローの宛先が Google サービスの場合、このフィールドにはサービスの詳細が入力されます。
メタデータ
src_instance InstanceDetails
フローの送信元が VPC ネットワーク内の VM で、次のいずれかの条件を満たしている場合、このフィールドには VM インスタンスの詳細が入力されます。
  • 送信元 VM がフローのレポーターである。
  • フローの宛先がレポーターであり、次のいずれかに該当する。
    • 送信元 VM または送信元 VM がアタッチされている VPC ネットワークが、フローの宛先と同じプロジェクトにある。
    • VPC Flow Logs が組織レベルで構成され、プロジェクト間のアノテーションが無効になっていない。1
メタデータ
dest_instance InstanceDetails
フローの宛先が VPC ネットワーク内の VM であり、次のいずれかの条件を満たしている場合、このフィールドには VM インスタンスの詳細が入力されます。
  • 宛先 VM がフローのレポーターである。
  • フローの送信元がレポーターであり、次のいずれかに該当する。
    • 宛先 VM または宛先 VM がアタッチされている VPC ネットワークが、フローの送信元と同じプロジェクトにある。
    • VPC Flow Logs が組織レベルで構成され、プロジェクト間のアノテーションが無効になっていない。1
メタデータ
src_location GeographicDetails
フローの送信元が VPC ネットワークの外部にあるパブリック IP アドレスの場合、このフィールドには使用可能なロケーション メタデータが入力されます。
メタデータ
dest_location GeographicDetails
フローの宛先が VPC ネットワークの外部にあるパブリック IP アドレスの場合、このフィールドには使用可能なロケーション メタデータが入力されます。
メタデータ
src_vpc VpcDetails
フローの送信元が VPC ネットワーク内の VM であり、次のいずれかの条件を満たしている場合、このフィールドには VPC ネットワークの詳細が入力されます。
  • 送信元 VM がフローのレポーターである。
  • フローの宛先がレポーターであり、次のいずれかに該当する。
    • 送信元 VM または送信元 VM がアタッチされている VPC ネットワークが、フローの宛先と同じプロジェクトにある。
    • VPC Flow Logs が組織レベルで構成され、プロジェクト間のアノテーションが無効になっていない。1
メタデータ
dest_vpc VpcDetails
フローの宛先が VPC ネットワーク内の VM であり、次のいずれかの条件を満たしている場合、このフィールドには VPC ネットワークの詳細が入力されます。
  • 宛先 VM がフローのレポーターである。
  • フローの送信元がレポーターであり、次のいずれかに該当する。
    • 宛先 VM または宛先 VM がアタッチされている VPC ネットワークが、フローの送信元と同じプロジェクトにある。
    • VPC Flow Logs が組織レベルで構成され、プロジェクト間のアノテーションが無効になっていない。1
メタデータ
その他のメタデータ フィールド
internet_routing_details InternetRoutingDetails
フローが Google Cloud とインターネットの間である場合、このフィールドにはルーティングの詳細が入力されます。下り(外向き)フローの場合にのみ使用できます。
メタデータ
load_balancing LoadBalancingDetails
フローが次のいずれかの構成でロードバランサを通過する場合、このフィールドには Cloud Load Balancing の詳細が入力されます。
  • フローのレポーターがロードバランサのクライアントで、ロードバランサの種類が APPLICATION_LOAD_BALANCERPROXY_NETWORK_LOAD_BALANCERPASSTHROUGH_NETWORK_LOAD_BALANCER、または PROTOCOL_FORWARDING
  • フローのレポーターがロードバランサのバックエンドで、ロードバランサの種類が PASSTHROUGH_NETWORK_LOAD_BALANCER または PROTOCOL_FORWARDING
メタデータ
network_service NetworkServiceDetails
Differentiated Services Code Point(DSCP)ヘッダーが設定されている場合、このフィールドには、ネットワーク サービスの詳細が入力されます。
メタデータ
psc PrivateServiceConnectDetails
次のいずれかの構成でフローが Private Service Connect を通過する場合、このフィールドには Private Service Connect の詳細が入力されます。
  • Private Service Connect トラフィックのレポーターがコンシューマーで、公開サービスまたはグローバル Google API をターゲットとする Private Service Connect エンドポイントを使用している。
  • Private Service Connect トラフィックのレポーターがプロデューサーで、内部パススルー ネットワーク ロードバランサまたは内部プロトコル転送を使用している。
メタデータ
rdma_traffic_type 文字列
RDMA トラフィックのタイプ。VM 間の GPU 間トラフィックに対して入力されます。GPUDirect-TCPXO または RoCE のいずれかです。
メタデータ
1 VPC Flow Logs が組織レベルで構成されている場合、デフォルトでは、プロジェクト間のフローのログレコードには、フローの両側の詳細が含まれます。プロジェクト間のアノテーションは、共有 VPC、VPC ネットワーク ピアリング、Network Connectivity Center を介したフローで使用できます。詳細については、プロジェクト間のアノテーションをご覧ください。

IpConnection フィールドの形式

フィールド タイプ 説明
protocol int32 IANA プロトコル番号。
  • TCP、UDP、ICMP、ESP、GRE フローの場合に設定されます
  • RDMA フローでは入力されません
src_ip 文字列 送信元 IP アドレス。すべてのフローで入力されます。
dest_ip 文字列 宛先 IP アドレス。すべてのフローで入力されます。
src_port int32 送信元ポート:
  • TCP フローと UDP フローに対して入力されます
  • ICMP、ESP、GRE、RDMA フローでは入力されません
dest_port int32 宛先ポート:
  • TCP フローと UDP フローに対して入力されます
  • ICMP、ESP、GRE、RDMA フローでは入力されません

GatewayDetails フィールドの形式

フィールド タイプ 説明
project_id 文字列 ゲートウェイのGoogle Cloud プロジェクト ID
ロケーション 文字列 ゲートウェイのリージョン
name 文字列 ゲートウェイの名前
type 文字列 ゲートウェイのタイプ。INTERCONNECT_ATTACHMENT または VPN_TUNNEL のいずれか。
vpc VpcDetails ゲートウェイの VPC ネットワークの詳細
interconnect_name 文字列 ゲートウェイのタイプが INTERCONNECT_ATTACHMENT の場合、このフィールドには、VLAN アタッチメントが構成されている Cloud Interconnect 接続の名前が入力されます。
interconnect_project_number int64 ゲートウェイのタイプが INTERCONNECT_ATTACHMENT の場合、このフィールドには、VLAN アタッチメントが構成されている Cloud Interconnect 接続の Google Cloud プロジェクト番号が入力されます。

GkeDetails フィールドの形式

フィールド タイプ 説明
クラスタ ClusterDetails GKE クラスタ メタデータ。
Pod PodDetails トラフィックの送信元または宛先が Pod である場合に入力される GKE Pod のメタデータ。
サービス ServiceDetails Service エンドポイントにのみ入力される GKE Service メタデータ。レコードには最大 2 つの Service が含まれます。関連する Service が 3 つ以上ある場合、このフィールドには特別な MANY_SERVICES マーカーを持つ 1 つの Service が含まれます。

ClusterDetails フィールドの形式

フィールド タイプ 説明
cluster_location 文字列 クラスタのロケーション。ゾーンクラスタかリージョン クラスタかに応じて、ゾーンまたはリージョンになります。
cluster_name 文字列 GKE クラスタ名。

PodDetails フィールドの形式

フィールド タイプ 説明
pod_name 文字列 Pod の名前
pod_namespace 文字列 Pod の名前空間
pod_workload WorkloadDetails Pod を制御する最上位のワークロード リソースに関するメタデータ
WorkloadDetails フィールドの形式
フィールド タイプ 説明
workload_name 文字列 最上位のワークロード コントローラの名前
workload_type 文字列 最上位のワークロード コントローラのタイプ。DEPLOYMENTREPLICA_SETSTATEFUL_SETDAEMON_SETJOBCRON_JOB、または REPLICATION_CONTROLLER のいずれか。

ServiceDetails フィールドの形式

フィールド タイプ 説明
service_name 文字列 Service の名前。関連する Service が 3 つ以上ある場合、フィールドは特別な MANY_SERVICES マーカーに設定されます。
service_namespace 文字列 Service の名前空間。

例:

2 つのサービスがある場合、[Service] フィールドは次のようになります。

service: [
 0: {
  service_name: "my-lb-service"
  service_namespace: "default"
 }
 1: {
  service_name: "my-lb-service2"
  service_namespace: "default"
 }
]

3 つ以上のサービスがある場合、[Service] フィールドは次のようになります。

service: [
 0: {
  service_name: "MANY_SERVICES"
 }
]

GoogleServiceDetails フィールドの形式

フィールド タイプ 説明
type 文字列

サービスのタイプ(GOOGLE_API または GOOGLE_VPC_HOSTED_SERVICE):

service_name 文字列

Service の名前。例: pubsub.googleapis.com

制限事項:

  • 完了に 60 秒以上かかる Google API へのリクエストでは、サービス名が欠落している場合があります。
  • VM またはゲートウェイが同じ 5 タプルを使用して複数のサービスに接続する場合、ログレコードには、ランダムに選択された 1 つのサービスの名前のみが含まれます。
接続性 文字列

アクセス方法。GOOGLE_API タイプの場合、接続フィールドは次のいずれかになります。

  • PUBLIC_IP: API が外部 IP アドレスを持つ VM からアクセスされる場合
  • PRIVATE_GOOGLE_ACCESS または DIRECT_CONNECTIVITY: API がプライベート Google アクセスを介してアクセスされる場合
  • PRIVATE_SERVICE_CONNECT_FOR_GOOGLE_APIS: API が Private Service Connect エンドポイント経由でアクセスされる場合

GOOGLE_VPC_HOSTED_SERVICE タイプの場合、接続フィールドは次のいずれかになります。

  • PUBLIC_IP: サービスがパブリック IP 接続を介してアクセスされる場合
  • PRIVATE_SERVICES_ACCESS: サービスがプライベート サービス アクセス経由でアクセスされる場合
  • PRIVATE_SERVICE_CONNECT_ENDPOINT または PRIVATE_SERVICE_CONNECT_INTERFACE: サービスが Private Service Connect を介してアクセスされる場合
private_domain 文字列

プライベート ドメインまたは Private Service Connect API バンドル。private_domain フィールドは、次のいずれかになります。

  • アクセス方法が PRIVATE_GOOGLE_ACCESS の場合: private.googleapis.com または restricted.googleapis.com
  • アクセス方法が DIRECT_CONNECTIVITY の場合: restricted.googleapis.com
  • アクセス方法が PRIVATE_SERVICE_CONNECT_FOR_GOOGLE_APIS の場合: all-apis または vpc-sc

InstanceDetails フィールドの形式

フィールド タイプ 説明
project_id 文字列 VM リソースを含む Google Cloud プロジェクトの ID
region 文字列 VM のリージョン
vm_name 文字列 VM のインスタンス名
zone 文字列 VM のゾーン
managed_instance_group InstanceGroupDetails VM がマネージド インスタンス グループの一部である場合、このフィールドにインスタンス グループの詳細が入力されます。

InstanceGroupDetails フィールドの形式

フィールド タイプ 説明
name 文字列 インスタンス グループの名前
region 文字列 インスタンス グループがリージョンの場合、このフィールドにインスタンス グループのリージョンが入力されます。
zone 文字列 インスタンス グループがゾーンの場合、このフィールドにインスタンス グループのゾーンが入力されます。

GeographicDetails フィールドの形式

フィールド タイプ 説明
asn int32 このエンドポイントが属する外部ネットワークの ASN
city 文字列 外部エンドポイントの都市
continent 文字列 外部エンドポイントの大陸
country 文字列 外部エンドポイントの国で、ISO 3166-1 Alpha-3 の国コードにより表されます。
region 文字列 外部エンドポイントのリージョン

VpcDetails フィールドの形式

フィールド タイプ 説明
project_id 文字列 VPC を含む Google Cloud プロジェクトの ID。共有 VPC 構成では、project_id はホスト プロジェクトの ID です。
subnetwork_name 文字列 サブネットの名前(該当する場合)
subnetwork_region 文字列 サブネットのリージョン(該当する場合)
vpc_name 文字列 ネットワークの名前

InternetRoutingDetails フィールドの形式

フィールド タイプ 説明
egress_as_path AsPath 関連する AS パスのリスト。フローで使用できる AS パスが複数ある場合、このフィールドには複数の AS パスが含まれることがあります。

AsPath フィールドの形式

フィールド タイプ 説明
as_details AsDetails AS パス内のすべてのシステムの AS の詳細のリスト。このリストは、 Google Cloudのネットワークの外部にある最初の AS から始まり、リモート IP アドレスが属する AS で終わります。

AsDetails フィールドの形式

フィールド タイプ 説明
asn uint32 AS の自律システム番号(ASN)

LoadBalancingDetails フィールドの形式

フィールド タイプ 説明
forwarding_rule_project_id 文字列 転送ルールのGoogle Cloud プロジェクト ID
reporter 文字列 Cloud Load Balancing レポーター。CLIENTBACKEND のいずれか。
  • フローのレポーターがロードバランサのクライアントの場合、このフィールドは CLIENT に設定されます。
  • フローのレポーターがロードバランサのバックエンドの場合、このフィールドは BACKEND に設定されます。
type 文字列 ロードバランサの種類。APPLICATION_LOAD_BALANCERPROXY_NETWORK_LOAD_BALANCERPASSTHROUGH_NETWORK_LOAD_BALANCER、または PROTOCOL_FORWARDING のいずれか。
scheme 文字列 ロードバランサ スキーム。EXTERNAL_MANAGEDINTERNAL_MANAGEDEXTERNALINTERNALINTERNAL_SELF_MANAGED のいずれか。
url_map_name 文字列 URL マップの名前。ロードバランサの種類が APPLICATION_LOAD_BALANCER の場合に入力されます。
forwarding_rule_name 文字列 転送ルールの名前
backend_service_name 文字列 バックエンド サービスの名前。レポーターが BACKEND で、ロードバランサの種類が PASSTHROUGH_NETWORK_LOAD_BALANCER の場合に入力されます。バックエンド グループの種類が TARGET_POOL の場合、このフィールドは入力されません。
backend_group_name 文字列 バックエンド グループの名前。レポーターが BACKEND で、ロードバランサの種類が PASSTHROUGH_NETWORK_LOAD_BALANCER の場合に入力されます。
backend_group_type 文字列 バックエンド グループの種類。INSTANCE_GROUPNETWORK_ENDPOINT_GROUPTARGET_POOL のいずれかです。レポーターが BACKEND で、ロードバランサの種類が PASSTHROUGH_NETWORK_LOAD_BALANCER の場合に入力されます。
backend_group_location 文字列 バックエンド グループのロケーション。バックエンド グループのスコープがゾーンまたはリージョンであるかどうかに応じて、ゾーンまたはリージョンになります。レポーターが BACKEND で、ロードバランサの種類が PASSTHROUGH_NETWORK_LOAD_BALANCER の場合に入力されます。バックエンド グループの種類が TARGET_POOL の場合、このフィールドは入力されません。
vpc VpcDetails ロードバランサの VPC ネットワークの詳細

NetworkServiceDetails フィールドの形式

フィールド タイプ 説明
dscp int32 パケット ヘッダーに Differentiated Services フィールドが存在する場合、このフィールドには DSCP 値が入力されます。

PrivateServiceConnectDetails フィールドの形式

フィールド タイプ 説明
reporter 文字列 Private Service Connect レポーター。CONSUMERPRODUCER のいずれかになります。
psc_endpoint PrivateServiceConnectEndpointDetails エンドポイントの詳細。レポーターが CONSUMER である場合に入力されます。
psc_attachment PrivateServiceConnectAttachmentDetails サービス アタッチメントの詳細。トラフィック フローに Private Service Connect プロデューサーが含まれている場合に入力されます。

PrivateServiceConnectEndpointDetails フィールドの形式

フィールド タイプ 説明
project_id 文字列 Private Service Connect エンドポイントのGoogle Cloud プロジェクト ID
region 文字列 エンドポイントのリージョン。ターゲット サービスタイプが GLOBAL_GOOGLE_APIS の場合は入力されません。
psc_connection_id 文字列 Private Service Connect 接続 ID
target_service_type 文字列 ターゲット サービスタイプ。GLOBAL_GOOGLE_APISPUBLISHED_SERVICE のいずれかになります。
vpc VpcDetails Private Service Connect エンドポイントの VPC ネットワークの詳細

PrivateServiceConnectAttachmentDetails フィールドの形式

フィールド タイプ 説明
project_id 文字列 Google Cloud サービス アタッチメントのプロジェクト ID
region 文字列 サービス アタッチメントのリージョン
vpc VpcDetails サービス アタッチメントの VPC ネットワークの詳細

メタデータ アノテーション

ログレコードには、基本フィールドとメタデータ フィールドが含まれます。レコード形式セクションには、フィールドの種類(メタデータか基本か)が記載されています。すべての基本フィールドが常に含まれます。保持するメタデータ フィールドはカスタマイズできます。

  • すべてのメタデータを選択すると、VPC Flow Logs レコード内のすべてのメタデータ フィールドがフローログに含まれます。新しいメタデータ フィールドがレコード形式に追加されると、フローログに新しいフィールドが自動的に含まれます。

  • メタデータを選択しない場合は、すべてのメタデータ フィールドが省略されます。

  • カスタム メタデータを選択した場合、親フィールド(src_vpc など)または完全名(src_vpc.project_id など)を使用して、含めるメタデータ フィールドを指定できます。

    新しいメタデータ フィールドがレコード形式に追加された場合、これらのフィールドが指定した親フィールド内にある場合を除き、フローログから除外されます。

    • 親フィールドを使用してカスタム メタデータを指定した場合、その親フィールド内のレコード形式に新しいメタデータ フィールドが追加されると、フローログには新しいフィールドが自動的に含まれます。

    • フィールドの完全名を使用してカスタム メタデータを指定した場合、親フィールドに追加された新しいメタデータ フィールドはフローログから除外されます。

メタデータ フィールドをカスタマイズする方法については、VPC Flow Logs を有効にするまたは VPC Flow Logs 構成を更新するをご覧ください。

GKE メタデータのアノテーション

GKE クラスタにエンドポイントがあるフローには、そのエンドポイントのクラスタ、Pod、Service の詳細を含む GKE メタデータ アノテーションを付けることができます。

GKE Service アノテーション

ClusterIP、NodePort、LoadBalancer に送信されたトラフィックは、Service アノテーションを取得できます。NodePort または LoadBalancer に送信された場合、そのフローには接続の両方のホップで Service アノテーションが付けられます。

Pod の Service ポートに直接送信されたトラフィックには、宛先エンドポイントの Service アノテーションでアノテーションが付けられます。

Pod が同じ Service ポートで複数の Service をサポートしている場合、Pod のサービスポートに送信されるトラフィックには、宛先エンドポイントで複数の Service がアノテーションされます。これは 2 つの Service に限定されます。それ以上ある場合は、エンドポイントに特別な MANY_SERVICES マーカーが付けられます。

インターネット トラフィックでの Pod アノテーション

Pod とインターネットの間のトラフィックには、デフォルトでは Pod アノテーションが付きません。インターネットへのパケットの場合、マスカレード エージェントが Pod の IP アドレスをノード IP アドレスに変換するまで、VPC Flow Logs はパケットを認識しません。このため、VPC Flow Logs は Pod アノテーションを追加できません。

マスカレードのため、リンク先がデフォルトの非マスカレードの宛先またはカスタム nonMasqueradeCIDRs リスト内にある場合にのみ、Pod アノテーションが表示されます。インターネットの宛先をカスタム nonMasqueradeCIDRs リストに含める場合は、インターネットに到達する前に内部 Pod IP アドレスが変換されるようにする必要があります。Cloud NAT は限定公開クラスタと非プライベート クラスタの両方で使用できます。詳細については、GKE の操作をご覧ください。

プロジェクト間のアノテーション

VPC Flow Logs が組織レベルで有効になっている場合、共有 VPC、VPC ネットワーク ピアリング、Network Connectivity Center を通過するフローには、プロジェクト間のアノテーションが追加されます。プロジェクト間のアノテーションはデフォルトで有効になっています。これらのアノテーションは必要に応じて無効にできます。

  • プロジェクト間のアノテーションが有効になっている場合、異なるプロジェクトのリソース間のフローのログレコードには、フローの両側に関する情報が含まれます
  • プロジェクト間のアノテーションが無効になっている場合、ログレコードにはフローのレポーターに関する情報のみが含まれます。

VPC Flow Logs がプロジェクト レベルで有効になっている場合、異なるプロジェクトのリソース間のフローに、プロジェクト間のアノテーションが付加されません。

ログのフィルタリング

VPC Flow Logs を有効にすると、フィルタに一致するログのみを保持する基本フィールドとメタデータ フィールドの両方に基づいてフィルタを設定できます。他のすべてのログは、Logging に書き込まれる前に破棄されます。

[レコード形式] に記載されているフィールドのサブセットでフィルタリングできます。ただし、次のフィールドは除きます。

  • rtt_msec
  • bytes_sent
  • packets_sent
  • start_time
  • end_time

VPC Flow Logs フィルタリングでは、属性ベースの論理式に埋め込み式の表現言語である CEL が使用されます。VPC Flow Logs のフィルタ式は 2,048 文字以内に制限されています。詳しくは、サポートされている CEL 論理演算子をご覧ください。

CEL の詳細については、CEL の概要言語の定義をご覧ください。生成フィルタ機能では、CEL 構文の特定のサブセットのみがサポートされます。

ログ フィルタリングを使用する VPC Flow Logs 構成を作成するには、VPC Flow Logs を有効にするをご覧ください。既存の VPC Flow Logs 構成のログ フィルタリングを構成するには、VPC Flow Logs 構成を更新するをご覧ください。

サポートされている CEL 論理演算子

サポートされる形式 説明
true、false ブール値 ブール定数

x == y

x != y

ブール値、整数、文字列

比較演算子

例: connection.protocol == 6

x && y

x || y

ブール値

ブール論理演算子

例: connection.protocol == 6 && src_instance.vm_name == "vm_1"

!x ブール値 否定
1、2.0、0、... Int 定数の数値リテラル
x + y 文字列 文字列の連結
"foo"、'foo'、... 文字列 定数の文字列リテラル
x.lower() 文字列 文字列の小文字の値を返します。
x.upper() 文字列 文字列の大文字の値を返します。
x.contains(y) 文字列 文字列に指定された部分文字列が含まれている場合は true を返します。
x.startsWith(y) 文字列 文字列が、指定された部分文字列で始まる場合に true を返します。
x.endsWith(y) 文字列 文字列が、指定された部分文字列で終わる場合に true を返します。
inIpRange(X, Y) 文字列

X が IP で Y が X を含む IP 範囲である場合、true を返します。

例: inIpRange("1.2.3.1", "1.2.3.0/24")

x.containsFieldValue(y) x: list
y: map(string, string)

指定された Key-Value ペアと一致するフィールドを含むオブジェクトがリストに含まれている場合、true が返されます。

例: dest_gke_details.service.containsFieldValue({'service_name': 'service1', 'service_namespace': 'namespace1'})

has(x) 文字列

フィールドが存在する場合は true を返します。

ログフィルタの例

Compute Engine API を使用してサブネットの VPC Flow Logs を有効にした場合は、gcloud compute networks subnets update コマンドを使用してフィルタリングを構成します(例 1~3)。

他のすべての VPC Flow Logs 構成では、gcloud network-management vpc-flow-logs-configs update コマンドを使用します(例 4~6)。例 1~3 のフィルタ式は、gcloud network-management vpc-flow-logs-configs update コマンドで使用できます。

例 1. ログの収集を my-vm という名前の特定の VM に制限する。この場合、トラフィックの送信元から報告された src_instance フィールドが my-vm であるか、トラフィックの宛先から報告された dst_instance フィールドが my-vm であるログのみが記録されます。

gcloud compute networks subnets update my-subnet \
    --logging-filter-expr="(src_instance.vm_name == 'my-vm' && reporter=='SRC') || (dest_instance.vm_name == 'my-vm' && reporter=='DEST')"

例 2. ログの収集を送信元 IP アドレスが 10.0.0.0/8 サブネットのパケットに限定する。

gcloud compute networks subnets update my-subnet \
    --logging-filter-expr="inIpRange(connection.src_ip, '10.0.0.0/8')"

例 3. ログの収集を VPC ネットワークの外部のトラフィックに制限する。

gcloud compute networks subnets update my-subnet \
    --logging-filter-expr '!(has(src_vpc.vpc_name) && has(dest_vpc.vpc_name))'

例 4. ログの収集を特定の宛先 VLAN アタッチメントまたは Cloud VPN トンネル my-gateway に制限する。

gcloud network-management vpc-flow-logs-configs update my-config \
    --location=global \
    --filter-expr="dest_gateway.name == 'my-gateway'"

例 5. ログの収集を VLAN アタッチメントに制限する。

gcloud network-management vpc-flow-logs-configs update my-config \
    --location=global \
    --filter-expr="dest_gateway.type == 'INTERCONNECT_ATTACHMENT'"

例 6. ログの収集を特定の送信元 VPC ネットワーク my-network に制限する。

gcloud beta network-management vpc-flow-logs-configs update my-config \
    --location=global \
    --filter-expr="src_vpc.vpc_name == 'my-network'"

次のステップ