외부 패스 스루 네트워크 부하 분산기 로깅 및 모니터링

이 문서에서는 외부 패스 스루 네트워크 부하 분산기에 Cloud LoggingCloud Monitoring을 구성하고 사용하는 방법을 보여줍니다.

로깅

로그는 외부 패스 스루 네트워크 부하 분산기의 문제 해결 및 모니터링을 위한 유용한 정보를 제공합니다. 로그는 연결별로 집계되고 거의 실시간으로 내보내집니다. 로그는 인그레스 및 이그레스 트래픽 모두에 대한 각 부하 분산 인스턴스의 TCP, UDP, ESP, GRE, ICMP, ICMPv6 흐름에 대해 생성됩니다. 로그 항목에 제공된 필드에 대한 자세한 내용은 로그 필드를 참조하세요.

로그 사용에 대한 추가 요금은 발생하지 않습니다. 로그 가져오기 방법에 따라 Cloud Logging, BigQuery, Pub/Sub의 표준 가격 책정이 적용됩니다. 로그를 사용 설정해도 부하 분산기의 성능은 영향을 받지 않습니다.

Logging은 다음과 같은 이점을 제공합니다.

  • 외부 패스 스루 네트워크 부하 분산기 트래픽 모니터링. 연결별 로깅을 통해 각 연결이 제공 백엔드로 라우팅되는 방식을 파악할 수 있습니다.

  • 네트워크 문제 해결. 문제 해결을 위해 외부 패스 스루 네트워크 부하 분산기 로그를 활용할 수 있습니다. 자세한 내용은 외부 패스 스루 네트워크 부하 분산기 문제 해결을 참조하세요.

VM 흐름에 대한 외부 클라이언트의 샘플 로그 형식

다음 다이어그램은 외부 클라이언트(203.0.113.7), 외부 패스 스루 네트워크 부하 분산기(198.51.100.99), 백엔드 인스턴스(10.240.0.2)의 인바운드 및 아웃바운드 트래픽을 보여줍니다.

백엔드 VM 서비스 흐름에 대한 외부 클라이언트
외부 클라이언트에서 VM으로의 인바운드 및 아웃바운드 흐름

클라이언트에서 백엔드 인스턴스로의 연결에 대한 외부 패스 스루 네트워크 부하 분산기 로그의 형식은 다음과 같습니다.

  • connection.clientIp: 203.0.113.7
  • connection.serverIp: 198.51.100.99
  • bytesSent: 1256
  • bytesReceived: 4521

로그 샘플링 및 수집

Google Cloud는 부하 분산기 백엔드 VM에서 나가고 들어오는 패킷을 샘플링합니다. 이러한 샘플링된 패킷은 처리되어 로그를 생성합니다.

모든 패킷이 샘플링되는 것은 아닙니다. Google Cloud는 물리적 호스트의 트래픽 양에 따라 패킷의 가변 하위 집합을 샘플링합니다. 가능한 가장 낮은 샘플링 레이트는 1,024개의 패킷 중 하나입니다. 샘플링 레이트는 Google Cloud에서 동적으로 제어합니다. 샘플링 레이트는 조정할 수 없습니다.

패킷 샘플링은 다음과 같은 방식으로 방화벽 규칙과 상호 작용합니다.

  • 패킷은 이그레스 방화벽 규칙이 적용되기 전에 샘플링됩니다.
  • 패킷은 인그레스 방화벽 규칙이 적용된 이후에 샘플링됩니다.

패킷 샘플링 후 Google Cloud는 다음 절차에 따라 샘플링된 패킷을 처리합니다.

  1. 집계: 샘플링된 패킷은 5초 간격으로 집계되어 단일 흐름 항목을 생성합니다.

  2. 구성 가능한(보조) 로그 샘플링: 흐름을 샘플링하는 두 번째 샘플링 프로세스입니다. logConfig.sampleRate 매개변수에 따라 로그 항목으로 표시되는 흐름 항목의 비율을 제어합니다. logConfig.sampleRate1.0(100%)이면 샘플링된 모든 패킷이 처리됨을 의미합니다.

  3. 로그 작성: 로그 항목은 Cloud Logging에 기록됩니다.

선택적 필드

로그 레코드에는 필수 필드와 선택적 필드가 포함됩니다. 로그 필드 섹션에는 선택적 필드와 필수 필드가 나열됩니다. 모든 필수 필드는 항상 포함됩니다. 어떤 필드를 선택적 필드로 유지할지 맞춤 설정할 수 있습니다.

  • 모든 선택적 필드 포함을 선택하면 로그 레코드 형식의 모든 선택적 필드가 흐름 로그에 포함됩니다. 새 선택적 필드가 레코드 형식에 추가되면 흐름 로그에 새 필드가 자동으로 포함됩니다.

  • 모든 선택적 필드 해제를 선택하면 모든 선택적 필드가 생략됩니다.

  • 커스텀을 선택하면, serverInstance 같이 상위 필드로 포함하거나 serverInstance.vm 같이 전체 이름으로 포함할 선택적 필드를 지정할 수 있습니다.

