프록시 네트워크 부하 분산기 로깅 및 모니터링

이 페이지에서는 프록시 네트워크 부하 분산기에 Cloud LoggingCloud Monitoring을 구성하고 사용하는 방법을 보여줍니다.

리소스 모니터링

다음 표에서는 부하 분산기의 리소스 이름을 지정합니다.

리전 외부 프록시 네트워크 부하 분산기

리전 내부 프록시 네트워크 부하 분산기

리전 간 내부 프록시 네트워크 부하 분산기

전역 외부 프록시 네트워크 부하 분산기

기존 프록시 네트워크 부하 분산기
Logging 모니터링 리소스 유형 '프록시 네트워크 부하 분산기 규칙'
l4_proxy_rule
'전역 외부 프록시 네트워크 부하 분산기 규칙'
tcp_ssl_proxy_rule
Monitoring 모니터링 리소스 유형 '프록시 네트워크 부하 분산기 규칙'
l4_proxy_rule
'전역 외부 프록시 네트워크 부하 분산기 규칙'
tcp_ssl_proxy_rule

프록시 네트워크 부하 분산기 로깅

로그는 부하 분산기 문제를 해결하고 모니터링하는 데 유용한 정보를 제공합니다. 각 연결에 대해 로그가 집계되면 각 연결이 처리 백엔드로 라우팅되는 방식을 파악할 수 있습니다.

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

로그 샘플링 및 수집

부하 분산기 백엔드 가상 머신(VM) 인스턴스에서 나가고 들어오는 연결이 샘플링됩니다. 이러한 샘플링된 연결은 처리되어 로그를 생성합니다. logConfig.sampleRate 매개변수에 따라 로그 항목으로 표시되는 연결의 비율을 제어합니다. logConfig.sampleRate1.0(100%)이면 모든 연결에 대해 로그가 생성되고 Cloud Logging에 작성됨을 의미합니다.

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

gcloud

gcloud compute backend-services create 명령어를 사용하세요.

리전 외부 프록시 네트워크 부하 분산기 및 리전 내부 프록시 네트워크 부하 분산기의 경우:

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

전역 외부 프록시 네트워크 부하 분산기, 기본 프록시 네트워크 부하 분산기 또는 리전 간 내부 프록시 네트워크 부하 분산기의 경우:

    gcloud compute backend-services create BACKEND_SERVICE \
        --global \
        --enable-logging \
        --logging-sample-rate=SAMPLE_RATE
    

다음을 바꿉니다.

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

    필드 값은 0.0 to 1.0부터여야 합니다. 여기서 0.0은 로그가 보고되지 않음을 의미하고 1.0은 모든 연결이 로깅됨을 의미합니다. 로깅을 사용 설정하되 샘플링 레이트를 0.0으로 설정하면 로깅을 사용 중지하는 것과 마찬가지입니다. 기본값은 1.0입니다.

API

regionBackendServices.insert 메서드에 대해 POST 요청을 실행합니다.

리전 내부 프록시 네트워크 부하 분산기의 경우:

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

리전 외부 프록시 네트워크 부하 분산기의 경우:

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

전역 외부 프록시 네트워크 부하 분산기의 경우:

backendServices.insert 메서드에 대해 POST 요청을 실행합니다.

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

기본 프록시 네트워크 부하 분산기의 경우:

backendServices.insert 메서드에 대해 POST 요청을 실행합니다.

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

리전 간 내부 프록시 네트워크 부하 분산기의 경우:

backendServices.insert 메서드에 대해 POST 요청을 실행합니다.

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

다음을 바꿉니다.

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

    필드 값은 0.0 to 1.0부터여야 합니다. 여기서 0.0은 로그가 보고되지 않음을 의미하고 1.0은 모든 연결이 로깅됨을 의미합니다. 로깅을 사용 설정하되 샘플링 레이트를 0.0으로 설정하면 로깅을 사용 중지하는 것과 마찬가지입니다. 기본값은 1.0입니다.

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

gcloud

gcloud compute backend-services update 명령어를 사용합니다.

리전 외부 프록시 네트워크 부하 분산기 및 리전 내부 프록시 네트워크 부하 분산기의 경우:

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

전역 외부 프록시 네트워크 부하 분산기, 기본 프록시 네트워크 부하 분산기 또는 리전 간 내부 프록시 네트워크 부하 분산기의 경우:

    gcloud compute backend-services update BACKEND_SERVICE \
        --global \
        --enable-logging \
        --logging-sample-rate=SAMPLE_RATE
    

