VPC 흐름 로그 사용

VPC 흐름 로그는 GKE 노드로 사용되는 인스턴스를 포함하여 VM 인스턴스에서 전송되거나 수신되는 네트워크 흐름의 샘플을 기록합니다. 이러한 로그를 네트워크 모니터링, 포렌식, 실시간 보안 분석, 비용 최적화에 사용할 수 있습니다.

이 페이지에서는 사용자가 VPC 흐름 로그에 설명된 개념에 익숙하다고 가정합니다.

VPC 흐름 로그 사용 설정

VPC 흐름 로그를 사용 설정하면 서브넷의 모든 VM에 대해 로깅이 사용 설정됩니다. 그러나 로깅에 기록되는 정보의 양을 줄일 수 있습니다. 제어할 수 있는 매개변수에 대한 자세한 내용은 로그 샘플링 및 집계를 참조하세요.

메타데이터 필드를 맞춤설정하거나 로그 필터링을 구성하려면 gcloud CLI 또는 API를 사용합니다.

서브넷을 만들 대 VPC 흐름 로그 사용 설정

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 서브넷을 추가할 네트워크를 클릭합니다.

  3. 서브넷 추가를 클릭합니다.

  4. 흐름 로그에서 사용을 선택합니다.

  5. 로그 샘플링 및 집계를 조정하려는 경우 로그 구성을 클릭하고 다음을 조정합니다.

    • 집계 간격
    • 최종 로그 항목에 메타데이터를 포함할지 여부. 기본적으로 메타데이터 포함에는 모든 필드가 포함됩니다.
    • 샘플링 레이트. 100%는 모든 항목이 유지됨을 의미합니다.
  6. 기타 필드를 적절히 지정합니다.

  7. 추가를 클릭합니다.

gcloud

  1. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. 다음 명령어를 실행합니다.

    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_METADATAcustom으로 설정된 경우에만 설정할 수 있습니다.

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_FIELDSmetadata: 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 흐름 로그가 사용 설정됩니다.
module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 9.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "my-custom-mode-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "subnet-01"
      subnet_ip     = "10.10.10.0/24"
      subnet_region = "us-west1"
    },
    {
      subnet_name           = "subnet-02"
      subnet_ip             = "10.10.20.0/24"
      subnet_region         = "us-west1"
      subnet_private_access = "true"
      subnet_flow_logs      = "true"
    },
    {
      subnet_name               = "subnet-03"
      subnet_ip                 = "10.10.30.0/24"
      subnet_region             = "us-west1"
      subnet_flow_logs          = "true"
      subnet_flow_logs_interval = "INTERVAL_10_MIN"
      subnet_flow_logs_sampling = 0.7
      subnet_flow_logs_metadata = "INCLUDE_ALL_METADATA"
      subnet_flow_logs_filter   = "false"
    }
  ]
}

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

기존 서브넷의 VPC 흐름 로그 사용 설정

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 업데이트할 서브넷을 클릭합니다.

  3. 수정을 클릭합니다.

  4. 흐름 로그에서 사용을 선택합니다.

  5. 로그 샘플링 및 집계를 조정하려는 경우 로그 구성을 클릭하고 다음을 조정합니다.

    • 집계 간격
    • 최종 로그 항목에 메타데이터를 포함할지 여부. 기본적으로 메타데이터 포함에는 모든 필드가 포함됩니다.
    • 샘플링 레이트. 100%는 모든 항목이 유지됨을 의미합니다.
  6. 저장을 클릭합니다.

gcloud

  1. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. 다음 명령어를 실행합니다.

    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_METADATAcustom으로 설정된 경우에만 설정할 수 있습니다.

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초 간격으로 캡처된 흐름을 기반으로 합니다. 또한 각 로그의 크기는 메타데이터 주석을 사용 설정했는지 여부에 따라 달라집니다.

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 비용을 예측할 서브넷을 클릭합니다.

  3. 수정을 클릭합니다.

  4. 흐름 로그에서 사용을 선택합니다.

  5. 로그 구성을 클릭합니다.

  6. 예상치를 보려면 예상되는 일일 생성 로그를 확인하세요.

  7. 취소를 클릭하면 변경 사항이 저장되지 않습니다.

VPC 흐름 로그가 사용 설정된 서브넷 보기

네트워크에서 VPC 흐름 로그가 사용 설정된 서브넷을 확인할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 흐름 로그 열에서 Logging의 사용 설정 또는 중지 여부를 확인할 수 있습니다.

gcloud

  1. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. 다음 명령어를 실행합니다.

    gcloud compute networks subnets list \
       --project PROJECT_ID \
       --network="NETWORK" \
       --format="csv(name,region,logConfig.enable)"

    다음을 바꿉니다.

    • PROJECT_ID: 쿼리하려는 프로젝트 ID
    • NETWORK: 서브넷이 포함된 네트워크 이름