새 선택적 필드가 레코드 형식에 추가되면 포함하도록 지정한 상위 필드 내의 새 필드가 아닌 경우 로그에 이러한 필드가 포함되지 않습니다.

상위 필드 내의 레코드 형식에 새 선택적 필드가 추가될 때 상위 필드를 사용하여 커스텀 선택적 필드를 지정할 경우 로그에 새 필드가 자동으로 포함됩니다. 예를 들어 optionalFieldA를 포함하도록 선택한 경우 이름이 optionalFieldA.subField1인 로그에 추가된 새 필드가 자동으로 포함됩니다.

선택적 필드 맞춤설정에 대한 안내는 새 백엔드 서비스에 로깅 사용 설정을 참조하세요.

응답 패킷 소스 IP 주소 요구사항

Logging은 해당 패킷의 소스 IP 주소가 부하 분산기의 전달 규칙 IP 주소와 일치하는 경우에만 백엔드 VM의 응답 패킷을 샘플링합니다. TCP 연결의 경우 응답 패킷에 항상 요청 패킷의 대상과 일치하는 소스가 있어야 합니다. 그러나 다른 프로토콜의 경우 응답 패킷이 다른 소스 IP 주소를 사용할 수 있습니다. 자세한 내용은 요청 및 반환 패킷의 IP 주소를 참조하세요.

외부 패스 스루 네트워크 부하 분산기에 사용되는 패킷 샘플링 프로세스는 응답 패킷에 외부 패스 스루 네트워크 부하 분산기에 대한 전달 규칙의 IP 주소와 일치하지 않는 소스가 있는 경우 백엔드 VM의 응답 패킷을 생략합니다.

새 백엔드 서비스에 로깅 사용 설정

콘솔

  1. Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 수정을 클릭한 다음 백엔드 구성을 클릭합니다.
  4. 백엔드 서비스 만들기를 선택한 다음 필수 백엔드 서비스 필드를 작성합니다.
  5. 로깅 섹션에서 로깅 사용 설정 체크박스를 선택합니다.
  6. 샘플링 레이트 비율을 설정합니다. 비율을 0.0~1.0(기본값)으로 설정할 수 있습니다.
  7. 선택사항: 로그에 모든 선택적 필드를 포함하려면 선택적 필드 섹션에서 모든 선택적 필드 포함을 클릭합니다.
  8. 백엔드 서비스 수정을 완료하려면 업데이트를 클릭합니다.
  9. 부하 분산기 수정을 완료하려면 업데이트를 클릭합니다.

gcloud

백엔드 서비스를 만들어 gcloud compute backend-services create 명령어로 로깅을 사용 설정합니다.

    gcloud compute backend-services create BACKEND_SERVICE \
      --region=REGION \
      --enable-logging \
      --logging-sample-rate=SAMPLE_RATE \
      --logging-optional=LOGGING_OPTIONAL \
      --logging-optional-fields=OPTIONAL_FIELDS
    

다음을 바꿉니다.

  • BACKEND_SERVICE: 백엔드 서비스 이름
  • REGION: 만들려는 백엔드 서비스의 리전
  • SAMPLE_RATE: 이 백엔드 서비스에 로깅이 사용 설정된 경우에만 이 필드를 지정할 수 있습니다.

    필드 값은 0.0 to 1.0에서 가져옵니다. 0.0은 로그가 생성되지 않음을 의미하고 1.0은 모든 샘플링된 패킷에 대해 로그가 생성됨을 의미합니다. 로깅을 사용 설정하되 샘플링 레이트를 0.0으로 설정하면 로깅을 사용 중지하는 것과 마찬가지입니다. 기본값은 1.0입니다.

  • LOGGING_OPTIONAL: 로그에 포함할 선택적 필드.
    • 모든 선택 필드를 포함하려면 INCLUDE_ALL_OPTIONAL
    • 모든 선택적 필드를 제외하려면 EXCLUDE_ALL_OPTIONAL(기본값)
    • OPTIONAL_FIELDS에 지정하는 메타데이터 필드의 커스텀 목록을 포함하려면 CUSTOM
  • OPTIONAL_FIELDS: 로그에 포함할 선택적 필드를 쉼표로 구분한 목록

    예를 들면 serverInstance.vm,serverGkeDetails입니다. LOGGING_OPTIONALCUSTOM으로 설정된 경우에만 설정할 수 있습니다.

API

regionBackendServices.insert 메서드에 대해 POST 요청을 실행하세요.

    POST https://compute.googleapis.com/compute/v1/projects/`PROJECT_ID`/regions/`REGION`/backendServices
    