다음을 바꿉니다.

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

    필드 값은 0.0 to 1.0부터여야 합니다. 여기서 0.0은 로그가 보고되지 않음을 의미하고 1.0은 모든 연결이 로깅됨을 의미합니다. 로깅을 사용 설정하되 샘플링 레이트를 0.0으로 설정하면 로깅을 사용 중지하는 것과 마찬가지입니다. 기본값은 1.0입니다.

API

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

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

리전 내부 프록시 네트워크 부하 분산기의 경우:

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

리전 외부 프록시 네트워크 부하 분산기의 경우:

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

전역 외부 프록시 네트워크 부하 분산기의 경우:

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

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

기본 프록시 네트워크 부하 분산기의 경우:

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

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

리전 간 내부 프록시 네트워크 부하 분산기의 경우:

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

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "INTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 이름
  • BACKEND_SERVICE: 백엔드 서비스 이름
  • SAMPLE_RATE: 이 백엔드 서비스에 로깅이 사용 설정된 경우에만 이 필드를 지정할 수 있습니다.

    필드 값은 0.0 to 1.0부터여야 합니다. 여기서 0.0은 로그가 보고되지 않음을 의미하고 1.0은 모든 연결이 로깅됨을 의미합니다. 로깅을 사용 설정하되 샘플링 레이트를 0.0으로 설정하면 로깅을 사용 중지하는 것과 마찬가지입니다. 기본값은 1.0입니다.

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

gcloud

gcloud compute backend-services update 명령어를 사용합니다.

리전 외부 프록시 네트워크 부하 분산기 및 리전 내부 프록시 네트워크 부하 분산기의 경우:

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

전역 외부 프록시 네트워크 부하 분산기, 기본 프록시 네트워크 부하 분산기 또는 리전 간 내부 프록시 네트워크 부하 분산기의 경우:

gcloud compute backend-services update BACKEND_SERVICE \
   --global \
   --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
   }
  }
 

전역 외부 프록시 네트워크 부하 분산기, 기본 프록시 네트워크 부하 분산기 또는 리전 간 내부 프록시 네트워크 부하 분산기의 경우:

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

 PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
  {
  "logConfig": {
    "enable": false
   }
  }
 

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 이름
  • REGION: 백엔드 서비스의 리전
  • BACKEND_SERVICE: 백엔드 서비스 이름

로그 보기

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

모든 로그를 보려면 다음 단계를 완료하세요.

콘솔

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

    로그 탐색기로 이동

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

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

콘솔 쿼리

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

    로그 탐색기로 이동

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

  3. 다음을 쿼리 필드에 붙여넣습니다.

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

다음을 바꿉니다.

  • LOG_RESOURCE_TYPE: l4_proxy_rule 또는 tcp_ssl_proxy_rule로 설정된 로깅 모니터링 리소스 유형입니다.
  • PROJECT_ID: 프로젝트의 이름

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

특정 백엔드 서비스의 로그를 보려면 다음 단계를 완료합니다.

콘솔 쿼리

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

    로그 탐색기로 이동

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

  3. 다음을 쿼리 필드에 붙여넣습니다.

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

다음을 바꿉니다.

  • LOG_RESOURCE_TYPE: l4_proxy_rule 또는 tcp_ssl_proxy_rule로 설정된 로깅 모니터링 리소스 유형입니다.
  • PROJECT_ID: 프로젝트의 이름
  • BACKEND_SERVICE_NAME: 백엔드 서비스의 이름

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

특정 백엔드 인스턴스 그룹의 로그를 보려면 다음 단계를 완료하세요.

콘솔 쿼리

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

    로그 탐색기로 이동

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

  3. 다음을 쿼리 필드에 붙여넣습니다.

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

다음을 바꿉니다.

  • LOG_RESOURCE_TYPE: l4_proxy_rule 또는 tcp_ssl_proxy_rule로 설정된 로깅 모니터링 리소스 유형입니다.
  • PROJECT_ID: 프로젝트의 이름
  • BACKEND_GROUP_NAME: 인스턴스 그룹의 이름

로깅되는 내용

로그 항목에는 트래픽 모니터링 및 디버깅에 유용한 정보가 포함됩니다. 로그 레코드에는 모든 로그 레코드의 기본 필드인 필수 필드가 포함됩니다.