VPC 흐름 로그 매개변수 업데이트

로그 샘플링 매개변수를 수정할 수 있습니다. 지정할 수 있는 매개변수에 대한 자세한 내용은 로그 샘플링 및 집계를 참조하세요.

메타데이터 필드를 맞춤설정하거나 로그 필터링을 구성하려면 gcloud CLI 또는 API를 사용합니다.

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 업데이트할 서브넷을 클릭합니다.

  3. 수정을 클릭합니다.

  4. 로그 샘플링 및 집계를 조정하려는 경우 로그 구성을 클릭하고 다음을 조정합니다.

    • 집계 간격
    • 최종 로그 항목에 메타데이터를 포함할지 여부. 기본적으로 메타데이터 포함에는 모든 필드가 포함됩니다.
    • 샘플링 레이트. 100%는 모든 항목이 유지됨을 의미합니다.
  5. 저장을 클릭합니다.

gcloud

  1. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. 다음 명령어를 실행합니다.

    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_METADATAcustom으로 설정된 경우에만 설정할 수 있습니다.

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 흐름 로그 사용 중지

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 업데이트할 서브넷을 클릭합니다.

  3. 수정을 클릭합니다.

  4. 흐름 로그에서 사용 중지를 선택합니다.

  5. 저장을 클릭합니다.

gcloud

  1. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. 다음 명령어를 실행합니다.

    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 액세스 제어 가이드를 참조하세요.

모든 흐름 로그 액세스

콘솔

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

    로그 탐색기로 이동

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

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

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

  5. 로그 이름 선택 목록에서 vpc_flows를 클릭한 다음 적용을 클릭합니다.

다른 방법은 다음과 같습니다.

콘솔

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

    로그 탐색기로 이동

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

  3. 다음을 쿼리 편집기 필드에 붙여넣습니다. PROJECT_ID를 프로젝트 ID로 바꿉니다.

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows"
    

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

특정 서브넷의 로그 액세스

콘솔

  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"
    

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

특정 VM의 로그 액세스

콘솔

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

    로그 탐색기로 이동

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

  3. 다음을 쿼리 편집기 필드에 붙여넣습니다. 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"
    

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

특정 서브넷 범위로 가는 트래픽의 로그 액세스

콘솔

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

    로그 탐색기로 이동

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

  3. 다음을 쿼리 편집기 필드에 붙여넣습니다. PROJECT_ID를 프로젝트 ID로 바꾸고 SUBNET_RANGE192.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)
    

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

특정 GKE 클러스터의 로그 액세스

콘솔

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

    로그 탐색기로 이동

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

  3. 다음을 쿼리 편집기 필드에 붙여넣습니다. PROJECT_ID를 프로젝트 ID로 바꾸고 SUBNET_NAME을 서브네트워크 이름으로 바꿉니다.

    resource.type="k8s_cluster"
    logName="projects/PROJECT_ID/logs/vpc_flows"
    resource.labels.cluster_name="CLUSTER_NAME"
    

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

서브넷의 이그레스 트래픽 로그만 액세스

콘솔

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

    로그 탐색기로 이동

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

  3. 다음을 쿼리 편집기 필드에 붙여넣습니다. 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:*)
    

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

VPC 네트워크의 모든 이그레스 트래픽에 대한 로그 액세스

콘솔

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

    로그 탐색기로 이동

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

  3. 다음을 쿼리 편집기 필드에 붙여넣습니다. 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:*)
    
  4. 쿼리 실행을 클릭합니다.

특정 포트 및 프로토콜에 대한 액세스 로그

개별 대상 포트

콘솔

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

    로그 탐색기로 이동

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

  3. 다음을 쿼리 편집기 필드에 붙여넣습니다. 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
    

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

2개 이상의 대상 포트

콘솔

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

    로그 탐색기로 이동

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

  3. 다음을 쿼리 편집기 필드에 붙여넣습니다. PROJECT_ID를 프로젝트 ID로, PORT1PORT2를 대상 포트로, 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
    

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

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

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

문제 해결

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

  • 지정된 서브넷에 Logging이 사용 설정되어 있는지 확인합니다.
  • VPC 흐름은 VPC 네트워크에서만 지원됩니다. 기존 네트워크를 사용하는 경우 로그를 볼 수 없습니다.
  • 공유 VPC 네트워크에서 로그는 서비스 프로젝트가 아닌 호스트 프로젝트에만 표시됩니다. 호스트 프로젝트에서 로그를 찾아야 합니다.
  • Logging 제외 필터는 지정된 로그를 차단합니다. VPC 흐름 로그를 삭제하는 제외 규칙이 없는지 확인하세요.
    1. 리소스 사용량으로 이동합니다.
    2. 제외 탭을 클릭합니다.
    3. 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에서는 숫자 전체를 검색해야 하며,

다음 단계