모든 선택적인 필드 제외

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

모든 선택적인 필드 포함

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE,
       "optionalMode": "INCLUDE_ALL_OPTIONAL"
      }
    }
    

선택적 필드의 커스텀 목록 포함

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE,
       "optionalMode": "CUSTOM",
       "optionalFields": ["field1","field2",...]
      }
    }
    

기존 백엔드 서비스에 로깅 사용 설정

콘솔

  1. Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 수정을 클릭한 다음 백엔드 구성을 클릭합니다.
  4. 백엔드 서비스 옆에 있는 수정을 클릭합니다.
  5. 로깅 섹션에서 로깅 사용 설정 체크박스를 선택합니다.
  6. 샘플링 레이트 비율을 설정합니다. 비율을 0.0~1.0(기본값)으로 설정할 수 있습니다.
  7. 선택사항: 로그에 모든 선택적 필드를 포함하려면 선택적 필드 섹션에서 모든 선택적 필드 포함을 클릭합니다.
  8. 백엔드 서비스 수정을 완료하려면 업데이트를 클릭합니다.
  9. 부하 분산기 수정을 완료하려면 업데이트를 클릭합니다.

gcloud

gcloud compute backend-services update 명령어를 사용하여 기존 백엔드 서비스에 로깅을 사용 설정하세요.

    gcloud compute backend-services update BACKEND_SERVICE \
      --region=REGION \
      --enable-logging \
      --logging-sample-rate=SAMPLE_RATE \
      --logging-optional=LOGGING_OPTIONAL \
      --logging-optional-fields=OPTIONAL_FIELDS
    

다음을 바꿉니다.

  • BACKEND_SERVICE: 백엔드 서비스 이름
  • REGION: 만들려는 백엔드 서비스의 리전
  • SAMPLE_RATE: 이 백엔드 서비스에 로깅이 사용 설정된 경우에만 이 필드를 지정할 수 있습니다.

    필드 값은 0.0 to 1.0에서 가져옵니다. 0.0은 로그가 보고되지 않음을 의미하고 1.0은 모든 샘플링된 패킷에 대해 로그가 생성됨을 의미합니다. 로깅을 사용 설정하되 샘플링 레이트를 0.0으로 설정하면 로깅을 사용 중지하는 것과 마찬가지입니다. 기본값은 1.0입니다.

  • LOGGING_OPTIONAL: 로그에 포함할 선택적 필드.
    • 모든 선택 필드를 포함하려면 INCLUDE_ALL_OPTIONAL
    • 모든 선택적 필드를 제외하려면 EXCLUDE_ALL_OPTIONAL(기본값)
    • OPTIONAL_FIELDS에 지정하는 메타데이터 필드의 커스텀 목록을 포함하려면 CUSTOM
  • OPTIONAL_FIELDS: 로그에 포함할 선택적 필드를 쉼표로 구분한 목록

    예를 들면 serverInstance.vm,serverGkeDetails입니다. LOGGING_OPTIONALCUSTOM으로 설정된 경우에만 설정할 수 있습니다.

API

regionBackendServices/patch 메서드에 대해 PATCH 요청을 실행하세요.

      PATCH https://compute.googleapis.com/compute/v1/projects/`PROJECT_ID`/regions/`REGION`/backendServices/`BACKEND_SERVICE`
     

모든 선택적인 필드 제외

     "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE,
       "optionalMode": "EXCLUDE_ALL_OPTIONAL"
      }
     

모든 선택적인 필드 포함

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE,
       "optionalMode": "INCLUDE_ALL_OPTIONAL"
      }
    }
    

선택적 필드의 커스텀 목록 포함

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE,
       "optionalMode": "CUSTOM",
       "optionalFields": ["field1","field2",...]
      }
    }
    

기존 백엔드 서비스에 로깅 사용 중지

콘솔

  1. Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 부하 분산기의 이름을 클릭합니다.

  3. 수정을 클릭한 다음 백엔드 구성을 클릭합니다.

  4. 로깅을 완전히 사용 중지하려면 로깅 섹션에서 로깅 사용 설정 체크박스를 선택 취소합니다.

  5. 로깅을 사용 설정된 상태로 두면 다른 샘플링 레이트 비율을 설정할 수 있습니다. 비율을 0.0~1.0(기본값)으로 설정할 수 있습니다. 샘플링된 패킷의 20%에 대해서만 로그를 생성하려면 값을 0.2로 설정합니다.

  6. 백엔드 서비스 수정을 완료하려면 업데이트를 클릭합니다.

  7. 부하 분산기 수정을 완료하려면 업데이트를 클릭합니다.

gcloud

gcloud compute backend-services update 명령어를 사용하여 백엔드 서비스에 로깅을 사용 중지합니다.

