VPC 흐름 로그 레코드 정보

이 페이지에서는 사용 가능한 기본 및 메타데이터 필드를 포함하여 VPC 흐름 로그 레코드 형식을 설명합니다. 또한 특정 기준과 일치하는 로그만 생성되도록 로그 필터링을 사용하는 방법을 설명합니다.

레코드 형식

로그 레코드에는 모든 로그 레코드의 핵심 필드인 기본 필드와 추가 정보를 추가하는 메타데이터 필드가 있습니다. 메타데이터 필드를 삭제하여 저장공간을 절약할 수 있습니다.

일부 로그 필드는 한 필드에 두 가지 이상의 데이터를 포함하는 다중 필드 형식입니다. 예를 들어 connection 필드는 IpConnection 형식이며 소스 및 대상 IP 주소, 포트, 프로토콜이 단일 필드에 포함됩니다. 이러한 다중 필드 형식의 필드는 레코드 형식 표 아래에 설명되어 있습니다.

메타데이터 필드에는 다음과 같은 제한사항이 있습니다.

  • metadata 필드의 값은 데이터 영역 경로를 기반으로 하지 않습니다. 값은 근사치이며 누락되거나 부정확할 수 있습니다. 메타데이터 필드와 달리 기본 필드의 값은 패킷 헤더에서 직접 가져옵니다.
  • internet_routing_details 필드에서는 경우에 따라 자동 시스템(AS) 필드가 누락될 수 있습니다. 예를 들어 Virtual Private Cloud(VPC) 내에서 패킷이 라우팅될 때 AS 경로 정보가 포함되지 않습니다.
필드 필드 형식 필드 유형: 기본 또는 선택적 메타데이터
유대감 IpConnection
이 연결을 설명하는 5-튜플
기본
reporter 문자열
흐름을 보고한 측. SRC 또는 DEST일 수 있습니다.
기본
rtt_msec int64
시간 간격 동안 측정된 지연 시간(TCP 흐름에만 해당). 측정된 지연 시간은 SEQ를 보내고 해당하는 ACK를 받기까지 경과한 시간입니다. 지연 시간 결과는 네트워크 RTT와 애플리케이션에서 사용한 시간의 합계입니다.
기본
bytes_sent int64
소스에서 대상으로 전송된 바이트 양
기본
packets_sent int64
소스에서 대상으로 전송된 패킷 수
기본
start_time 문자열
집계된 시간 간격 동안 처음 관찰된 패킷의 타임스탬프(RFC 3339 날짜 문자열 형식)
기본
end_time 문자열
집계된 시간 간격 동안 마지막으로 관찰된 패킷의 타임스탬프(RFC 3339 날짜 문자열 형식)
기본
internet_routing_details InternetRoutingDetails
연결이 Google Cloud와 인터넷 사이에 설정되었으면 라우팅 세부정보로 이 필드가 채워집니다. 이그레스 흐름에만 사용 가능합니다.
메타데이터
src_gke_details GkeDetails
소스 엔드포인트의 GKE 메타데이터. 엔드포인트가 GKE인 경우에만 사용할 수 있습니다.
메타데이터
dest_gke_details GkeDetails
대상 엔드포인트의 GKE 메타데이터. 엔드포인트가 GKE인 경우에만 사용할 수 있습니다.
메타데이터
src_instance InstanceDetails
연결 소스가 같은 VPC에 있는 VM인 경우 VM 인스턴스 세부정보가 이 필드에 입력됩니다. 공유 VPC 구성에서 project_id는 인스턴스를 소유하는 프로젝트(대개 서비스 프로젝트)에 해당합니다.
메타데이터
dest_instance InstanceDetails
연결 대상이 같은 VPC에 있는 VM인 경우 VM 인스턴스 세부정보가 이 필드에 입력됩니다. 공유 VPC 구성에서 project_id는 인스턴스를 소유하는 프로젝트(대개 서비스 프로젝트)에 해당합니다.
메타데이터
src_location GeographicDetails
연결 소스가 VPC 외부에 있는 경우 사용 가능한 위치 메타데이터가 이 필드에 입력됩니다.
메타데이터
dest_location GeographicDetails
연결 대상이 VPC 외부에 있는 경우 사용 가능한 위치 메타데이터가 이 필드에 입력됩니다.
메타데이터
src_vpc VpcDetails
연결 소스가 같은 VPC에 있는 VM인 경우 VPC 네트워크 세부정보가 이 필드에 입력됩니다. 공유 VPC 구성에서 project_id는 호스트 프로젝트의 프로젝트 ID에 해당합니다.
메타데이터
dest_vpc VpcDetails
연결 대상이 같은 VPC에 있는 VM인 경우 VPC 네트워크 세부정보가 이 필드에 입력됩니다. 공유 VPC 구성에서 project_id는 호스트 프로젝트의 프로젝트 ID에 해당합니다.
메타데이터

