흐름 로그 액세스

이 페이지에서는 Cloud Logging을 사용하여 흐름 로그에 액세스하는 방법을 설명합니다.

로그 탐색기에서 흐름 로그 액세스

로그 탐색기를 사용하여 흐름 로그를 볼 수 있습니다. 로그 탐색기에서 리소스 필터 및 쿼리를 사용하여 흐름 로그를 볼 수 있습니다. VPC 흐름 로그에서 생성된 로그는 다음과 같이 그룹화됩니다.

  • 서브넷의 흐름 로그는 compute.googleapis.com/vpc_flows 로그에서 확인할 수 있습니다.
  • VLAN 연결 및 Cloud VPN 터널의 흐름 로그는 networkmanagement.googleapis.com/vpc_flows 로그(미리보기)에서 확인할 수 있습니다.

IAM 구성

로깅의 액세스 제어를 구성하려면 Logging에 대한 액세스 제어 가이드를 참조하세요.

리소스 필터를 사용하여 흐름 로그 액세스

리소스 필터를 사용하여 Google Cloud 프로젝트에서 흐름 로그를 보려면 다음 섹션을 참고하세요. 또한 쿼리를 사용하여 흐름 로그 액세스에 설명된 것처럼 로그 탐색기 쿼리를 사용하여 이러한 로그를 확인할 수 있습니다.

모든 서브넷의 흐름 로그 액세스

콘솔

  1. Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.

    로그 탐색기로 이동

  2. 모든 리소스를 클릭합니다.

  3. 리소스 선택 목록에서 서브네트워크를 클릭한 후 적용을 클릭합니다.

  4. 모든 로그 이름을 클릭합니다.

  5. 로그 이름 선택 목록에서 Compute Engine을 찾아 vpc_flows를 클릭한 후 적용을 클릭합니다.

특정 서브넷의 흐름 로그 액세스

콘솔

  1. Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.

    로그 탐색기로 이동

  2. 모든 리소스를 클릭합니다.

  3. 리소스 선택 목록에서 서브네트워크를 클릭합니다.

  4. 서브네트워크 ID 목록에서 서브네트워크를 선택한 후 적용을 클릭합니다.

  5. 모든 로그 이름을 클릭합니다.

  6. 로그 이름 선택 목록에서 Compute Engine을 찾아 vpc_flows를 클릭한 후 적용을 클릭합니다.

모든 VLAN 연결 및 Cloud VPN 터널의 흐름 로그에 액세스

콘솔

  1. Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.

    로그 탐색기로 이동

  2. 모든 리소스를 클릭합니다.

  3. 리소스 선택 목록에서 VPC 흐름 로그 구성을 클릭한 후 적용을 클릭합니다.

특정 VLAN 연결 또는 Cloud VPN 터널의 흐름 로그 액세스

콘솔

  1. Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.

    로그 탐색기로 이동

  2. 모든 리소스를 클릭합니다.

  3. 리소스 선택 목록에서 VPC 흐름 로그 구성을 클릭하고 확인하려는 VLAN 연결 또는 Cloud VPN 터널의 흐름 로그를 수집하는 VPC 흐름 로그 구성을 선택합니다.

  4. 적용을 클릭합니다.

쿼리를 사용하여 흐름 로그 액세스

콘솔

  1. Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.

    로그 탐색기로 이동

  2. 쿼리 창에 쿼리 편집기 필드가 표시되지 않으면 쿼리 표시 전환을 클릭합니다.

  3. 쿼리 편집기 필드에 다음과 같이 쿼리를 입력합니다.

    • 서브넷의 흐름 로그를 보려면 쿼리가 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"
      
    • VLAN 연결 또는 Cloud VPN 터널의 흐름 로그를 보려면 쿼리가 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 프로젝트 ID
      • REGION: Cloud VPN 터널의 리전
      • NAME: Cloud VPN 터널의 이름

    흐름 로그를 보기 위해 실행할 수 있는 더 많은 쿼리 예시는 VPC 흐름 로그를 위한 로그 탐색기 쿼리 예시를 참조하세요.

  4. 쿼리 실행을 클릭합니다.

VPC 흐름 로그를 위한 로그 탐색기 쿼리 예시

다음 표에서는 Google Cloud 프로젝트에서 흐름 로그를 보기 위해 실행할 수 있는 로그 탐색기 쿼리 예시를 보여줍니다.