gcloud compute backend-services update BACKEND_SERVICE \
  --region=REGION \
  --no-enable-logging

다음을 바꿉니다.

  • BACKEND_SERVICE: 백엔드 서비스 이름
  • REGION: 백엔드 서비스의 리전

API

regionBackendServices/patch 메서드에 대해 PATCH 요청을 실행합니다.

 PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE

 {
 "logConfig": {
   "enable": false
  }
 }
 

로그 보기

로그가 Cloud Logging에 수집되고 로그 라우터 싱크를 통해 제외되지 않으면 Cloud Logging APIGoogle Cloud CLI를 사용하여 로그를 읽을 수 있습니다.

모든 외부 패스 스루 네트워크 부하 분산기 로그를 보려면 다음 안내를 따르세요.

콘솔

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

    로그 탐색기로 이동

  2. 외부 패스 스루 네트워크 부하 분산기 규칙 리소스 유형을 선택합니다.

  3. loadbalancing.googleapis.com/flows 로그 이름을 선택합니다.

콘솔 쿼리

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

    로그 탐색기로 이동

  2. 쿼리 표시 전환을 클릭합니다.

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

    resource.type="loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule"
    logName="projects/PROJECT_ID/logs/loadbalancing.googleapis.com%2Fflows"
    
  4. 쿼리 실행을 클릭합니다.

특정 백엔드 서비스 로그 보기

특정 백엔드 서비스의 외부 패스 스루 네트워크 부하 분산기 로그를 보려면 다음 안내를 따르세요.

콘솔 쿼리

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

    로그 탐색기로 이동

  2. 쿼리 표시 전환을 클릭합니다.

  3. 다음을 쿼리 필드에 붙여넣습니다. PROJECT_ID를 프로젝트 ID로 바꾸고 BACKEND_SERVICE_NAME을 백엔드 서비스 이름으로 바꿉니다.

    resource.type="loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule"
    logName="projects/PROJECT_ID/logs/loadbalancing.googleapis.com%2Fflows"
    resource.labels.backend_service_name="BACKEND_SERVICE_NAME"
    
  4. 쿼리 실행을 클릭합니다.

백엔드 인스턴스 그룹 로그 보기

특정 백엔드 인스턴스 그룹의 외부 패스 스루 네트워크 부하 분산기 로그를 보려면 다음 안내를 따르세요.

콘솔 쿼리

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

    로그 탐색기로 이동

  2. 쿼리 표시 전환을 클릭합니다.

  3. 다음을 쿼리 필드에 붙여넣습니다. PROJECT_ID를 프로젝트 ID로, BACKEND_GROUP_NAME을 인스턴스 그룹의 이름으로 바꿉니다.

    resource.type="loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule"
    logName="projects/PROJECT_ID/logs/loadbalancing.googleapis.com%2Fflows"
    resource.labels.backend_group_name="BACKEND_GROUP_NAME"
    
  4. 쿼리 실행을 클릭합니다.

로그 필드

로그 레코드에는 모든 로그 레코드의 기본 필드인 필수 필드와 추가 정보를 추가하는 선택적 필드가 포함되어 있습니다. 선택적 필드를 생략하여 스토리지 비용을 절감할 수 있습니다.

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

모니터링 리소스는 loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule입니다.

필드 필드 형식 필드 유형: 필수 또는 선택적 설명
연결 IpConnection 필수 이 연결을 설명하는 5-튜플.
startTime 문자열 필수 집계된 시간 간격 동안 처음 관찰된 패킷의 타임스탬프(RFC 3339 날짜 문자열 형식)
endTime 문자열 필수 집계된 시간 간격 동안 마지막으로 관찰된 패킷의 타임스탬프(RFC 3339 날짜 문자열 형식)
bytesSent int64 필수 서버에서 클라이언트로 보낸 바이트 수입니다.
bytesReceived int64 필수 클라이언트로부터 서버가 수신한 바이트 수입니다.
packetsSent int64 필수 서버에서 클라이언트로 보낸 패킷 수입니다.
packetsReceived int64 필수 클라이언트로부터 서버에서 수신한 패킷 수입니다.
rtt 문자열 필수

지연 시간은 TCP 연결에 대해서만 측정됩니다. 지연 시간은 예상 네트워크 왕복 시간(RTT)과 클라이언트의 운영체제 내의 패킷을 처리하는 데 소요된 시간의 합계입니다.

샘플링된 패킷의 경우 RTT는 TCP 세그먼트를 전송하는 백엔드와 전송된 세그먼트의 시퀀스 넘버에 대한 TCP 확인을 수신하는 백엔드 간의 시간 차이를 측정하여 부하 분산된 백엔드의 관점에서 계산됩니다.