필드 필드 형식 필드 유형: 필수 또는 선택적 설명
severity
timestamp
receiveTimestamp
insertID
logName
LogEntry 필수 로그 항목에 설명된 일반 필드입니다.
리소스 MonitoredResource 필수

MonitoredResource는 로그 항목과 연결된 리소스 유형입니다.

MonitoredResourceDescriptor는 유형 이름과 라벨 집합을 사용하여 MonitoredResource 객체의 스키마를 설명합니다. 자세한 내용은 리소스 라벨을 참조하세요.

jsonPayload object (Struct format) 필수 JSON 객체로 표현되는 로그 항목 페이로드입니다. JSON 객체에는 다음 필드가 포함되어 있습니다.
  • statusDetails
  • Google Cloud Armor 보안 정책 로그 항목
  • proxyStatus 필드는 전역 외부 프록시 네트워크 부하 분산기, 리전 외부 프록시 네트워크 부하 분산기, 내부 프록시 네트워크 부하 분산기가 오류 코드를 반환한 이유를 지정하는 문자열을 포함합니다. 이 필드는 기본 프록시 네트워크 부하 분산기에서 지원되지 않습니다.

    값이 빈 문자열인 경우 필드가 로깅되지 않습니다. 이는 프록시가 0, 4XX, 5XX가 아닌 오류 코드를 반환하는 경우에 발생할 수 있습니다.

    proxyStatus 필드는 다음 두 부분으로 구성됩니다.

로그 필드

로그 레코드에는 모든 로그 레코드의 기본 필드인 필수 필드가 포함됩니다.

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

다음 표에는 l4_proxy_rule 리소스에 필요한 모든 로그 필드가 나열되어 있습니다.

필드 필드 형식 설명
연결 IpConnection 이 연결을 설명하는 5-튜플.
startTime 문자열 부하 분산기에서 클라이언트 연결을 수락한 타임스탬프 (RFC 3339 날짜 string 형식)
endTime 문자열 클라이언트 또는 백엔드가 연결을 종료한 타임스탬프 (RFC 3339 날짜 string 형식)
bytesSent int64 서버에서 클라이언트로 보낸 바이트 수입니다.
bytesReceived int64 클라이언트로부터 서버가 수신한 바이트 수입니다.

IpConnection 필드 형식

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

proxyStatus 오류 필드

proxyStatus 필드에는 부하 분산기가 오류를 반환한 이유를 지정하는 문자열이 포함됩니다. proxyStatus 필드에는 proxyStatus errorproxyStatus details의 두 부분이 있습니다. 이 섹션에서는 proxyStatus error 필드에서 지원되는 문자열을 설명합니다.

proxyStatus 오류 필드는 다음 부하 분산기에 적용됩니다.

  • 전역 외부 프록시 네트워크 부하 분산기
  • 리전 외부 프록시 네트워크 부하 분산기
  • 리전 간 내부 프록시 네트워크 부하 분산기
  • 리전 내부 프록시 네트워크 부하 분산기
proxyStatus 오류 설명 일반적인 동반 응답 코드
destination_unavailable 부하 분산기가 백엔드를 사용할 수 없다고 간주합니다. 예를 들어 최근에 백엔드와 통신하려는 시도가 실패했거나 상태 점검이 실패했음을 나타낼 수 있습니다. 500, 503
connection_timeout 백엔드에 대한 연결을 열려는 부하 분산기의 시도가 시간 초과되었습니다. 504
connection_terminated

전체 응답이 수신되기 전에 백엔드에 대한 부하 분산기의 연결이 종료되었습니다.

proxyStatus error는 다음 시나리오에서 반환됩니다.

  • 전체 응답이 수신되기 전에 백엔드에 대한 부하 분산기의 연결이 종료되었습니다.
  • SSL 핸드셰이크에서 TLS 연결이 실패했고 클라이언트가 부하 분산기와의 연결을 설정하지 않았습니다.

0, 502, 503
connection_refused 백엔드에 대한 부하 분산기의 연결이 거부되었습니다. 502, 503
connection_limit_reached

부하 분산기가 백엔드에 대한 연결 수를 제한하도록 구성되었는데 이 한도가 초과되었습니다.

proxyStatus error는 다음 시나리오에서 반환됩니다.

  • 백엔드가 유지보수 모드인 경우 트래픽을 백엔드로 라우팅할 수 없습니다.
  • 요청이 로컬에서 비율 제한된 경우입니다.
  • Envoy가 메모리 부족과 같은 오류 조건을 처리하고 있습니다.
