VPC 흐름 로그 레코드 정보
이 페이지에서는 사용 가능한 기본 및 메타데이터 필드를 포함하여 VPC 흐름 로그 레코드 형식을 설명합니다. 또한 특정 기준과 일치하는 로그만 생성되도록 로그 필터링을 사용하는 방법을 설명합니다.
레코드 형식
로그 레코드에는 모든 로그 레코드의 핵심 필드인 기본 필드와 추가 정보를 추가하는 메타데이터 필드가 있습니다. 메타데이터 필드를 삭제하여 저장공간을 절약할 수 있습니다.
일부 로그 필드는 한 필드에 두 가지 이상의 데이터를 포함하는 다중 필드 형식입니다. 예를 들어 connection
필드는 IpConnection
형식이며 소스 및 대상 IP 주소, 포트, 프로토콜이 단일 필드에 포함됩니다. 이러한 다중 필드 형식의 필드는 레코드 형식 표 아래에 설명되어 있습니다.
metadata 필드의 값은 데이터 영역 경로를 기반으로 하지 않습니다. 값은 근사치이며 누락되거나 부정확할 수 있습니다. 메타데이터 필드와 달리 기본 필드의 값은 패킷 헤더에서 직접 가져옵니다.
필드 | 필드 형식 | 필드 유형: 기본 또는 선택적 메타데이터 |
---|---|---|
연결 |
IpConnection
흐름을 설명하는 5-튜플입니다. |
기본 |
reporter |
문자열
흐름을 보고한 측. SRC , DEST , SRC_GATEWAY , 또는 DEST_GATEWAY 일 수 있습니다.
|
기본 |
rtt_msec |
int64
시간 간격 동안 측정된 지연 시간입니다. 이 필드는 VM에서 보고된 TCP 트래픽에만 사용할 수 있습니다. 측정된 지연 시간은 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에 연결된 온프레미스 또는 기타 클라우드 엔드포인트이고 다음 조건 중 하나가 충족되는 경우 이 필드는 게이트웨이 세부정보로 채워집니다.
|
메타데이터 |
dest_gateway |
GatewayDetails
흐름의 대상이 Cloud Interconnect의 VLAN 연결 또는 Cloud VPN 터널과 같은 게이트웨이를 통해 Google Cloud에 연결된 온프레미스 또는 기타 클라우드 엔드포인트이고 다음 조건 중 하나가 충족되면 이 필드에 게이트웨이 세부정보가 채워집니다.
|
메타데이터 |
src_gke_details |
GkeDetails
흐름의 소스가 Google Kubernetes Engine(GKE) 엔드포인트인 경우 이 필드는 GKE 엔드포인트 세부정보로 채워집니다. |
메타데이터 |
dest_gke_details |
GkeDetails
흐름의 대상이 GKE 엔드포인트인 경우 이 필드는 GKE 엔드포인트 세부정보로 채워집니다. |
메타데이터 |
src_google_service |
GoogleServiceDetails
흐름의 소스가 Google API인 경우 이 필드에는 사용 가능한 Google API 메타데이터가 채워집니다. |
메타데이터 |
dest_google_service |
GoogleServiceDetails
흐름의 대상이 Google API인 경우 이 필드에는 사용 가능한 Google API 메타데이터가 채워집니다. |
메타데이터 |
src_instance |
InstanceDetails
흐름의 소스가 VPC 네트워크에 있는 VM이고 다음 조건 중 하나가 충족되면 이 필드는 VM 인스턴스 세부정보로 채워집니다.
|
메타데이터 |
dest_instance |
InstanceDetails
흐름의 대상이 VPC 네트워크에 있는 VM이고 다음 조건 중 하나가 충족되는 경우 이 필드는 VM 인스턴스 세부정보로 채워집니다.
|
메타데이터 |
src_location |
GeographicDetails
흐름의 소스가 VPC 네트워크 외부의 공개 IP 주소인 경우 사용 가능한 위치 메타데이터가 이 필드에 입력됩니다. |
메타데이터 |
dest_location |
GeographicDetails
흐름의 대상이 VPC 네트워크 외부의 공개 IP 주소인 경우 사용 가능한 위치 메타데이터가 이 필드에 입력됩니다. |
메타데이터 |
src_vpc |
VpcDetails
흐름의 소스가 VPC 네트워크에 있는 VM이고 다음 조건 중 하나가 충족되면 이 필드에는 VPC 네트워크 세부정보가 채워집니다.
|
메타데이터 |
dest_vpc |
VpcDetails
흐름의 대상이 VPC 네트워크에 있는 VM이고 다음 조건 중 하나가 충족되면 이 필드는 VPC 네트워크 세부정보로 채워집니다.
|
메타데이터 |
기타 메타데이터 필드 | ||
internet_routing_details |
InternetRoutingDetails
흐름이 Google Cloud와 인터넷 사이에 설정되었으면 라우팅 세부정보로 이 필드가 채워집니다. 이그레스 흐름에만 사용 가능합니다. |
메타데이터 |
load_balancing |
LoadBalancingDetails
흐름이 다음 구성 중 하나에서 부하 분산기를 통과하는 경우 이 필드에는 Cloud Load Balancing 세부정보가 채워집니다.
|
메타데이터 |
network_service |
NetworkServiceDetails
차등화 서비스 코드 포인트(DSCP) 헤더가 설정된 경우 이 필드에 네트워크 서비스 세부정보가 입력됩니다. |
메타데이터 |
psc |
PrivateServiceConnectDetails
흐름이 다음 구성 중 하나에서 Private Service Connect를 통과하면 이 필드가 Private Service Connect 세부정보로 채워집니다.
|
메타데이터 |
IpConnection 필드 형식
필드 | 유형 | 설명 |
---|---|---|
프로토콜 | int32 | IANA 프로토콜 번호 |
src_ip | 문자열 | 소스 IP 주소 |
dest_ip | 문자열 | 대상 IP 주소 |
src_port | int32 | 소스 포트 |
dest_port | int32 | 대상 포트 |
GatewayDetails 필드 형식
필드 | 유형 | 설명 |
---|---|---|
project_id | 문자열 | 게이트웨이의 Google Cloud 프로젝트 ID |
location | 문자열 | 게이트웨이의 리전 |
name | 문자열 | 게이트웨이의 이름 |
type | 문자열 |
게이트웨이의 유형입니다. INTERCONNECT_ATTACHMENT 또는 VPN_TUNNEL 일 수 있습니다.
|
vpc | VpcDetails | 게이트웨이의 VPC 네트워크 세부정보 |
GkeDetails 필드 형식
필드 | 유형 | 설명 |
---|---|---|
클러스터 | ClusterDetails | GKE 클러스터 메타데이터 |
pod | PodDetails | 트래픽의 소스나 대상이 포드일 때 채워지는 GKE 포드 메타데이터 |
서비스 | ServiceDetails |
서비스 엔드포인트에만 입력된 GKE 서비스 메타데이터. 레코드에는 서비스가 최대 2개까지 포함됩니다. 관련 서비스가 2개 넘게 있으면 이 필드에는 특별한 MANY_SERVICES 마커가 있는 단일 서비스가 포함됩니다.
|
ClusterDetails 필드 형식
필드 | 유형 | 설명 |
---|---|---|
cluster_location | 문자열 | 클러스터의 위치입니다. 클러스터가 영역이나 리전인지 여부에 따라 영역이나 리전일 수 있습니다. |
cluster_name | 문자열 | GKE 클러스터 이름 |
PodDetails 필드 형식
필드 | 유형 | 설명 |
---|---|---|
pod_name | 문자열 | 포드 이름 |
pod_namespace | 문자열 | 포드 네임스페이스 |
pod_workload | WorkloadDetails | 포드를 제어하는 최상위 워크로드 리소스에 관한 메타데이터 |
WorkloadDetails 필드 형식
필드 | 유형 | 설명 |
---|---|---|
workload_name | 문자열 | 최상위 워크로드 컨트롤러의 이름 |
workload_type | 문자열 |
최상위 워크로드 컨트롤러의 유형입니다. DEPLOYMENT , REPLICA_SET , STATEFUL_SET , DAEMON_SET , JOB , CRON_JOB 또는 REPLICATION_CONTROLLER 일 수 있습니다.
|
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" } ]
GoogleServiceDetails 필드 형식
필드 | 유형 | 설명 |
---|---|---|
유형 | 문자열 | 이 필드는 GOOGLE_API 로 설정됩니다. |
InstanceDetails 필드 형식
필드 | 유형 | 설명 |
---|---|---|
project_id | 문자열 | VM 리소스가 포함된 Google Cloud 프로젝트의 ID |
region | 문자열 | VM의 리전 |
vm_name | 문자열 | VM의 인스턴스 이름 |
영역 | 문자열 | VM의 영역 |
GeographicDetails 필드 형식
필드 | 유형 | 설명 |
---|---|---|
asn | int32 | 이 엔드포인트가 속하는 외부 네트워크의 ASN입니다. |
도시 | 문자열 | 외부 엔드포인트의 도시 |
continent | 문자열 | 외부 엔드포인트의 대륙 |
국가 | 문자열 | 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 리포터입니다. CLIENT 또는 BACKEND 일 수 있습니다.
|
유형 | 문자열 | 부하 분산기 유형입니다. APPLICATION_LOAD_BALANCER , PROXY_NETWORK_LOAD_BALANCER , PASSTHROUGH_NETWORK_LOAD_BALANCER 또는 PROTOCOL_FORWARDING 일 수 있습니다. |
scheme | 문자열 | 부하 분산기 스키마입니다. EXTERNAL_MANAGED , INTERNAL_MANAGED , EXTERNAL , INTERNAL 또는 INTERNAL_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_GROUP , NETWORK_ENDPOINT_GROUP 또는 TARGET_POOL 일 수 있습니다.
리포터가 BACKEND 이고 부하 분산기 유형이 PASSTHROUGH_NETWORK_LOAD_BALANCER 인 경우 채워집니다. |
backend_group_location | 문자열 | 백엔드 그룹의 위치입니다. 백엔드 그룹의 범위가 영역인지 리전인지에 따라 영역이나 리전일 수 있습니다.
리포터가 BACKEND 이고 부하 분산기 유형이 PASSTHROUGH_NETWORK_LOAD_BALANCER 인 경우 채워집니다. 백엔드 그룹 유형이 TARGET_POOL 인 경우 이 필드는 채워지지 않습니다. |
vpc | VpcDetails | 부하 분산기의 VPC 네트워크 세부정보 |
NetworkServiceDetails 필드 형식
필드 | 유형 | 설명 |
---|---|---|
dscp | int32 | 패킷 헤더에 차등화 서비스 필드가 있으면 이 필드에 DSCP 값이 입력됩니다. |
PrivateServiceConnectDetails 필드 형식
필드 | 유형 | 설명 |
---|---|---|
reporter | 문자열 | Private Service Connect 리포터
CONSUMER 또는 PRODUCER 일 수 있습니다. |
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_APIS 또는 PUBLISHED_SERVICE 일 수 있습니다. |
vpc | VpcDetails | Private Service Connect 엔드포인트의 VPC 네트워크 세부정보 |
PrivateServiceConnectAttachmentDetails 필드 형식
필드 | 유형 | 설명 |
---|---|---|
project_id | 문자열 | 서비스 연결의 Google Cloud 프로젝트 ID |
region | 문자열 | 서비스 연결의 리전 |
vpc | VpcDetails | 서비스 연결의 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, ... | 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) |
목록에 지정된 키-값 쌍과 일치하는 필드가 있는 객체가 포함된 경우 true 반환 예시: dest_gke_details.service.containsFieldValue({'service_name': 'service1', 'service_namespace': 'namespace1'}) |
has(x) | 문자열 | 필드가 있으면 true를 반환합니다. |