지연 시간은 숫자(초)로 시작하고 초를 나타내기 위해 's'로 끝나는 문자열로 형식이 지정됩니다. 나노초는 소수점 이하 초로 표시됩니다. 예를 들어 지연 시간 250밀리초는 '0.250000000s'로 지정됩니다.

serverInstance InstanceDetails 선택적 백엔드 VM 인스턴스 세부정보
clientLocation GeographicDetails 선택적 클라이언트에서 사용 가능한 위치 메타데이터입니다.
serverGkeDetails GkeDetails 선택적 서버 백엔드의 GKE 메타데이터입니다. 백엔드가 GKE 엔드포인트인 경우에만 사용할 수 있습니다.
networkTier NetworkTierDetails 선택적 외부 연결을 위한 네트워크 계층으로, 클라이언트가 Google Cloud 내에 있지 않은 경우에만 채워집니다.

IpConnection 필드 형식

필드 유형 설명
clientIp 문자열 클라이언트 IP 주소
clientPort int32 클라이언트 포트. TCP 및 UDP 연결에만 설정됩니다.
serverIp 문자열 서버 IP 주소(전달 규칙 IP)
serverPort int32 서버 포트입니다. TCP 및 UDP 연결에만 설정됩니다.
protocol int32 IANA 프로토콜 번호

InstanceDetails 필드 형식

필드 유형 설명
projectId 문자열 VM이 포함된 프로젝트의 ID
vm 문자열 VM의 인스턴스 이름
region 문자열 VM의 리전
zone 문자열 VM의 영역
vmIp 문자열 연결을 제공한 네트워크 인터페이스의 기본 내부 IPv4 주소

GeographicDetails 필드 형식

필드 유형 설명
continent 문자열 Continent name
regionCode 문자열 US 또는 FR 같은 유니코드 CLDR 리전 코드입니다. 대부분의 국가에서 이 코드는 ISO-3166-2 코드에 일대일 대응합니다.
subRegion 문자열 유니코드 CLDR 구획 ID(예: USCA 또는 CAON와 같은 국가의 주/도)입니다. 이러한 유니코드 코드는 ISO-3166-2 표준에 정의된 구획에서 파생된 것입니다.
city 문자열 도시 이름입니다(예: 캘리포니아주 마운틴뷰의 경우 Mountain View). 이 변수에 유효한 값의 표준 목록은 없습니다. 도시 이름에는 US-ASCII 문자, 숫자, 공백, !#$%&'*+-.^_`|~ 문자가 포함될 수 있습니다.
asn int32 이 엔드포인트가 속한 외부 네트워크의 자율 시스템 번호(ASN)입니다.

GkeDetails 필드 형식

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

ClusterDetails 필드 형식

필드 유형 설명
cluster 문자열 GKE 클러스터 이름
clusterLocation 문자열 클러스터의 위치입니다. 클러스터 위치는 영역이거나 리전일 수 있습니다.

PodDetails 필드 형식

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

ServiceDetails 필드 형식

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

NetworkTierDetails 필드 형식

필드 유형 설명
networkTier 문자열 연결에 사용되는 NetworkTier는 [PREMIUM, STANDARD, FIXED_STANDARD, UNKNOWN] 중 하나입니다.

모니터링

외부 패스 스루 네트워크 부하 분산기는 주요 측정항목을 Cloud Monitoring으로 내보냅니다.

모니터링 측정항목은 다음과 같은 목적으로 사용할 수 있습니다.

  • 부하 분산기의 구성, 사용, 성능 평가
  • 문제해결
  • 리소스 사용률 및 사용자 환경 개선

Monitoring의 사전 정의된 대시보드 외에도 Monitoring API를 통해 커스텀 대시보드를 만들고, 알림을 설정하고, 측정항목을 쿼리할 수 있습니다.

Monitoring 대시보드 보기

콘솔

  1. Google Cloud 콘솔에서 Monitoring 페이지로 이동합니다.

    Monitoring으로 이동

  2. 탐색창에서 대시보드를 선택합니다.

  3. Google Cloud 부하 분산기 대시보드를 선택합니다. 모든 부하 분산기가 표시됩니다.

  4. 부하 분산기 목록에서 부하 분산기 이름을 선택합니다.

외부 패스 스루 네트워크 부하 분산기 세부정보 창에서 선택한 부하 분산기에 대한 다양한 세부정보를 볼 수 있습니다. 이 창에는 현재 구성이 표시됩니다.

키 측정항목 창에서 각 주요 측정항목의 차트를 볼 수 있습니다. 구체적인 분석을 보려면 분석을 클릭하세요. 이 창에는 이전 구성에서 제공하는 데이터가 표시되며 외부 패스 스루 네트워크 부하 분산기 세부정보 창에는 현재 구성만 표시됩니다. 자세한 내용은 대시보드 및 차트를 참조하세요.