502, 503
destination_not_found 부하 분산기가 이 요청에 사용할 적절한 백엔드를 확인할 수 없습니다. 예를 들어 백엔드가 구성되지 않았을 수 있습니다. 500, 404
dns_error 백엔드 호스트 이름의 IP 주소를 찾으려고 할 때 부하 분산기에 DNS 오류가 발생했습니다. 502, 503
proxy_configuration_error 부하 분산기에 내부 구성 오류가 발생했습니다. 500
proxy_internal_error 부하 분산기에 내부 오류가 발생했습니다. 0, 500, 502
proxy_internal_response 부하 분산기가 백엔드에 연결을 시도하지 않고 응답을 생성했습니다. 문제 유형에 따른 모든 응답 코드 예를 들어 410 응답 코드는 결제 연체로 인해 백엔드를 사용할 수 없음을 의미합니다.
tls_protocol_error TLS 핸드셰이크 중 부하 분산기에 TLS 오류가 발생했습니다. 0
tls_certificate_error 서버에서 제공한 인증서를 확인하는 동안 부하 분산기에 오류가 발생했습니다. 0
tls_alert_received TLS 핸드셰이크 중 부하 분산기에 심각한 TLS 알림이 발생했습니다. 0

proxyStatus 세부정보 필드

proxyStatus 필드에는 부하 분산기가 오류를 반환한 이유를 지정하는 문자열이 포함됩니다. proxyStatus 필드에는 proxyStatus errorproxyStatus details의 두 부분이 있습니다. proxyStatus details 필드는 선택사항이며 추가 정보가 있는 경우에만 표시됩니다. 이 섹션에서는 proxyStatus details 필드에서 지원되는 문자열을 설명합니다.

proxyStatus 세부정보 필드는 다음 부하 분산기에 적용됩니다.

  • 전역 외부 프록시 네트워크 부하 분산기
  • 리전 외부 프록시 네트워크 부하 분산기
  • 리전 내부 프록시 네트워크 부하 분산기
  • 리전 간 내부 프록시 네트워크 부하 분산기