IpConnection 필드 형식

필드 유형 설명
프로토콜 int32 IANA 프로토콜 번호
src_ip 문자열 소스 IP 주소
dest_ip 문자열 대상 IP 주소
src_port int32 소스 포트
dest_port int32 목적지 포트

InternetRoutingDetails 필드 형식

필드 유형 설명
egress_as_path AsPath 관련 AS 경로의 목록입니다. 흐름에 사용 가능한 AS 경로가 여러 개 있으면 필드에 AS 경로가 여러 개 포함될 수 있습니다.

AsPath 필드 형식

필드 유형 설명
as_details AsDetails AS 경로의 모든 시스템에 대한 AS 세부정보 목록입니다. 목록은 Google Cloud 네트워크 외부에 있는 첫 번째 AS부터 시작하여 원격 IP 주소가 속하는 AS에서 종료됩니다.

AsDetails 필드 형식

필드 유형 설명
asn uint32 AS의 자율 시스템 번호(ASN)입니다.

GkeDetails 필드 형식

필드 유형 설명
클러스터 ClusterDetails GKE 클러스터 메타데이터
포드 PodDetails 트래픽의 소스나 대상이 포드일 때 채워지는 GKE 포드 메타데이터
서비스 ServiceDetails 서비스 엔드포인트에만 입력된 GKE 서비스 메타데이터. 레코드에는 서비스가 최대 2개까지 포함됩니다. 관련 서비스가 2개 넘게 있으면 이 필드에는 특별한 MANY_SERVICES 마커가 있는 단일 서비스가 포함됩니다.

ClusterDetails 필드 형식

필드 유형 설명
cluster_location 문자열 클러스터의 위치입니다. 클러스터가 영역이나 리전인지 여부에 따라 영역이나 리전일 수 있습니다.
cluster_name 문자열 GKE 클러스터 이름

PodDetails 필드 형식

필드 유형 설명
pod_name 문자열 포드 이름
pod_namespace 문자열 포드 네임스페이스

ServiceDetails 필드 형식

필드 유형 설명
service_name 문자열 서비스 이름입니다. 관련 서비스가 2개 넘게 있으면 이 필드는 특별한 MANY_SERVICES 마커로 설정됩니다.
service_namespace 문자열 서비스의 네임스페이스

예:

서비스가 2개 있는 경우 서비스 필드는 다음과 같습니다.

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

서비스가 2개를 초과하는 경우 서비스 필드는 다음과 같습니다.

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

InstanceDetails 필드 형식

필드 유형 설명
project_id 문자열 VM이 포함된 프로젝트의 ID
region 문자열 VM의 리전
vm_name 문자열 VM의 인스턴스 이름
영역 문자열 VM의 영역

GeographicDetails 필드 형식

필드 유형 설명
asn int32 이 엔드포인트가 속하는 외부 네트워크의 ASN입니다.
city 문자열 외부 엔드포인트의 도시
continent 문자열 외부 엔드포인트의 대륙
country 문자열 ISO 3166-1 Alpha-3 국가 코드로 표시되는 외부 엔드포인트의 국가
region 문자열 외부 엔드포인트의 리전

VpcDetails 필드 형식

필드 유형 설명
project_id 문자열 VPC가 포함된 프로젝트의 ID
subnetwork_name 문자열 VM이 작동 중인 하위 네트워크
vpc_name 문자열 VM이 작동 중인 VPC

메타데이터 주석

로그 레코드에는 기본 필드와 메타데이터 필드가 포함되어 있습니다. 레코드 형식 섹션에는 유형 메타데이터와 기본 유형인 필드가 나열되어 있습니다. 모든 기본 필드는 항상 포함됩니다. 유지할 메타데이터 필드를 맞춤설정할 수 있습니다.

  • 모든 메타데이터를 선택하면 VPC 흐름 로그 레코드 형식의 모든 메타데이터 필드가 흐름 로그에 포함됩니다. 새 메타데이터 필드가 레코드 형식에 추가되면 흐름 로그에 새 필드가 자동으로 포함됩니다.

  • 메타데이터를 선택하지 않으면 모든 메타데이터 입력란이 생략됩니다.

  • 커스텀 메타데이터를 선택하는 경우 src_vpc와 같은 상위 필드 또는 src_vpc.project_id와 같은 전체 이름으로 포함할 메타데이터 필드를 지정할 수 있습니다.

    새 메타데이터 필드가 레코드 형식에 추가되면 포함하도록 지정한 상위 필드 내에 있지 않은 한 흐름 로그에서 제외됩니다.

    • 상위 필드를 사용하여 커스텀 메타데이터를 지정하는 경우 해당 상위 필드 내의 레코드 형식에 새 메타데이터 필드가 추가되면 흐름 로그에 새 필드가 자동으로 포함됩니다.

    • 필드의 전체 이름을 사용하여 커스텀 메타데이터를 지정하는 경우 상위 필드에 추가되는 새 메타데이터 필드는 흐름 로그에서 제외됩니다.