Monitoring 커스텀 대시보드 정의

외부 패스 스루 네트워크 부하 분산기 측정항목에 대해 커스텀 Monitoring 대시보드를 만들 수 있습니다.

수집되는 측정항목 목록은 측정항목 및 리소스 유형을 참조하세요. 결과를 필터링하는 데 사용할 수 있는 속성 목록은 필터를 참조하세요.

콘솔

  1. Google Cloud 콘솔에서 Monitoring 페이지로 이동합니다.

    Monitoring으로 이동

  2. 대시보드 > 대시보드 만들기를 선택합니다.

  3. 차트 추가를 클릭합니다.

  4. 차트 제목을 입력합니다.

  5. 측정항목과 필터를 선택합니다.

    외부 패스 스루 네트워크 부하 분산기 측정항목을 찾으려면 loadbalancing.googleapis.com/l3/external 프리픽스를 검색합니다.

  6. 저장을 클릭합니다.

Monitoring 알림 정의

다양한 외부 패스 스루 네트워크 부하 분산기 측정항목을 통해 Monitoring 알림을 정의할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Monitoring 페이지로 이동합니다.

    Monitoring으로 이동

  2. 알림 > 정책 만들기를 선택합니다.

  3. 리소스 유형 및 측정항목을 선택합니다.

    외부 패스 스루 네트워크 부하 분산기 리소스 유형과 측정항목을 찾으려면 리소스 유형 및 측정항목 찾기 필드에서 loadbalancing.googleapis.com/l3/external을 검색합니다.

  4. 구성을 지정하여 알림을 트리거할 시간을 설정합니다.

  5. 원한다면 필터를 추가합니다.

  6. 저장을 클릭합니다.

측정항목 보고 빈도 및 보관

외부 패스 스루 네트워크 부하 분산기의 측정항목은 1분 단위로 일괄적으로 Monitoring으로 내보내집니다. 모니터링 데이터는 6주간 보관됩니다. 측정항목은 샘플링된 트래픽을 기반으로 합니다. 샘플링 레이트는 동적이며 조정할 수 없습니다. 대시보드는 1시간(1H), 6시간(6H), 1일(1D), 1주(1W), 6주(6W)의 기본 주기로 데이터 분석을 제공합니다. 6주에서 60초 사이의 주기로 수동으로 분석을 요청할 수도 있습니다.

측정항목 및 리소스 유형

측정항목

다음은 Monitoring에 보고되는 외부 패스 스루 네트워크 부하 분산기의 측정항목입니다. API 요청을 만들 때 이러한 측정항목 이름을 사용할 수 있습니다.

측정항목 이름 유형 설명
loadbalancing.googleapis.com/l3/external/ingress_bytes_count 카운터 클라이언트에서 외부 패스 스루 네트워크 부하 분산기 백엔드로 전송된 바이트 수입니다. TCP 흐름의 경우 애플리케이션 스트림의 바이트만 계산됩니다.
loadbalancing.googleapis.com/l3/external/ingress_packets_count 카운터 클라이언트에서 외부 패스 스루 네트워크 부하 분산기 백엔드로 전송된 패킷 수입니다.
loadbalancing.googleapis.com/l3/external/egress_bytes_count 카운터 외부 패스 스루 네트워크 부하 분산기 백엔드에서 클라이언트로 전송된 바이트 수입니다. TCP 흐름의 경우 애플리케이션 스트림의 바이트만 계산됩니다.
loadbalancing.googleapis.com/l3/external/egress_packets_count 카운터 외부 패스 스루 네트워크 부하 분산기 백엔드에서 클라이언트로 전송된 패킷 수입니다.
loadbalancing.googleapis.com/l3/external/rtt_latencies 배포

외부 패스 스루 네트워크 부하 분산기 흐름의 TCP 연결을 통해 측정된 RTT 배포입니다.

TCP 트래픽에서만 지원됩니다.

리소스 유형

외부 패스 스루 네트워크 부하 분산기는 다음 리소스 유형을 사용합니다.

  • tcp_lb_rule
  • udp_lb_rule
  • loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule

외부 패스 스루 네트워크 부하 분산기는 TCP, UDP, ESP, GRE, ICMP, ICMPv6 트래픽을 지원할 수 있습니다.

리소스 유형을 tcp_lb_rule 또는 udp_lb_rule로 지정하여 모니터링 데이터를 TCP 또는 UDP 프로토콜로 제한할 수 있습니다. 리소스 유형을 loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule로 지정하면 TCP, UDP, ESP, GRE, ICMP, ICMPv6 프로토콜을 포함하여 지원되는 모든 프로토콜을 모니터링할 수 있습니다.

필터

측정항목은 외부 패스 스루 네트워크 부하 분산기별로 집계됩니다. 집계된 측정항목은 다음 측정기준으로 필터링할 수 있습니다.