proxyStatus 세부정보 설명 일반적인 동반 응답 코드
client_disconnected_before_any_response 부하 분산기가 응답을 보내기 전에 클라이언트와의 연결이 끊어졌습니다. 0
backend_connection_closed 백엔드가 예기치 않게 부하 분산기와의 연결을 닫았습니다. 부하 분산기가 TCP 제한 시간이 부하 분산기의 10분(600초) 제한 시간보다 짧은 서드 파티 애플리케이션과 같은 다른 항목으로 트래픽을 전송하는 경우에 이러한 상황이 발생할 수 있습니다. 502
failed_to_connect_to_backend 부하 분산기가 백엔드에 연결할 수 없습니다. 이 오류에는 연결 단계 동안의 시간 제한이 포함됩니다. 503
failed_to_pick_backend 부하 분산기가 요청을 처리할 수 있는 정상적인 백엔드를 선택하지 못했습니다. 502
handled_by_identity_aware_proxy 이 응답은 액세스를 허용하기 전 클라이언트의 ID를 확인하는 동안 IAP(Identity-Aware Proxy)에 의해 생성되었습니다. 200, 302, 400, 401, 403, 500, 502
request_overall_timeout 총 요청 제한 시간을 초과했습니다. 408, 503, 504
tls_version_not_supported TLS 프로토콜 버전이 인식되지만 지원되지 않습니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
unknown_psk_identity PSK 키 설정이 필요할 때 서버가 이 오류를 전송하지만 클라이언트가 허용되는 PSK ID를 제공하지 않습니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
no_application_protocol 클라이언트 'application_layer_protocol_negotiation' 확장 프로그램이 서버가 지원하지 않는 프로토콜만 공지할 때 서버에서 전송됩니다. TLS 애플리케이션 계층 프로토콜 협상 확장 프로그램을 참조하세요. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
no_certificate 인증서를 찾을 수 없습니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
bad_certificate 인증서가 잘못되었거나 확인할 수 없는 서명이 포함되어 있습니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
unsupported_certificate 인증서가 지원되지 않는 유형입니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
certificate_revoked 서명자가 인증서를 취소했습니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
certificate_expired 인증서가 만료되었거나 유효하지 않습니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
certificate_unknown 인증서를 처리하는 동안 지정되지 않은 일부 문제가 발생하여 사용할 수 없게 되었습니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
unknown_ca 유효한 인증서 체인 또는 부분 체인이 수신되었지만 CA 인증서를 찾거나 알려진 신뢰 앵커와 일치시킬 수 없어서 인증서가 허용되지 않았습니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
unexpected_message 잘못된 핸드셰이크 메시지 또는 조기 애플리케이션 데이터와 같은 부적절한 메시지가 수신되었습니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
bad_record_mac 보호 해제할 수 없는 레코드가 수신되었습니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
record_overflow 길이가 214+256바이트를 초과하는 TLSCiphertext 레코드가 수신되었거나 레코드가 214바이트(또는 기타 협상된 한도)를 초과하는 TLSPlaintext 레코드로 복호화되었습니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
handshake_failure 사용 가능한 옵션으로 허용되는 보안 매개변수 집합을 협상할 수 없습니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
illegal_parameter 핸드셰이크의 필드가 잘못되었거나 다른 필드와 일치하지 않습니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
access_denied 유효한 인증서 또는 PSK가 수신되었지만 액세스 제어가 적용되었을 때 클라이언트가 협상을 진행하지 않았습니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
decode_error 일부 필드가 지정된 범위를 벗어나거나 메시지 길이가 잘못되어 메시지를 디코딩할 수 없습니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
decrypt_error 서명을 올바르게 확인할 수 없거나 완료된 메시지 또는 PSK 바인더를 검증할 수 없는 경우를 포함한 핸드셰이크(레코드 레이어가 아님) 암호화 작업이 실패했습니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
insufficient_security 특히 서버에는 클라이언트에서 지원하는 매개변수보다 더 안전한 매개변수가 필요하기 때문에 협상이 실패했습니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
inappropriate_fallback 클라이언트의 잘못된 연결 재시도에 대한 응답으로 서버에서 전송됩니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
user_cancelled 사용자가 프로토콜 오류와 무관한 이유로 핸드셰이크를 취소합니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
missing_extension 제공된 TLS 버전 또는 기타 협상된 매개변수에 대해 반드시 전송해야 하는 확장 프로그램이 포함되지 않은 핸드셰이크 메시지를 수신하는 엔드포인트에서 전송됩니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
unsupported_extension 지정된 핸드셰이크 메시지에 포함이 금지된 것으로 알려진 확장 프로그램을 포함하거나 해당하는 ClientHello 또는 CertificateRequest에서 처음 제공되지 않은 ServerHello 또는 Certificate의 확장 프로그램을 포함하는 핸드셰이크 메시지를 수신하는 엔드포인트에서 전송됩니다. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
unrecognized_name 'server_name' 확장 프로그램을 통해 클라이언트에서 제공한 이름으로 식별할 수 있는 서버가 없는 경우 서버에서 전송됩니다. TLS 확장 프로그램 정의를 참조하세요. 0
bad_certificate_status_response 유효하지 않거나 허용되지 않는 OCSP 응답이 'status_request' 확장 프로그램을 통해 서버에서 제공되면 클라이언트에서 전송됩니다. TLS 확장 프로그램 정의를 참조하세요. 이 오류가 발생하면 TLS 연결이 닫힙니다. 0
load_balancer_configured_resource_limits_reached 부하 분산기가 최대 연결 수와 같은 구성된 리소스 한도에 도달했습니다. 400, 500, 503

실패한 TLS 연결 로그 항목

백엔드가 선택되기 전에 클라이언트와 부하 분산기 간의 TLS 연결이 실패하면 로그 항목에 오류가 기록됩니다. 다양한 로그 샘플링 레이트로 백엔드 서비스를 구성할 수 있습니다. TLS 연결이 실패할 경우 실패한 TLS 연결 로그 샘플링 레이트는 백엔드 서비스의 가장 높은 샘플링 레이트입니다. 예를 들어 로깅 샘플링 레이트가 0.30.5인 2개의 백엔드 서비스를 구성한 경우 실패한 TLS 연결 로그 샘플링 레이트는 0.5입니다.

다음 로그 항목 세부정보를 확인하여 실패한 TLS 연결을 식별할 수 있습니다.

  • proxyStatus 오류 유형은 tls_alert_received, tls_certificate_error, tls_protocol_error, connection_terminated입니다.
  • 백엔드 정보는 없습니다.