확인할 로그 쿼리
모든 흐름 로그
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")
서브넷의 쿼리
모든 서브넷의 로그
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")
서브네트워크의 이그레스 전용 트래픽의 로그
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) 네트워크의 모든 이그레스 트래픽에 대한 로그
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
Cloud Interconnect 및 Cloud VPN 터널의 VLAN 연결 쿼리(미리보기)
모든 VLAN 연결 및 Cloud VPN 터널의 로그
resource.type="vpc_flow_logs_config"
logName="projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows"
특정 VPC 흐름 로그 구성의 로그
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: Google Cloud 프로젝트 ID입니다.
  • SUBNET_NAME: 서브네트워크의 이름입니다.
  • VM_NAME: VM의 이름입니다.
  • SUBNET_RANGE: CIDR 범위입니다(예: 192.168.1.0/24).
  • CLUSTER_NAME: GKE 클러스터의 이름입니다.
  • VPC_NAME: VPC 네트워크의 이름입니다.
  • PORT1PORT2: 대상 포트입니다.
  • PROTOCOL: 통신 프로토콜입니다.
  • CONFIG_NAME: 확인하려는 VLAN 연결 또는 Cloud VPN 터널의 VPC 흐름 로그 구성 이름입니다.
  • REGION: VLAN 연결 또는 Cloud VPN 터널의 리전입니다.
  • NAME: Cloud VPN 터널의 이름입니다.

BigQuery, Pub/Sub, 커스텀 대상에 로그 라우팅

Logging 문서의 라우팅 및 스토리지 개요에 설명된 대로 Logging에서 원하는 대상으로 흐름 로그를 라우팅할 수 있습니다. 이전의 필터 예 섹션을 참조하세요.

문제 해결

Logging의 gce_subnetwork 리소스에 vpc_flows가 표시되지 않음

  • 지정된 서브넷에 Logging이 사용 설정되어 있는지 확인합니다.
  • VPC 흐름은 VPC 네트워크에서만 지원됩니다. 기존 네트워크를 사용하는 경우 로그가 표시되지 않습니다.
  • 공유 VPC 네트워크에서 로그는 서비스 프로젝트가 아닌 호스트 프로젝트에만 표시됩니다. 호스트 프로젝트에서 로그를 찾아야 합니다.
  • Logging 제외 필터는 지정된 로그를 차단합니다. VPC 흐름 로그를 삭제하는 제외 규칙이 없는지 확인하세요.
    1. 로그 라우터로 이동.
    2. Logging 버킷의 추가 작업 메뉴에서 싱크 세부정보 보기를 클릭합니다.
    3. VPC 흐름 로그를 삭제할 수 있는 제외 규칙이 없는지 확인합니다.
  • Google Cloud CLI 또는 API를 사용하여 로그 필터링 구성이 지정된 서브넷의 모든 트래픽을 필터링하는지 확인합니다. 예를 들어 filterExprfalse로 설정된 경우 로그가 표시되지 않습니다.

일부 로그에 RTT 또는 바이트 값이 없음

  • 샘플링된 패킷이 RTT를 캡처하기에 부족한 경우 RTT 측정이 누락될 수 있습니다. 이 현상은 소량 연결에서 발생할 가능성이 높습니다.
  • RTT 값은 VM에서 보고된 TCP 흐름에서만 사용할 수 있습니다.
  • 일부 패킷은 페이로드 없이 전송됩니다. 헤더만 있는 패킷이 샘플링된 경우 바이트 값은 0이 됩니다.

일부 흐름이 누락됨

  • 인그레스 패킷은 인그레스 VPC 방화벽 규칙 이후에 샘플링됩니다. 로깅할 것으로 예상하는 패킷을 거부하는 인그레스 방화벽 규칙이 없는지 확인합니다. VPC 방화벽 규칙이 인그레스 패킷을 차단하는지 확실하지 않으면 방화벽 규칙 로깅을 사용 설정하여 로그를 검사할 수 있습니다.
  • TCP, UDP, ICMP, ESP GRE 프로토콜만 지원됩니다. VPC 흐름 로그는 다른 프로토콜을 지원하지 않습니다.
  • 로그가 샘플링됩니다. 극소량 흐름의 일부 패킷이 누락될 수 있습니다.

일부 로그에 GKE 주석 누락됨

GKE 클러스터가 지원되는 버전인지 확인합니다.

일부 GKE 흐름의 로그 누락됨

클러스터에 노드 내 공개 상태가 사용 설정되어 있는지 확인합니다. 사용 설정되어 있지 않으면 동일 노드에서 포드 간의 흐름은 로깅되지 않습니다.

다음 단계