tcp_lb_rule 또는 udp_lb_rule의 리소스 라벨

쿼리를 리소스로 제한할 수 있습니다. 이러한 값을 기준으로 결과를 그룹화할 수도 있습니다.

resource.label.<var>LABEL_KEY</var>:
label_key 유형 설명
project 문자열 이 리소스와 연결된 Google Cloud 프로젝트의 식별자입니다.
load_balancer_name 문자열 부하 분산기의 이름입니다.
region 문자열 부하 분산기의 백엔드가 있는 리전입니다. 예를 들면 us-central1, europe-west1, asia-east1입니다.
network_name 문자열 부하 분산기 백엔드가 상주하는 VPC 네트워크입니다.
backend_target_type 문자열 외부 패스 스루 네트워크 부하 분산기가 대상 풀 기반 또는 백엔드 서비스 기반인지 여부를 나타냅니다. 유효한 값은 BACKEND_SERVICE 또는 TARGET_POOL입니다.
backend_target_name 문자열 대상 풀 기반 외부 패스 스루 네트워크 부하 분산기의 경우 대상 풀의 이름입니다. 백엔드 서비스 기반의 외부 패스 스루 네트워크 부하 분산기의 경우 백엔드 서비스의 이름입니다.
forwarding_rule_name 문자열 전달 규칙의 이름입니다.
forwarding_rule_network_tier 문자열 전달 규칙의 네트워크 등급입니다.
backend_name 문자열

연결을 처리한 백엔드의 이름입니다.

백엔드 서비스 기반의 외부 패스 스루 네트워크 부하 분산기의 경우 이 값은 연결을 처리한 백엔드 인스턴스 그룹 또는 네트워크 엔드포인트 그룹(NEG)의 이름입니다.

대상 풀 기반 외부 패스 스루 네트워크 부하 분산기의 경우 이 값은 대상 풀의 이름입니다.

backend_type 문자열

연결을 처리한 백엔드의 유형입니다.

백엔드 서비스 기반의 외부 패스 스루 네트워크 부하 분산기의 경우 이 값은 INSTANCE_GROUP 또는 NETWORK_ENDPOINT_GROUP일 수 있습니다.

대상 풀 기반 외부 패스 스루 네트워크 부하 분산기의 이 값은 TARGET_POOL입니다.

backend_scope 문자열

백엔드 서비스 기반의 외부 패스 스루 네트워크 부하 분산기의 경우 백엔드 인스턴스 그룹 또는 NEG의 영역 또는 리전입니다.

대상 풀 기반 네트워크 부하 분산기의 값은 UNSUPPORTED_FOR_TARGET_POOL입니다.

backend_scope_type 문자열

연결을 처리한 백엔드 그룹의 범위 유형입니다. 유효한 값은 ZONE 또는 REGION입니다.

대상 풀 기반 네트워크 부하 분산기의 값은 UNSUPPORTED_FOR_TARGET_POOL입니다.

backend_failover_configuration 문자열 연결을 처리한 백엔드 그룹의 장애 조치 구성입니다. 유효한 값은 PRIMARY, BACKUP, UNKNOWN입니다.
backend_subnetwork_name 문자열 연결을 수신한 백엔드의 서브네트워크 이름입니다.
endpoint_zone 문자열 연결을 처리한 백엔드 VM의 영역입니다.

loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule의 리소스 라벨

쿼리를 리소스로 제한할 수 있습니다. 이러한 값을 기준으로 결과를 그룹화할 수도 있습니다.

resource.label.<var>LABEL_KEY</var>:
label_key 유형 설명
project 문자열 이 리소스와 연결된 Google Cloud 프로젝트의 식별자입니다.
region 문자열 부하 분산기의 백엔드가 있는 리전입니다. 예를 들면 us-central1, europe-west1, asia-east1입니다.
backend_network_name 문자열 부하 분산기 백엔드가 상주하는 VPC 네트워크입니다.
backend_target_type 문자열 연결을 처리한 백엔드 대상의 유형입니다. 유효한 값은 BACKEND_SERVICE 또는 TARGET_POOL입니다.
backend_service_name 문자열 연결을 처리한 백엔드 서비스의 이름입니다. backend_target_typeTARGET_POOL이면 값은 UNSUPPORTED_FOR_TARGET_POOL입니다.
primary_target_pool 문자열 기본 대상 풀의 이름입니다. backend_target_typeBACKEND_SERVICE이면 값은 UNSUPPORTED_FOR_BACKEND_SERVICE입니다.
target_pool 문자열 대상 풀의 이름입니다. backend_target_typeBACKEND_SERVICE이면 값은 UNSUPPORTED_FOR_BACKEND_SERVICE입니다.
forwarding_rule_name 문자열 외부 패스 스루 네트워크 부하 분산기의 전달 규칙 이름입니다.
backend_group_name 문자열 연결을 처리한 백엔드 그룹의 이름입니다. backend_target_typeTARGET_POOL이면 값은 UNSUPPORTED_FOR_TARGET_POOL입니다.
backend_group_type 문자열