다음 샘플은 proxyStatus error 필드가 있는 실패한 TLS 로그 항목을 보여줍니다.

   json_payload:    {
   @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
   proxyStatus: "error="tls_alert_received"; details="server_to_client: handshake_failure""
   log_name: "projects/529254013417/logs/mockservice.googleapis.com%20name"
   }
   http_request {
    latency {
      nanos: 12412000
    }
    protocol: "HTTP/1.0"
    remote_ip: "127.0.0.2"
   }
  resource {
    type: "mock_internal_http_lb_rule"
    labels {
      backend_name: ""
      backend_scope: ""
      backend_scope_type: "UNKNOWN"
      backend_target_name: ""
      backend_target_type: "UNKNOWN"
      backend_type: "UNKNOWN"
      forwarding_rule_name: "l7-ilb-https-forwarding-rule-dev"
      matched_url_path_rule: "UNKNOWN"
      network_name: "lb-network"
      region: "REGION"
      target_proxy_name: "l7-ilb-https-proxy-dev"
      url_map_name: ""
    }
  }
  timestamp: "2023-08-15T16:49:30.850785Z"
  

리소스 라벨

다음 표에는 리소스 유형 l4_proxy_rule의 리소스 라벨이 나열되어 있습니다.

필드 유형 설명
network_name 문자열 부하 분산기의 VPC 네트워크 이름
project_id 문자열 이 리소스와 연결된 Google Cloud 프로젝트의 식별자
region 문자열 부하 분산기가 정의된 리전
target_proxy_name 문자열 전달 규칙에서 참조하는 대상 프록시 객체의 이름
forwarding_rule_name 문자열 전달 규칙 객체의 이름
loadbalancing_scheme_name 문자열 부하 분산기를 내부 또는 외부 트래픽에 사용할 수 있는지 여부를 나타내는 부하 분산기의 전달 규칙 및 백엔드 서비스에 대한 속성입니다.
backend_target_name 문자열 요청을 처리하기 위해 선택한 백엔드의 이름
backend_target_type 문자열 백엔드 대상 유형 (BACKEND_SERVICE / UNKNOWN)
backend_name 문자열 백엔드 인스턴스 그룹 또는 네트워크 엔드포인트 그룹(NEG)의 이름
backend_type 문자열

인스턴스 그룹이나 NEG 또는 알 수 없는 백엔드 유형

Cloud Logging은 로깅이 사용 중지된 경우에도 backend_type이 UNKNOWN일 때 요청을 로깅합니다. 예를 들어 클라이언트가 부하 분산기에서 백엔드를 선택하기 전에 부하 분산기 연결을 닫으면 backend_typeUNKNOWN으로 설정되고 요청이 로깅됩니다. 이러한 로그는 부하 분산기가 백엔드를 선택할 수 없기 때문에 닫힌 클라이언트 요청에 대한 유용한 디버깅 정보를 제공합니다.

backend_scope 문자열 백엔드의 범위(영역 이름 또는 리전 이름). backend_name을 알 수 없다면 UNKNOWN일 수 있습니다.
backend_scope_type 문자열 백엔드의 범위(REGION/ZONE). backend_name을 알 수 없다면 UNKNOWN일 수 있습니다.

모니터링

프록시 네트워크 부하 분산기는 모니터링 데이터를 Cloud Monitoring으로 내보냅니다.

모니터링 측정항목은 다음 작업을 수행하는 데 사용할 수 있습니다.

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

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

Monitoring 대시보드 보기

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

    Monitoring으로 이동

  2. 탐색창에 리소스가 나타나면 리소스를 선택한 다음 Google Cloud 부하 분산기를 선택합니다. 그렇지 않으면 대시보드를 선택한 다음 Google Cloud 부하 분산기라는 대시보드를 선택합니다.

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

왼쪽 창에서 이 부하 분산기의 다양한 세부정보를 볼 수 있습니다. 오른쪽 창에는 시계열 그래프가 표시됩니다. 구체적인 분석을 보려면 분석을 클릭하세요.

측정항목 보고 빈도 및 보관

부하 분산기의 측정항목은 1분 단위로 일괄적으로 Monitoring으로 내보내집니다. 모니터링 데이터는 6주간 보관됩니다. 측정항목은 샘플링된 트래픽을 기반으로 합니다. 샘플링 레이트는 동적이며 조정할 수 없습니다.