메타데이터 필드 맞춤설정에 대한 자세한 내용은 서브넷을 만들 때 VPC 흐름 로깅 사용 설정에 대한 Google Cloud CLI 또는 API 안내를 참조하세요.

GKE 메타데이터 주석

GKE 클러스터의 엔드포인트가 있는 흐름은 엔드포인트의 클러스터, 포드, 서비스 세부정보를 포함할 수 있는 GKE 메타데이터 주석으로 주석 처리할 수 있습니다.

GKE 서비스 주석

ClusterIP, NodePort 또는 LoadBalancer로 전송된 트래픽은 서비스 주석을 수신할 수 있습니다. NodePort 또는 LoadBalancer로 전송되면 흐름은 연결의 두 홉에서 서비스 주석을 수신합니다.

포드의 서비스 포트로 직접 전송된 트래픽은 대상 엔드포인트에 서비스 주석으로 주석 처리됩니다.

동일한 서비스 포트에서 포드가 2개 이상의 서비스를 백업하고 있는 포드의 서비스 포트로 전송된 트래픽은 대상 엔드포인트에 여러 서비스로 주석 처리됩니다. 서비스는 2개로 제한됩니다. 2개를 초과하면 엔드포인트는 특별한 MANY_SERVICES 마커로 주석 처리됩니다.

인터넷 트래픽의 포드 주석

포드와 인터넷 간의 트래픽은 기본적으로 포드 주석을 받지 않습니다. VPC 흐름 로그는 포드 주석을 추가할 수 없습니다. 인터넷으로 전송되는 패킷의 경우 매스커레이드 에이전트가 VPC 흐름 로그가 패킷을 보기 전에 포드 IP 주소를 노드 IP 주소로 변환하기 때문입니다.

매스커레이드로 인해 포드 주석은 대상이 기본 비매스커레이드 대상 또는 커스텀 nonMasqueradeCIDRs 목록에 있는 경우에만 표시됩니다. 커스텀 nonMasqueradeCIDRs 목록에 인터넷 대상을 포함하는 경우 내부 포드 IP 주소가 인터넷에 전송되기 전에 변환할 방법을 제공해야 합니다. 비공개 및 비공개 클러스터 모두에 대해 Cloud NAT를 사용할 수 있습니다. 자세한 내용은 GKE 상호작용을 참조하세요.

로그 필터링

VPC 흐름 로그를 사용 설정하면 필터와 일치하는 로그만 보존하는 기본 필드와 메타데이터 필드를 기반으로 필터를 설정할 수 있습니다. 다른 모든 로그는 Logging에 기록되기 전에 삭제되므로 비용이 절약되고 찾고 있는 정보를 찾는 데 필요한 시간이 줄어 듭니다.

다음 필드를 제외하고 레코드 형식에 나열된 필드 하위 집합으로만 필터링할 수 있습니다.

  • rtt_msec
  • bytes_sent
  • packets_sent
  • start_time
  • end_time

VPC 흐름 로그 필터링은 속성 기반 논리 표현식을 위한 임베디드 표현식 언어인 CEL을 사용합니다. VPC 흐름 로그의 필터 표현식은 2,048자로 제한됩니다. 자세한 내용은 지원되는 CEL 논리 연산자를 참조하세요.

CEL에 대한 자세한 내용은 CEL 소개언어 정의를 참조하세요. 생성 필터 기능은 CEL 구문의 제한된 일부 하위 집합을 지원합니다.

로그 필터링을 사용하는 서브넷 만들기에 대한 자세한 내용은 서브넷을 만들 때 VPC 흐름 로그 사용 설정에 대한 gcloud CLI 또는 API 안내를 참조하세요.

로그 필터링 구성에 대한 자세한 내용은 VPC 흐름 로그 매개변수 업데이트의 gcloud CLI 또는 API 안내를 참조하세요.

예시 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))'

지원되는 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, ... 정수 상수 숫자 리터럴
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)

목록에 지정된 키-값 쌍과 일치하는 필드가 있는 객체가 포함된 경우 true 반환

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

has(x) 문자열

필드가 있으면 true를 반환합니다.

다음 단계