연결을 처리한 백엔드 그룹의 유형입니다.

backend_target_typeBACKEND_SERVICE이면 값은 INSTANCE_GROUP 또는 NETWORK_ENDPOINT_GROUP입니다.

backend_target_typeTARGET_POOL이면 값은 UNSUPPORTED_FOR_TARGET_POOL입니다.

backend_group_scope 문자열 연결을 처리한 백엔드 그룹의 범위(영역 또는 리전 이름)입니다. backend_target_typeTARGET_POOL이면 값은 UNSUPPORTED_FOR_TARGET_POOL입니다.
backend_subnetwork_name 문자열 연결을 수신한 백엔드의 서브네트워크 이름입니다.
backend_zone 문자열 연결을 처리한 백엔드 VM의 영역입니다.

측정항목 라벨

측정항목 라벨로 쿼리를 제한할 수 있습니다. 이러한 값을 기준으로 결과를 그룹화할 수도 있습니다.

metric.label.<var>LABEL_KEY</var>:
label_key 유형 설명
client_country 문자열 외부 패스 스루 네트워크 부하 분산기에 대한 연결을 시작한 클라이언트의 국가입니다.
client_continent 문자열 외부 패스 스루 네트워크 부하 분산기에 대한 연결을 시작한 클라이언트의 대륙입니다.
protocol 문자열

loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule 리소스에 대한 연결의 프로토콜입니다.

tcp_lb_ruleudp_lb_rule 리소스의 경우 이 필드가 비어 있습니다.

Monitoring API 요청

Monitoring API의 v3 projects.timeSeries.list 요청을 사용하여 외부 패스 스루 네트워크 부하 분산기 측정항목을 통해 임의의 쿼리를 구성할 수 있습니다. 다양한 정의의 정확한 구조는 일반 모니터링 필터 시맨틱스를 따릅니다.

API 요청 예시

  • 2019년 7월 1일 오후 12:00~12:02(UTC)에 1m 집계를 사용해 프로젝트의 모든 외부 패스 스루 네트워크 부하 분산기에서 전송된 모든 바이트를 가져옵니다.

    timeSeries.list 매개변수:

    • name: projects/PROJECT_ID
    • Filter: resource.type = "tcp_lb_rule"metric.name="loadbalancing.googleapis.com/l3/external/egress_bytes_count"
    • interval.start_time: 2019-07-01T12:00:00Z
    • interval.end_time: 2019-07-01T12:02:00Z
    • aggregation.alignmentPeriod: 60s
    • aggregation.crossSeriesReducer: REDUCE_SUM
    • aggregation.perSeriesAligner: ALIGN_SUM
  • 2019년 7월 1일 오후 12:19~12:20(UTC)에 프로젝트의 모든 외부 패스 스루 네트워크 부하 분산기를 통해 측정한 RTT 측정치의 중앙값을 클라이언트 국가별로 나눠서 가져옵니다.

    timeSeries.list 매개변수:

    • name: projects/PROJECT_ID
    • Filter: resource.type = "tcp_lb_rule"metric.name="loadbalancing.googleapis.com/l3/external/rtt_latencies"
    • interval.start_time: 2019-07-01T12:19:00Z
    • interval.end_time: 2019-07-01T12:20:00Z
    • aggregation.alignmentPeriod: 60s
    • aggregation.crossSeriesReducer: REDUCE_SUM
    • aggregation.groupByFields: metric.label.client_country
    • aggregation.perSeriesAligner: ALIGN_PERCENTILE_50
  • 2019년 7월 1일 오후 12:19~12:20(UTC)에 특정 외부 패스 스루 네트워크 부하 분산기에서 전송한 총 바이트를 엔드포인트 영역 및 클라이언트 대륙별로 나누어 가져옵니다.

    timeSeries.list 매개변수:

    • name: projects/PROJECT_ID
    • Filter: resource.type = "tcp_lb_rule", resource.label.load_balancer_name = "netlb-bs-1", metric.name="loadbalancing.googleapis.com/l3/external/ingress_bytes_count"
    • interval.start_time: 2019-07-01T12:19:00Z
    • interval.end_time: 2017-07-01T12:20:00Z
    • aggregation.alignmentPeriod: 60s
    • aggregation.crossSeriesReducer: REDUCE_SUM
    • aggregation.groupByFields: metric.label.client_continent
    • aggregation.groupByFields: resource.label.endpoint_zone
    • aggregation.perSeriesAligner: ALIGN_SUM

다음 단계