대시보드는 1H(1시간), 6H(6시간), 1D(1일), 1W(1주), 6W(6주)라는 기본 주기로 데이터 분석을 제공합니다. 6주에서 1분 사이의 주기로 수동 분석을 요청할 수도 있습니다.

기존 프록시 네트워크 부하 분산기의 측정항목

기본 프록시 네트워크 부하 분산기에 대한 다음 측정항목이 Monitoring에 보고됩니다.

측정항목 이름 설명
인바운드 트래픽 tcp_ssl_proxy/ingress_bytes_count Google 프런트엔드(GFE)를 통해 외부 엔드포인트에서 구성된 백엔드로 전송된 바이트 수(초당 바이트 수)입니다.
아웃바운드 트래픽 tcp_ssl_proxy/egress_bytes_count 구성된 백엔드에서 GFE를 통해 외부 엔드포인트로 전송된 바이트 수(초당 바이트 수)입니다.
열려 있는 연결 tcp_ssl_proxy/open_connections 특정한 샘플 순간에 열려 있는 연결의 개수입니다. 샘플은 1분 간격으로 측정합니다.
초당 새로운 연결 tcp_ssl_proxy/new_connections 생성된 연결 수(클라이언트가 백엔드에 성공적으로 연결된 횟수)입니다. 계산 단위는 분 단위지만 그래프는 초당 값을 표시하도록 조정됩니다. 자세한 내용은 Monitoring 문서를 참조하세요.
초당 종료된 연결 tcp_ssl_proxy/closed_connections 종료된 연결의 수입니다. 계산 단위는 분 단위지만 그래프는 초당 값을 표시하도록 조정됩니다. 자세한 내용은 Monitoring 문서를 참조하세요.
프런트엔드 RTT tcp_ssl_proxy/frontend_tcp_rtt 클라이언트와 GFE 간의 각 연결에서 측정된 평활 왕복 시간(RTT)의 분포입니다. GFE의 TCP 스택으로 측정되며, 매번 GFE에서 클라이언트로 전송되는 애플리케이션 계층 바이트에 해당합니다. 평활 RTT는 RTT 측정에서 발생할 수 있는 변이와 이상을 처리하는 알고리즘입니다.

다른 부하 분산기의 측정항목

리전 내부 프록시 네트워크 부하 분산기, 리전 외부 프록시 네트워크 부하 분산기, 리전 간 내부 프록시 네트워크 부하 분산기, 전역 외부 프록시 네트워크 부하 분산기에 대한 다음 측정항목이 Monitoring에 보고됩니다.

측정항목 이름 설명
인바운드 트래픽 l4_proxy/ingress_bytes_count 프록시를 사용하여 클라이언트에서 백엔드 VM으로 전송된 바이트 수입니다. 60초마다 샘플링됩니다. 샘플링되면 데이터는 최대 210초 동안 표시되지 않습니다.
아웃바운드 트래픽 l4_proxy/egress_bytes_count 프록시를 사용하여 백엔드 VM에서 클라이언트로 전송된 바이트 수입니다. 60초마다 샘플링됩니다. 샘플링되면 데이터는 최대 210초 동안 표시되지 않습니다.
초당 종료된 연결 l4_proxy/tcp/closed_connections_count TCP RST 또는 TCP FIN 메시지를 사용하여 종료된 연결 수입니다. 60초마다 샘플링됩니다. 샘플링되면 데이터는 최대 210초 동안 표시되지 않습니다.

측정항목의 필터링 측정기준

측정항목은 각 부하 분산기별로 집계됩니다. 측정항목은 다음과 같은 측정기준으로 세분화할 수 있습니다.

속성 설명
백엔드 범위 연결을 제공한 인스턴스 그룹의 범위(리전 또는 영역)입니다.
백엔드 영역 인스턴스 그룹이 영역 인스턴스 그룹이라면 연결을 제공한 인스턴스 그룹의 영역입니다.
백엔드 리전 인스턴스 그룹이 리전 인스턴스 그룹인 경우, 연결을 제공한 인스턴스 그룹의 리전입니다.
프록시 대륙 사용자 TCP/SSL 연결을 종료한 GFE의 대륙입니다(예: America, Europe, Asia).
인스턴스 그룹 사용자 연결을 수신한 인스턴스 그룹의 이름입니다.
전달 규칙 GFE에 연결하는 데 사용되는 전달 규칙의 이름입니다.
클라이언트 국가 사용자의 국가 이름입니다.

다음 단계