VPC 흐름 로그 사용
VPC 흐름 로그는 GKE 노드로 사용되는 인스턴스를 포함하여 VM 인스턴스에서 전송되거나 수신되는 네트워크 흐름의 샘플을 기록합니다. 이러한 로그를 네트워크 모니터링, 포렌식, 실시간 보안 분석, 비용 최적화에 사용할 수 있습니다.
이 페이지에서는 사용자가 VPC 흐름 로그에 설명된 개념에 익숙하다고 가정합니다.
VPC 흐름 로그 사용 설정
VPC 흐름 로그를 사용 설정하면 서브넷의 모든 VM에 대해 로깅이 사용 설정됩니다. 그러나 로깅에 기록되는 정보의 양을 줄일 수 있습니다. 제어할 수 있는 매개변수에 대한 자세한 내용은 로그 샘플링 및 집계를 참조하세요.
메타데이터 필드를 맞춤설정하거나 로그 필터링을 구성하려면 gcloud CLI 또는 API를 사용합니다.
서브넷을 만들 대 VPC 흐름 로그 사용 설정
콘솔
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
서브넷을 추가할 네트워크를 클릭합니다.
서브넷 추가를 클릭합니다.
흐름 로그에서 사용을 선택합니다.
로그 샘플링 및 집계를 조정하려는 경우 로그 구성을 클릭하고 다음을 조정합니다.
- 집계 간격
- 최종 로그 항목에 메타데이터를 포함할지 여부. 기본적으로 메타데이터 포함에는 모든 필드가 포함됩니다.
- 샘플링 레이트.
100%
는 모든 항목이 유지됨을 의미합니다.
기타 필드를 적절히 지정합니다.
추가를 클릭합니다.
gcloud
-
Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.
Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.
다음 명령어를 실행합니다.
gcloud compute networks subnets create SUBNET_NAME \ --enable-flow-logs \ [--logging-aggregation-interval=AGGREGATION_INTERVAL] \ [--logging-flow-sampling=SAMPLE_RATE] \ [--logging-filter-expr=FILTER_EXPRESSION] \ [--logging-metadata=LOGGING_METADATA] \ [--logging-metadata-fields=METADATA_FIELDS] \ [other flags as needed]
다음을 바꿉니다.
AGGREGATION_INTERVAL
: 해당 서브넷에서 흐름 로그의 집계 간격. 이 간격은 5초(기본값), 30초, 1분, 5분, 10분, 15분 중 하나로 설정할 수 있습니다.SAMPLE_RATE
: 흐름 샘플링 레이트. 흐름 샘플링은0.0
(샘플링 없음)에서1.0
(모든 로그)까지 설정할 수 있습니다. 기본값은0.5
입니다.FILTER_EXPRESSION
: 보관할 로그를 정의하는 표현식입니다. 표현식은 2,048자로 제한됩니다. 자세한 내용은 로그 필터링을 참조하세요.LOGGING_METADATA
: 로그에 포함할 메타데이터 주석입니다.- 모든 메타데이터 주석을 포함하는
include-all
- 모든 메타데이터 주석을 제외하는
exclude-all
(기본값) METADATA_FIELDS
에 지정하는 메타데이터 필드의 커스텀 목록을 포함하는custom
- 모든 메타데이터 주석을 포함하는
METADATA_FIELDS
: 로그에 포함할 메타데이터 필드의 쉼표로 구분된 목록입니다. 예를 들면src_instance,dst_instance
입니다.LOGGING_METADATA
가custom
으로 설정된 경우에만 설정할 수 있습니다.
API
새 서브넷을 만들 때 VPC 흐름 로그를 사용 설정합니다.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "logConfig": { "aggregationInterval": "AGGREGATION_INTERVAL", "flowSampling": SAMPLING_RATE, "filterExpr": EXPRESSION, "metadata": METADATA_SETTING, "metadataFields": METADATA_FIELDS, "enable": true }, "ipCidrRange": "IP_RANGE", "network": "NETWORK_URL", "name": "SUBNET_NAME" }
자리표시자를 유효한 값으로 바꿉니다.
PROJECT_ID
는 서브넷이 생성될 프로젝트의 ID입니다.REGION
은 서브넷이 생성될 리전입니다.AGGREGATION_INTERVAL
은 서브넷에서 흐름 로그의 집계 간격을 설정합니다. 간격은INTERVAL_5_SEC
,INTERVAL_30_SEC
,INTERVAL_1_MIN
,INTERVAL_5_MIN
,INTERVAL_10_MIN
,INTERVAL_15_MIN
중 하나로 설정할 수 있습니다.SAMPLING_RATE
는 흐름 샘플링 레이트입니다. 흐름 샘플링은0.0
(샘플링 없음)에서1.0
(모든 로그)까지 설정할 수 있습니다. 기본값은.0.5
입니다.EXPRESSION
은 실제로 기록되는 로그를 필터링하는 데 사용하는 필터 표현식입니다. 표현식은 2,048자로 제한됩니다. 자세한 내용은 로그 필터링을 참조하세요.METADATA_SETTING
은 모든 메타데이터를 로깅할지(INCLUDE_ALL_METADATA
), 어떠한 메타데이터도 로깅하지 않을지(EXCLUDE_ALL_METADATA
), 특정 메타데이터만 로깅할지(CUSTOM_METADATA
) 여부를 지정합니다. 이 필드가CUSTOM_METADATA
로 설정된 경우metadataFields
필드도 채웁니다. 기본값은EXCLUDE_ALL_METADATA
입니다. 자세한 내용은 메타데이터 주석을 참조하세요.METADATA_FIELDS
는metadata: CUSTOM_METADATA
를 설정할 때 캡처할 메타데이터 필드이며, 메타데이터 필드를 쉼표로 구분한 목록입니다(예:src_instance, src_vpc.project_id
).IP_RANGE
는 서브넷의 기본 내부 IP 주소 범위입니다.NETWORK_URL
은 서브넷이 생성될 VPC 네트워크 URL입니다.SUBNET_NAME
은 서브넷의 이름입니다.
자세한 내용은 subnetworks.insert
메서드를 참조하세요.
Terraform
Terraform 모듈을 사용하여 커스텀 모드 VPC 네트워크 및 서브넷을 만들 수 있습니다.
다음 예시에서는 다음과 같이 서브넷 3개를 만듭니다.
subnet-01
에서 VPC 흐름 로그를 사용 중지했습니다. 서브넷을 만들 때 VPC 흐름 로그를 명시적으로 사용 설정하지 않으면 사용 중지됩니다.subnet-02
에서는 기본 흐름 로그 설정으로 VPC 흐름 로그가 사용 설정됩니다.subnet-03
에서는 일부 커스텀 설정과 함께 VPC 흐름 로그가 사용 설정됩니다.
Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.
기존 서브넷의 VPC 흐름 로그 사용 설정
콘솔
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
업데이트할 서브넷을 클릭합니다.
수정을 클릭합니다.
흐름 로그에서 사용을 선택합니다.
로그 샘플링 및 집계를 조정하려는 경우 로그 구성을 클릭하고 다음을 조정합니다.
- 집계 간격
- 최종 로그 항목에 메타데이터를 포함할지 여부. 기본적으로 메타데이터 포함에는 모든 필드가 포함됩니다.
- 샘플링 레이트.
100%
는 모든 항목이 유지됨을 의미합니다.
저장을 클릭합니다.
gcloud
-
Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.
Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.
다음 명령어를 실행합니다.
gcloud compute networks subnets update SUBNET_NAME \ --enable-flow-logs \ [--logging-aggregation-interval=AGGREGATION_INTERVAL] \ [--logging-flow-sampling=SAMPLE_RATE] \ [--logging-filter-expr=FILTER_EXPRESSION] \ [--logging-metadata=LOGGING_METADATA] \ [--logging-metadata-fields=METADATA_FIELDS] \ [other flags as needed]
다음을 바꿉니다.
AGGREGATION_INTERVAL
: 해당 서브넷에서 흐름 로그의 집계 간격. 이 간격은 5초(기본값), 30초, 1분, 5분, 10분, 15분 중 하나로 설정할 수 있습니다.SAMPLE_RATE
: 흐름 샘플링 레이트. 흐름 샘플링은0.0
(샘플링 없음)에서1.0
(모든 로그)까지 설정할 수 있습니다. 기본값은0.5
입니다.FILTER_EXPRESSION
은 보관할 로그를 정의하는 표현식입니다. 표현식은 2,048자로 제한됩니다. 자세한 내용은 로그 필터링을 참조하세요.LOGGING_METADATA
: 로그에 포함할 메타데이터 주석입니다.- 모든 메타데이터 주석을 포함하는
include-all
- 모든 메타데이터 주석을 제외하는
exclude-all
(기본값) METADATA_FIELDS
에 지정하는 메타데이터 필드의 커스텀 목록을 포함하는custom
- 모든 메타데이터 주석을 포함하는
METADATA_FIELDS
: 로그에 포함할 메타데이터 필드의 쉼표로 구분된 목록입니다. 예를 들면src_instance,dst_instance
입니다.LOGGING_METADATA
가custom
으로 설정된 경우에만 설정할 수 있습니다.
API
기존 서브넷의 VPC 흐름 로그를 사용 설정합니다.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME { "logConfig": { "enable": true ...other logging fields. }, "fingerprint": "SUBNETWORK_FINGERPRINT" }
자리표시자를 유효한 값으로 바꿉니다.
PROJECT_ID
는 서브넷이 있는 프로젝트의 ID입니다.REGION
은 서브넷이 있는 리전입니다.SUBNET_NAME
은 기존 서브넷의 이름입니다.SUBNET_FINGERPRINT
는 서브넷을 설명할 때 제공되는 기존 서브넷의 디지털 지문 ID입니다.- 다른 로깅 필드의 경우 서브넷을 만들 때 VPC 흐름 로깅 사용 설정을 참조하세요.
자세한 내용은 subnetworks.patch
메서드를 참조하세요.
기존 서브넷의 예상 로그 볼륨 보기
Google Cloud Console은 기존 서브넷의 예상 로그 볼륨을 제공하며, 이를 통해 흐름 로그 사용을 설정하기 위한 비용을 예측할 수 있습니다. 예상치는 지난 7일 동안 서브넷에 대해 5초 간격으로 캡처된 흐름을 기반으로 합니다. 또한 각 로그의 크기는 메타데이터 주석을 사용 설정했는지 여부에 따라 달라집니다.
콘솔
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
비용을 예측할 서브넷을 클릭합니다.
수정을 클릭합니다.
흐름 로그에서 사용을 선택합니다.
로그 구성을 클릭합니다.
예상치를 보려면 예상되는 일일 생성 로그를 확인하세요.
취소를 클릭하면 변경 사항이 저장되지 않습니다.
VPC 흐름 로그가 사용 설정된 서브넷 보기
네트워크에서 VPC 흐름 로그가 사용 설정된 서브넷을 확인할 수 있습니다.
콘솔
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
흐름 로그 열에서 Logging의 사용 설정 또는 중지 여부를 확인할 수 있습니다.
gcloud
-
Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.
Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.
다음 명령어를 실행합니다.
gcloud compute networks subnets list \ --project PROJECT_ID \ --network="NETWORK" \ --format="csv(name,region,logConfig.enable)"
다음을 바꿉니다.
PROJECT_ID
: 쿼리하려는 프로젝트 IDNETWORK
: 서브넷이 포함된 네트워크 이름
VPC 흐름 로그 매개변수 업데이트
로그 샘플링 매개변수를 수정할 수 있습니다. 지정할 수 있는 매개변수에 대한 자세한 내용은 로그 샘플링 및 집계를 참조하세요.
메타데이터 필드를 맞춤설정하거나 로그 필터링을 구성하려면 gcloud CLI 또는 API를 사용합니다.
콘솔
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
업데이트할 서브넷을 클릭합니다.
수정을 클릭합니다.
로그 샘플링 및 집계를 조정하려는 경우 로그 구성을 클릭하고 다음을 조정합니다.
- 집계 간격
- 최종 로그 항목에 메타데이터를 포함할지 여부. 기본적으로 메타데이터 포함에는 모든 필드가 포함됩니다.
- 샘플링 레이트.
100%
는 모든 항목이 유지됨을 의미합니다.
저장을 클릭합니다.
gcloud
-
Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.
Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.
다음 명령어를 실행합니다.
gcloud compute networks subnets update SUBNET_NAME \ [--logging-aggregation-interval=AGGREGATION_INTERVAL] \ [--logging-flow-sampling=SAMPLE_RATE] \ [--logging-filter-expr=FILTER_EXPRESSION] \ [--logging-metadata=LOGGING_METADATA] \ [--logging-metadata-fields=METADATA_FIELDS] \
다음을 바꿉니다.
AGGREGATION_INTERVAL
: 해당 서브넷에서 흐름 로그의 집계 간격. 이 간격은 5초(기본값), 30초, 1분, 5분, 10분, 15분 중 하나로 설정할 수 있습니다.SAMPLE_RATE
: 흐름 샘플링 레이트. 흐름 샘플링은0.0
(샘플링 없음)에서1.0
(모든 로그)까지 설정할 수 있습니다. 기본값은0.5
입니다.FILTER_EXPRESSION
은 보관할 로그를 정의하는 표현식. 표현식은 2,048자로 제한됩니다. 자세한 내용은 로그 필터링을 참조하세요.LOGGING_METADATA
: 로그에 포함할 메타데이터 주석입니다.- 모든 메타데이터 주석을 포함하는
include-all
- 모든 메타데이터 주석을 제외하는
exclude-all
(기본값) METADATA_FIELDS
에 지정하는 메타데이터 필드의 커스텀 목록을 포함하는custom
- 모든 메타데이터 주석을 포함하는
METADATA_FIELDS
: 로그에 포함할 메타데이터 필드의 쉼표로 구분된 목록입니다. 예를 들면src_instance,dst_instance
입니다.LOGGING_METADATA
가custom
으로 설정된 경우에만 설정할 수 있습니다.
API
로그 샘플링 필드를 수정하여 VPC 흐름 로그 동작을 업데이트합니다.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME { "logConfig": { ...fields to modify }, "fingerprint": "SUBNETWORK_FINGERPRINT" }
자리표시자를 유효한 값으로 바꿉니다.
PROJECT_ID
는 서브넷이 있는 프로젝트의 ID입니다.REGION
은 서브넷이 있는 리전입니다.SUBNET_NAME
은 기존 서브넷의 이름입니다.SUBNET_FINGERPRINT
는 서브넷을 설명할 때 제공되는 기존 서브넷의 디지털 지문 ID입니다.- 수정할 수 있는 필드는 서브넷을 만들 때 VPC 흐름 로깅 사용 설정을 참조하세요.
자세한 내용은 subnetworks.patch
메서드를 참조하세요.
서브넷의 VPC 흐름 로그 사용 중지
콘솔
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
업데이트할 서브넷을 클릭합니다.
수정을 클릭합니다.
흐름 로그에서 사용 중지를 선택합니다.
저장을 클릭합니다.
gcloud
-
Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.
Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.
다음 명령어를 실행합니다.
gcloud compute networks subnets update SUBNET_NAME \ --no-enable-flow-logs
API
로그 레코드 수집을 중지하려면 서브넷에서 VPC 흐름 로그를 중지합니다.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME { "logConfig": { "enable": false }, "fingerprint": "SUBNETWORK_FINGERPRINT" }
자리표시자를 유효한 값으로 바꿉니다.
PROJECT_ID
는 서브넷이 있는 프로젝트의 ID입니다.REGION
은 서브넷이 있는 리전입니다.SUBNET_NAME
은 기존 서브넷의 이름입니다.SUBNET_FINGERPRINT
는 서브넷을 설명할 때 제공되는 기존 서브넷의 디지털 지문 ID입니다.
자세한 내용은 subnetworks.patch
메서드를 참조하세요.
Logging을 사용하여 로그 액세스
로그 탐색기를 사용하여 VPC 흐름 로그를 볼 수 있습니다. 다음 쿼리를 사용하려면 프로젝트의 프로젝트 ID가 필요합니다.
IAM 구성
로깅 액세스 제어를 구성하려면 Logging 액세스 제어 가이드를 참조하세요.
모든 흐름 로그 액세스
콘솔
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
리소스를 클릭합니다.
리소스 선택 목록에서 서브네트워크를 클릭한 후 적용을 클릭합니다.
로그 이름을 클릭합니다.
로그 이름 선택 목록에서 vpc_flows를 클릭한 다음 적용을 클릭합니다.
다른 방법은 다음과 같습니다.
콘솔
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
쿼리 창에 쿼리 편집기 필드가 표시되지 않으면 쿼리 표시 전환 버튼을 클릭합니다.
다음을 쿼리 편집기 필드에 붙여넣습니다.
PROJECT_ID
를 프로젝트 ID로 바꿉니다.resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows"
쿼리 실행을 클릭합니다.
특정 서브넷의 로그 액세스
콘솔
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
리소스를 클릭합니다.
리소스 선택 목록에서 서브네트워크를 클릭합니다.
서브네트워크 ID 목록에서 서브넷을 선택한 후 적용을 클릭합니다.
로그 이름 선택 목록에서 vpc_flows를 클릭한 다음 적용을 클릭합니다.
다른 방법은 다음과 같습니다.
콘솔
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
쿼리 창에 쿼리 편집기 필드가 표시되지 않으면 쿼리 표시 전환 버튼을 클릭합니다.
다음을 쿼리 편집기 필드에 붙여넣습니다.
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"
쿼리 실행을 클릭합니다.
특정 VM의 로그 액세스
콘솔
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
쿼리 창에 쿼리 편집기 필드가 표시되지 않으면 쿼리 표시 전환 버튼을 클릭합니다.
다음을 쿼리 편집기 필드에 붙여넣습니다.
PROJECT_ID
를 프로젝트 ID로 바꾸고VM_NAME
을 VM 이름으로 바꿉니다.resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" jsonPayload.src_instance.vm_name="VM_NAME"
쿼리 실행을 클릭합니다.
특정 서브넷 범위로 가는 트래픽의 로그 액세스
콘솔
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
쿼리 창에 쿼리 편집기 필드가 표시되지 않으면 쿼리 표시 전환 버튼을 클릭합니다.
다음을 쿼리 편집기 필드에 붙여넣습니다.
PROJECT_ID
를 프로젝트 ID로 바꾸고SUBNET_RANGE
를192.168.1.0/24
와 같은 CIDR 범위로 바꿉니다.resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" ip_in_net(jsonPayload.connection.dest_ip, SUBNET_RANGE)
쿼리 실행을 클릭합니다.
특정 GKE 클러스터의 로그 액세스
콘솔
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
쿼리 창에 쿼리 편집기 필드가 표시되지 않으면 쿼리 표시 전환 버튼을 클릭합니다.
다음을 쿼리 편집기 필드에 붙여넣습니다.
PROJECT_ID
를 프로젝트 ID로 바꾸고SUBNET_NAME
을 서브네트워크 이름으로 바꿉니다.resource.type="k8s_cluster" logName="projects/PROJECT_ID/logs/vpc_flows" resource.labels.cluster_name="CLUSTER_NAME"
쿼리 실행을 클릭합니다.
서브넷의 이그레스 트래픽 로그만 액세스
콘솔
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
쿼리 창에 쿼리 편집기 필드가 표시되지 않으면 쿼리 표시 전환 버튼을 클릭합니다.
다음을 쿼리 편집기 필드에 붙여넣습니다.
PROJECT_ID
를 프로젝트 ID로,SUBNET_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:*)
쿼리 실행을 클릭합니다.
VPC 네트워크의 모든 이그레스 트래픽에 대한 로그 액세스
콘솔
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
쿼리 창에 쿼리 편집기 필드가 표시되지 않으면 쿼리 표시 전환 버튼을 클릭합니다.
다음을 쿼리 편집기 필드에 붙여넣습니다.
PROJECT_ID
를 프로젝트 ID로 바꾸고VPC_NAME
을 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:*)
쿼리 실행을 클릭합니다.
특정 포트 및 프로토콜에 대한 액세스 로그
개별 대상 포트
콘솔
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
쿼리 창에 쿼리 편집기 필드가 표시되지 않으면 쿼리 표시 전환 버튼을 클릭합니다.
다음을 쿼리 편집기 필드에 붙여넣습니다.
PROJECT_ID
를 프로젝트 ID로,PORT
를 대상 포트로,PROTOCOL
을 프로토콜로 바꿉니다.resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" jsonPayload.connection.dest_port=PORT jsonPayload.connection.protocol=PROTOCOL
쿼리 실행을 클릭합니다.
2개 이상의 대상 포트
콘솔
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
쿼리 창에 쿼리 편집기 필드가 표시되지 않으면 쿼리 표시 전환 버튼을 클릭합니다.
다음을 쿼리 편집기 필드에 붙여넣습니다.
PROJECT_ID
를 프로젝트 ID로,PORT1
및PORT2
를 대상 포트로,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
쿼리 실행을 클릭합니다.
BigQuery, Pub/Sub, 커스텀 대상에 로그 라우팅
Logging 문서의 라우팅 및 스토리지 개요에 설명된 대로 Logging에서 원하는 대상으로 흐름 로그를 라우팅할 수 있습니다. 이전의 필터 예 섹션을 참조하세요.
문제 해결
Logging의 gce_subnetwork
리소스에 vpc_flows
가 표시되지 않음
- 지정된 서브넷에 Logging이 사용 설정되어 있는지 확인합니다.
- VPC 흐름은 VPC 네트워크에서만 지원됩니다. 기존 네트워크를 사용하는 경우 로그를 볼 수 없습니다.
- 공유 VPC 네트워크에서 로그는 서비스 프로젝트가 아닌 호스트 프로젝트에만 표시됩니다. 호스트 프로젝트에서 로그를 찾아야 합니다.
- Logging 제외 필터는 지정된 로그를 차단합니다.
VPC 흐름 로그를 삭제하는 제외 규칙이 없는지 확인하세요.
- 리소스 사용량으로 이동합니다.
- 제외 탭을 클릭합니다.
- VPC 흐름 로그를 삭제할 수 있는 제외 규칙이 없는지 확인합니다.
일부 로그에 RTT 또는 바이트 값이 없음
- 샘플링된 패킷이 RTT를 캡처하기에 부족한 경우 RTT 측정이 누락될 수 있습니다. 이 현상은 소량 연결에서 발생할 가능성이 높습니다.
- RTT 값은 TCP 흐름에서만 사용할 수 있습니다.
- 필부 패킷은 페이로드 없이 전송됩니다. 헤더만 있는 패킷이 샘플링된 경우 바이트 값은 0이 됩니다.
일부 흐름이 누락됨
- 인그레스 패킷은 인그레스 VPC 방화벽 규칙 이후에 샘플링됩니다. 로깅할 것으로 예상하는 패킷을 거부하는 인그레스 방화벽 규칙이 없는지 확인합니다. VPC 방화벽 규칙이 인그레스 패킷을 차단하는지 확실하지 않으면 방화벽 규칙 로깅을 사용 설정하여 로그를 검사할 수 있습니다.
- TCP, UDP, ICMP, ESP GRE 프로토콜만 지원됩니다. VPC 흐름 로그는 다른 프로토콜을 지원하지 않습니다.
- 로그가 샘플링됩니다. 극소량 흐름의 일부 패킷이 누락될 수 있습니다.
일부 로그에 GKE 주석 누락됨
GKE 클러스터가 지원되는 버전인지 확인합니다.
일부 GKE 흐름의 로그 누락됨
클러스터에 노드 내 공개 상태가 사용 설정되어 있는지 확인합니다. 사용 설정되어 있지 않으면 동일 노드에서 포드 간의 흐름은 로깅되지 않습니다.
흐름 로그를 사용 설정해도 사용 중지됨
내부 애플리케이션 부하 분산기에 프록시 전용 서브넷을 구성하고
gcloud compute networks subnets
명령어를 사용하여 VPC 흐름 로그를 사용 설정하면 명령어가 성공한 것으로 표시되지만 흐름 로그는 실제로 사용 설정되지 않습니다.--purpose=INTERNAL_HTTPS_LOAD_BALANCER
플래그도 포함하면--enable-flow-logs
플래그가 적용되지 않습니다.Google Cloud 콘솔 또는 API를 사용하여 흐름 로그를 사용 설정하면 'resource.enableFlowLogs' 필드의 값이 잘못되었습니다: 'true'. INTERNAL_HTTPS_LOAD_BALANCER 목적으로 서브네트워크에 설정된 필드가 잘못되었습니다'라는 오류 메시지가 표시됩니다.
프록시 전용 서브넷에는 VM이 없으므로 VPC 흐름 로그는 지원되지 않습니다. Gmail에서는 숫자 전체를 검색해야 하며,
다음 단계
- Logging 문서 보기
- Logging 싱크 문서 보기