흐름 로그 액세스

이 페이지에서는 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)
특정 Google Kubernetes Engine(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:*)
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

다음을 바꿉니다.

  • 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. Logging 버킷의 추가 작업 메뉴에서 싱크 세부정보 보기를 클릭합니다.
    3. VPC 흐름 로그를 삭제할 수 있는 제외 규칙이 없는지 확인합니다.

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

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

일부 흐름이 누락됨

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

일부 로그에 GKE 주석 누락됨

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

일부 GKE 흐름의 로그 누락됨

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

다음 단계