내부 애플리케이션 부하 분산기 로깅 및 모니터링

이 문서에서는 내부 애플리케이션 부하 분산기의 로깅 및 모니터링 측정항목을 이해하기 위해 필요한 정보를 제공합니다. 리전 내부 애플리케이션 부하 분산기 및 리전 간 내부 애플리케이션 부하 분산기 모두에 대한 로깅 및 모니터링 측정항목은 동일합니다.

로깅

백엔드 서비스별로 로깅을 사용 설정할 수 있습니다. 단일 내부 애플리케이션 부하 분산기의 URL 맵은 둘 이상의 백엔드 서비스를 참조할 수 있습니다. 구성에 따라 여러 백엔드 서비스에 대해 로깅을 사용 설정해야 할 수 있습니다.

로그 샘플링 및 수집

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

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

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

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

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

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

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

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

선택적 필드

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

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

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

  • 커스텀을 선택하면 포함할 선택적 필드를 지정할 수 있습니다(예: tls.protocol,tls.cipher).

선택적 필드를 맞춤설정하는 방법은 기존 백엔드 서비스에 로깅 사용 설정을 참조하세요.

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

리전 내부 애플리케이션 부하 분산기의 경우 다음 단계를 사용합니다.

콘솔

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

    부하 분산으로 이동

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

  3. 수정을 클릭합니다.

  4. 백엔드 구성을 클릭합니다.

  5. 백엔드 서비스 옆에 있는 수정을 클릭합니다.

  6. 고급 구성(세션 어피니티, 연결 드레이닝 제한 시간)을 클릭합니다.

  7. 로깅 사용 설정을 클릭합니다.

  8. 샘플링 레이트 비율을 설정합니다. 0.0부터 1.0까지 숫자를 설정할 수 있습니다. 0.0은 로깅된 요청이 없음을 의미하고 1.0은 모든 요청이 로깅됨을 의미합니다. 기본값은 1.0입니다.

  9. 선택사항: 로그에 모든 선택적 필드를 포함하려면 선택적 필드 섹션에서 모든 선택적 필드 포함을 클릭하세요.

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

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

gcloud

로깅을 사용 설정하도록 백엔드 서비스를 업데이트하려면 gcloud compute backend-services update 명령어를 사용합니다.

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

각 항목의 의미는 다음과 같습니다.

  • --enable-logging은 해당 백엔드 서비스의 로깅을 사용 설정합니다.
  • --logging-sample-rate를 사용하면 0.0부터 1.0까지 값을 지정할 수 있습니다. 0.0은 요청이 로깅되지 않음을 의미하고 1.0은 요청이 100% 로깅됨을 의미합니다. --enable-logging 매개변수를 사용할 때에만 의미가 있습니다. 로깅을 사용 설정하되 샘플링 레이트를 0.0으로 설정하면 로깅을 사용 중지하는 것과 마찬가지입니다. 기본값은 1.0입니다.
  • --logging-optional을 사용하면 로그에 포함할 선택적 필드를 지정할 수 있습니다.

    • 모든 선택 필드를 포함하려면 INCLUDE_ALL_OPTIONAL

    • 모든 선택적 필드를 제외하려면 EXCLUDE_ALL_OPTIONAL(기본값)

    • OPTIONAL_FIELDS에 지정하는 메타데이터 필드의 커스텀 목록을 포함하려면 CUSTOM

  • --logging-optional-fields를 사용하면 로그에 포함할 선택적 필드를 쉼표로 구분한 목록을 지정할 수 있습니다.

    예를 들어 LOGGING_OPTIONAL_MODECUSTOM으로 설정된 경우에만 tls.protocol,tls.cipher를 설정할 수 있습니다.

리전 간 내부 애플리케이션 부하 분산기의 경우 다음 단계를 따르세요.

콘솔

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

    부하 분산으로 이동

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

  3. 수정을 클릭합니다.

  4. 백엔드 구성을 클릭합니다.

  5. 백엔드 서비스 옆에 있는 수정을 클릭합니다.

  6. 고급 구성(세션 어피니티, 연결 드레이닝 제한 시간)을 클릭합니다.

  7. 로깅 사용 설정을 클릭합니다.

  8. 샘플링 레이트 비율을 설정합니다. 0.0부터 1.0까지 숫자를 설정할 수 있습니다. 0.0은 로깅된 요청이 없음을 의미하고 1.0은 모든 요청이 로깅됨을 의미합니다. 기본값은 1.0입니다.

  9. 선택사항: 로그에 모든 선택적 필드를 포함하려면 선택적 필드 섹션에서 모든 선택적 필드 포함을 클릭하세요.

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

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

gcloud

로깅을 사용 설정하도록 백엔드 서비스를 업데이트하려면 gcloud compute backend-services update 명령어를 사용합니다.

gcloud compute backend-services update BACKEND_SERVICE \
    --enable-logging \
    --logging-sample-rate=RATE \
    --global \
    --logging-optional=LOGGING_OPTIONAL_MODE \
    --logging-optional-fields=OPTIONAL_FIELDS

각 항목의 의미는 다음과 같습니다.

  • --enable-logging은 해당 백엔드 서비스의 로깅을 사용 설정합니다.
  • --logging-sample-rate를 사용하면 0.0부터 1.0까지 값을 지정할 수 있습니다. 0.0은 요청이 로깅되지 않음을 의미하고 1.0은 요청이 100% 로깅됨을 의미합니다. --enable-logging 매개변수를 사용할 때에만 의미가 있습니다. 로깅을 사용 설정하되 샘플링 레이트를 0.0으로 설정하면 로깅을 사용 중지하는 것과 마찬가지입니다. 기본값은 1.0입니다.
  • --logging-optional을 사용하면 로그에 포함할 선택적 필드를 지정할 수 있습니다.

    • 모든 선택 필드를 포함하려면 INCLUDE_ALL_OPTIONAL

    • 모든 선택적 필드를 제외하려면 EXCLUDE_ALL_OPTIONAL(기본값)

    • OPTIONAL_FIELDS에 지정하는 메타데이터 필드의 커스텀 목록을 포함하려면 CUSTOM

  • --logging-optional-fields를 사용하면 로그에 포함할 선택적 필드를 쉼표로 구분한 목록을 지정할 수 있습니다.

    예를 들어 LOGGING_OPTIONAL_MODECUSTOM으로 설정된 경우에만 tls.protocol,tls.cipher를 설정할 수 있습니다.

백엔드 서비스에서 로깅을 사용 설정하면 각 HTTP(S) 요청이 Cloud Logging을 사용해서 로깅됩니다.

로그 확인 방법

로그를 보려면 Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.

내부 애플리케이션 부하 분산기 로그는 네트워크별로 먼저 색인을 생성한 다음 리전별로 색인을 생성합니다.

  • 모든 내부 애플리케이션 부하 분산기의 로그를 보려면 첫 번째 풀다운 메뉴에서 내부 애플리케이션 부하 분산기 규칙을 선택합니다.
  • 네트워크 한 개의 로그만 보려면 내부 애플리케이션 부하 분산기 규칙을 선택한 다음 네트워크 이름을 선택합니다.
  • 네트워크의 한 리전에 대해서만 로그를 보려면 내부 애플리케이션 부하 분산기 규칙 > NETWORK > REGION을 선택합니다.

부울 형식의 로그 필드는 true 값이 있을 때만 표시됩니다. 부울 필드의 값이 false면 해당 필드는 로그에서 생략됩니다.

로그 필드에는 UTF-8 인코딩이 적용됩니다. UTF-8 문자를 제외하고는 모두 물음표로 대체됩니다.

리소스 로그(resource.type="internal_http_lb_rule")에 대한 로그 기반 측정항목 내보내기를 구성할 수 있습니다. 생성된 측정항목은 Cloud Monitoring 대시보드에서 제공되는 '내부 애플리케이션 부하 분산기 규칙' 리소스를 기반으로 합니다.

Monitoring으로 이동

로깅되는 내용

내부 애플리케이션 부하 분산기 로그 항목에는 HTTP(S) 트래픽 모니터링과 디버깅에 유용한 정보가 포함됩니다. 로그 레코드에는 모든 로그 레코드의 기본 필드인 필수 필드와 HTTP(S) 트래픽에 대한 추가 정보를 추가하는 선택적 필드가 포함됩니다. 선택적 필드를 생략하여 스토리지 비용을 절감할 수 있습니다. 로그 항목은 다음과 같은 유형의 정보를 담고 있습니다.

  • LogEntry에 설명된 심각도, 프로젝트 ID, 프로젝트 번호, 타임스탬프와 같이 대부분의 Google Cloud 로그에 표시되는 일반 정보
  • HttpRequest 로그 필드.

일부 로그 필드는 한 필드에 두 가지 이상의 데이터를 포함하는 다중 필드 형식입니다. 예를 들어 tls 필드는 TlsDetails 형식이며 TLS 프로토콜 및 TLS 암호화가 단일 필드에 포함됩니다. 이러한 다중 필드 형식의 필드는 다음 레코드 형식 표에 설명되어 있습니다.

필드 유형 필드 유형: 필수 또는 선택적 설명
logName 문자열 필수 이 로그 항목이 속한 로그의 리소스 이름입니다.
양식은 "projects/PROJECT_ID/logs/requests"입니다.
timestamp 문자열 필수 요청이 시작된 시간입니다.
severity LogSeverity 형식 필수 로그 항목의 심각도입니다. 기본값은 LogSeverity.DEFAULT입니다.
httpRequest HttpRequest 객체 필수 로깅되는 HTTP(S) 요청을 설명하는 HttpRequest proto입니다.
trace 문자열 필수 로그 항목과 연관된 trace의 리소스 이름입니다. 상대적 리소스 이름이 포함된 경우 이름은 https://tracing.googleapis.com을 기준으로 한 이름으로 간주됩니다. 예시: projects/PROJECT_ID/traces/06796866738c859f2f19b7cfb3214824.

내부 애플리케이션 부하 분산기는 이 필드를 지원하지 않습니다.

spanId 문자열 필수 로그 항목과 연결된 trace 내의 스팬 ID입니다. Trace 스팬의 경우 이 문자열은 Trace API v2에서 사용하는 것과 동일한 형식이며 000000000000004a와 같은 8바이트 배열의 16자 16진수 인코딩입니다.

내부 애플리케이션 부하 분산기는 이 필드를 지원하지 않습니다.

resource MonitoredResource 객체 필수

로그 항목을 생성한 모니터링 리소스입니다.

MonitoredResourceDescriptor 객체는 유형 이름 및 라벨 집합을 사용하여 MonitoredResource 객체의 스키마를 설명합니다.

예를 들어 내부 애플리케이션 부하 분산기의 모니터링 리소스 설명자는 리소스 유형이 internal_http_lb_rule이고 리소스 라벨을 사용하여 실제 리소스 및 해당 속성을 식별합니다. 리소스 라벨 목록은 resource.type="internal_http_lb_rule"의 리소스 라벨을 참조하세요.

jsonPayload object (Struct format) 필수 JSON 객체로 표현되는 로그 항목 페이로드입니다. JSON 객체에는 다음 필드가 포함되어 있습니다.
  • tls
  • proxyStatus
  • backendTargetProjectNumber
  • serviceDirectoryService
  • cloudFitExperiment
  • cloudFitFault
  • serviceExtensionInfo
  • mtls
문자열 필수

proxyStatus 필드에는 내부 애플리케이션 부하 분산기가 HttpRequest.status를 반환하는 이유를 지정하는 문자열이 포함됩니다. 이 필드는 프록시가 4xx 또는 5xx와 함께 오류 코드를 반환할 때만 채워집니다.

값이 빈 문자열인 경우 필드가 로깅되지 않습니다. 자세한 내용은 proxyStatus 메시지를 참조하세요.

문자열 필수 backendTargetProjectNumber 필드에는 백엔드 서비스 또는 백엔드 버킷의 소유자를 식별하는 프로젝트 번호가 포함됩니다.
문자열 필수 serviceDirectoryService 필드에는 Cloud FIT 오류가 구성된 서비스 디렉터리 서비스의 이름이 포함됩니다.
문자열 필수 cloudFitExperiment 필드에는 Cloud FIT 실험의 이름이 포함됩니다.
문자열 필수 cloudFitFault 필드에는 이 요청 경로에서 Cloud FIT 오류 실험으로 삽입된 오류의 이름이 포함됩니다.
ServiceExtensionInfo 필수 serviceExtensionInfo 필드는 부하 분산기에서 서비스 확장 프로그램으로 gRPC 스트림에 대한 정보를 저장합니다. 자세한 내용은 콜아웃 확장 프로그램의 로깅 내용을 참조하세요.
TlsDetails 선택사항 tls 필드에는 클라이언트와 내부 애플리케이션 부하 분산기 간 연결에 대한 TLS 메타데이터를 지정하는 TlsDetails가 있습니다. 이 필드는 클라이언트가 TLS/SSL 암호화를 사용하는 경우에만 사용할 수 있습니다.
MtlsDetails 선택사항 mtls 필드에는 클라이언트와 내부 애플리케이션 부하 분산기 간 연결에 대한 mTLS 메타데이터를 지정하는 MtlsDetails 값이 있습니다. 이 필드는 부하 분산기가 프런트엔드 상호 TLS(mTLS)를 사용하는 경우에만 사용할 수 있습니다.

TlsDetails 필드 형식

필드 필드 형식 필드 유형: 필수 또는 선택적 설명
protocol 문자열 선택사항 클라이언트가 부하 분산기와 연결하는 데 사용하는 TLS 프로토콜입니다. 가능한 값은 TLS 1.0, 1.1, 1.2, 1.3 또는 QUIC입니다. 클라이언트가 TLS/SSL 암호화를 사용하지 않는 경우 이 값은 NULL로 설정됩니다.
암호화 문자열 선택사항 클라이언트가 부하 분산기와 연결하는 데 사용하는 TLS 암호화입니다. 클라이언트가 HTTP(S)를 사용하지 않거나 클라이언트가 TLS/SSL 암호화를 사용하지 않는 경우 이 값은 NULL로 설정됩니다.

MtlsDetails 필드 형식

필드 필드 형식 필드 유형: 필수 또는 선택적 설명
clientCertPresent 부울 선택사항

TLS 핸드셰이크 중 클라이언트가 인증서를 제공한 경우 true이고 그렇지 않으면 false입니다.

clientCertChainVerified 부울 선택사항

클라이언트 인증서 체인이 구성된 TrustStore에 대해 확인된 경우 true이고 그렇지 않으면 false입니다.

clientCertError 문자열 선택사항

오류 조건을 나타내는 사전 정의된 문자열입니다. 오류 문자열에 대한 자세한 내용은 mTLS 클라이언트 검증 모드를 참조하세요.

clientCertSha256Fingerprint 문자열 선택사항

클라이언트 인증서의 Base64로 인코딩된 SHA-256 지문입니다.

clientCertSerialNumber 문자열 선택사항

클라이언트 인증서의 일련번호입니다. 일련번호가 50바이트보다 길면 client_cert_serial_number_exceeded_size_limit 문자열이 client_cert_error에 추가되고 일련번호는 빈 문자열로 설정됩니다.

clientCertValidStartTime 문자열 선택사항

클라이언트 인증서가 유효하지 않은 이전의 타임스탬프(RFC 3339 날짜 문자열 형식)입니다. 예를 들면 2022-07-01T18:05:09+00:00입니다.

clientCertValidEndTime 문자열 선택사항

클라이언트 인증서가 유효하지 않은 이후의 타임스탬프(RFC 3339 날짜 문자열 형식)입니다. 예를 들면 2022-07-01T18:05:09+00:00입니다.

clientCertSpiffeId 문자열 선택사항

주체 대체 제목(SAN) 필드의 SPIFFE ID입니다. 값이 유효하지 않거나 2,048바이트를 초과할 경우 SPIFFE ID가 빈 문자열로 설정됩니다.

SPIFFE ID가 2048바이트보다 길면 client_cert_spiffe_id_exceeded_size_limit 문자열이 client_cert_error에 추가됩니다.

clientCertUriSans 문자열 선택사항

쉼표로 구분된 Base64로 인코딩된 URI 유형의 SAN 확장 프로그램 목록입니다. SAN 확장 프로그램은 클라이언트 인증서에서 추출됩니다. SPIFFE ID는 client_cert_uri_sans 필드에 포함되지 않습니다.

client_cert_uri_sans 필드가 512바이트보다 길면 client_cert_uri_sans_exceeded_size_limit 문자열이 client_cert_error에 추가되고 쉼표로 구분된 목록은 빈 문자열로 설정됩니다.

clientCertDnsnameSans 문자열 선택사항

쉼표로 구분된 Base64로 인코딩된 DNSName 유형의 SAN 확장 프로그램 목록입니다. SAN 확장 프로그램은 클라이언트 인증서에서 추출됩니다.

client_cert_dnsname_sans 필드가 512바이트보다 길면 client_cert_dnsname_sans_exceeded_size_limit 문자열이 client_cert_error에 추가되고 쉼표로 구분된 목록은 빈 문자열로 설정됩니다.

clientCertIssuerDn 문자열 선택사항

인증서에서 Base64로 인코딩된 전체 발급기관 필드입니다.

client_cert_issuer_dn 필드가 512바이트보다 길면 client_cert_issuer_dn_exceeded_size_limit 문자열이 client_cert_error에 추가되고 client_cert_issuer_dn은 빈 문자열로 설정됩니다.

clientCertSubjectDn 문자열 선택사항

인증서에서 Base64로 인코딩된 전체 주체 필드입니다.

client_cert_subject_dn 필드가 512바이트보다 길면 client_cert_subject_dn_exceeded_size_limit 문자열이 client_cert_error에 추가되고 client_cert_subject_dn은 빈 문자열로 설정됩니다.

clientCertLeaf 문자열 선택사항

인증서가 유효성 검사를 통과한 설정된 mTLS 연결의 클라이언트 리프 인증서입니다. 인증서 인코딩은 RFC 9440을 준수합니다. 바이너리 DER 인증서가 Base64로 인코딩되며(줄바꿈, 공백, Base64 알파벳 이외의 기타 문자 없음) 양쪽에서 콜론으로 구분됩니다.

client_cert_leaf가 인코딩되지 않은 상태에서 16KB를 초과하면 문자열 client_cert_validated_leaf_exceeded_size_limitclient_cert_error에 추가되고 client_cert_leaf가 빈 문자열로 설정됩니다.

clientCertChain 문자열 선택사항

리프 인증서를 포함하지 않은 클라이언트 인증서가 검증을 통과한 설정된 mTLS 연결의 클라이언트 인증서 체인에 대한 표준 TLS 순서의 쉼표로 구분된 인증서 목록입니다. 인증서 인코딩은 RFC 9440을 준수합니다.

Base64 인코딩 전의 client_cert_leafclient_cert_chain을 합친 크기가 16KB를 초과하면 문자열 client_cert_validated_chain_exceeded_size_limitclient_cert_error에 추가되고 client_cert_chain이 빈 문자열로 설정됩니다.

리소스 라벨

다음 표에는 resource.type="internal_http_lb_rule"에 대한 리소스 라벨이 나와 있습니다.

필드 유형 설명
network_name 문자열 부하 분산기의 VPC 네트워크 이름입니다.
project_id 문자열 이 리소스와 연결된 Google Cloud 프로젝트의 식별자입니다.
region 문자열 부하 분산기가 정의된 리전입니다.
url_map_name 문자열 백엔드 서비스를 선택하도록 구성된 URL 맵 객체의 이름입니다.
forwarding_rule_name 문자열 전달 규칙 객체의 이름입니다.
target_proxy_name 문자열 전달 규칙에서 참조하는 대상 프록시 객체의 이름입니다.
matched_url_path_rule 문자열 URL 맵 키의 일부로 구성된 URL 맵 경로 규칙 또는 라우팅 규칙입니다. UNMATCHED 또는 UNKNOWN으로 대체할 수 있습니다.
  • UNMATCHED는 URL 경로 규칙과 일치하지 않는 요청을 나타내므로 기본 경로 규칙을 사용합니다.
  • UNKNOWN은 내부 오류를 나타냅니다.
backend_target_name 문자열 요청과 일치하는 URL 맵 경로 규칙에 따라 요청을 처리하도록 선택된 백엔드의 이름입니다.
backend_target_type 문자열 백엔드 대상 유형입니다(BACKEND_SERVICE/UNKNOWN).
backend_name 문자열 백엔드 인스턴스 그룹 또는 NEG의 이름입니다.
backend_type 문자열

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

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

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

proxyStatus 메시지

proxyStatus 필드에 로깅되는 문자열은 다음과 같습니다.

proxyStatus 의미 일반적인 동반 응답 코드
destination_unavailable 부하 분산기에서 백엔드를 사용할 수 없는 것으로 간주합니다. 예를 들어 최근 백엔드와 통신하려는 시도가 실패했거나 상태 점검이 실패했음을 나타낼 수 있습니다. 500, 503
connection_timeout 백엔드에 대한 연결을 열려는 부하 분산기의 시도가 시간 초과되었습니다. 504
connection_terminated 전체 응답이 수신되기 전에 백엔드에 대한 부하 분산기의 연결이 닫혔습니다. 502, 503
connection_refused 백엔드에 대한 부하 분산기의 연결이 거부되었습니다. 502, 503
connection_limit_reached 부하 분산기가 백엔드에 대한 연결 수를 제한하도록 구성되었는데 이 한도가 초과되었습니다. 502, 503
destination_not_found 부하 분산기는 이 요청에 사용할 적절한 백엔드를 확인할 수 없습니다(예: 백엔드가 구성되지 않은 경우). 500, 404
dns_error 백엔드 호스트 이름의 IP 주소를 찾으려고 할 때 부하 분산기에 DNS 오류가 발생했습니다. 502, 503
http_response_timeout 부하 분산기가 백엔드의 전체 응답을 기다리는 동안 구성된 시간 제한에 도달했습니다. 504, 408
http_request_error 부하 분산기가 클라이언트를 대신하여 클라이언트(4xx) 응답을 생성합니다. 400, 403, 405, 406, 408, 411, 413, 414, 415, 416, 417, 또는 429
proxy_configuration_error 부하 분산기에 해당 구성과 관련된 오류가 발생했습니다. 500
http_protocol_error 백엔드와 통신할 때 부하 분산기에 HTTP 프로토콜 오류가 발생했습니다. 502
proxy_internal_error 부하 분산기에 내부 오류가 발생했습니다. 500, 502
proxy_internal_response 부하 분산기가 백엔드에 연결을 시도하지 않고 응답을 생성했습니다. 문제 유형에 따라 HTTP 상태 코드가 표시될 수 있습니다. 예를 들어 HTTP `410` 상태 코드는 결제 연체로 인해 백엔드를 사용할 수 없음을 의미합니다.

mTLS 클라이언트 인증서 검증 로그 보기

상호 TLS 클라이언트 인증서 유효성 검사 중에 닫힌 연결의 로깅된 오류를 보려면 다음 단계를 완료하세요.

콘솔

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

    로그 탐색기로 이동

  2. 쿼리 표시 토글을 클릭하여 쿼리 편집기를 사용 설정합니다.

  3. 다음을 쿼리 필드에 붙여넣습니다. FORWARDING_RULE_NAME을 전달 규칙 이름으로 바꿉니다.

    jsonPayload.statusDetails=~"client_cert"
    jsonPayload.@type="type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
    resource.labels.forwarding_rule_name=FORWARDING_RULE_NAME
    
  4. 쿼리 실행을 클릭합니다.

모니터링

내부 애플리케이션 부하 분산기는 모니터링 데이터를 Monitoring으로 내보냅니다.

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

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

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

Cloud Monitoring 측정항목 보기

콘솔

측정항목 탐색기를 사용하여 모니터링 리소스의 측정항목을 확인하려면 다음을 수행하세요.

  1. Google Cloud 콘솔의 탐색 패널에서 Monitoring을 선택한 후 측정항목 탐색기를 선택합니다.

    측정항목 탐색기로 이동

  2. 측정항목 요소에서 측정항목 선택 메뉴를 펼치고 필터 표시줄에 Internal Application Load Balancer Rule을 입력한 후 하위 메뉴를 사용하여 특정 리소스 유형과 측정항목을 선택합니다.
    1. 활성 리소스 메뉴에서 내부 애플리케이션 부하 분산기 규칙을 선택합니다.
    2. 측정항목을 선택하려면 활성 측정항목 카테고리활성 측정항목 메뉴를 사용합니다.
    3. 적용을 클릭합니다.
  3. 디스플레이에서 시계열을 삭제하려면 필터 요소를 사용합니다.

  4. 시계열을 조합하려면 집계 요소의 메뉴를 사용합니다. 예를 들어 VM의 CPU 사용률을 영역에 따라 표시하려면 첫 번째 메뉴를 평균으로, 두 번째 메뉴를 영역으로 설정합니다.

    집계 요소의 첫 번째 메뉴가 집계되지 않음으로 설정되면 모든 시계열이 표시됩니다. 집계 요소 기본 설정은 선택한 측정항목 유형에 따라 결정됩니다.

  5. 하루에 샘플 하나를 보고하는 할당량과 기타 측정항목의 경우 다음을 수행합니다.
    1. 표시 창에서 위젯 유형누적 막대 그래프로 설정합니다.
    2. 기간을 최소 1주일로 설정합니다.

알림 정책 정의

콘솔

알림 정책을 만들어 측정항목 값을 모니터링하고 측정항목이 조건을 위반하면 이에 대한 알림을 수신할 수 있습니다.

  1. Google Cloud 콘솔의 탐색 패널에서 Monitoring을 선택한 후  알림을 선택합니다.

    알림으로 이동

  2. 알림 채널을 만들지 않고 알림을 받으려면 알림 채널 수정을 클릭하고 알림 채널을 추가합니다. 채널을 추가한 후 알림 페이지로 돌아갑니다.
  3. 알림 페이지에서 정책 만들기를 클릭합니다.
  4. 측정항목을 선택하려면 측정항목 선택 메뉴를 확장한 후 다음을 수행합니다.
    1. 메뉴를 관련 항목으로 제한하려면 필터 표시줄에 Internal Application Load Balancer Rule을 입력합니다. 메뉴를 필터링한 후 결과가 없으면 활성 리소스 및 측정항목만 표시 전환을 중지합니다.
    2. 리소스 유형에서 내부 애플리케이션 부하 분산기 규칙을 선택합니다.
    3. 측정항목 카테고리측정항목을 선택한 후 적용을 선택합니다.
  5. 다음을 클릭합니다.
  6. 알림 트리거 구성 페이지의 설정에 따라 알림이 트리거되는 시점이 결정됩니다. 조건 유형을 선택하고 필요한 경우 기준점을 지정합니다. 자세한 내용은 측정항목 기준점 알림 정책 만들기를 참조하세요.
  7. 다음을 클릭합니다.
  8. 선택사항: 알림 정책에 알림을 추가하려면 알림 채널을 클릭합니다. 대화상자의 메뉴에서 하나 이상의 알림 채널을 선택한 다음 확인을 클릭합니다.
  9. 선택사항: 이슈 자동 종료 기간을 업데이트합니다. 이 필드는 측정항목 데이터가 없어 Monitoring에서 이슈를 닫을 시간을 결정합니다.
  10. 선택사항: 문서를 클릭한 후 알림 메시지에 포함할 정보를 추가합니다.
  11. 알림 이름을 클릭하고 알림 정책 이름을 입력합니다.
  12. 정책 만들기를 클릭합니다.
자세한 내용은 알림 정책을 참조하세요.

Monitoring 커스텀 대시보드 정의

콘솔

내부 애플리케이션 부하 분산기 측정항목에 대한 커스텀 Monitoring 대시보드를 만들 수 있습니다.

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

    Monitoring으로 이동

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

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

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

  5. 측정항목과 필터를 선택합니다. 측정항목의 리소스 유형은 내부 HTTP(S) 부하 분산기입니다.

  6. 저장을 클릭합니다.

측정항목 보고 빈도 및 보관

부하 분산기의 측정항목은 1분 단위로 일괄적으로 Monitoring으로 내보내집니다. Monitoring 데이터는 6주간 보관됩니다. 대시보드는 1H(1시간), 6H(6시간), 1D(1일), 1W(1주), 6W(6주)라는 기본 주기로 데이터 분석을 제공합니다. 6W에서 1분 사이의 주기로 수동으로 분석을 요청할 수도 있습니다.

내부 애플리케이션 부하 분산기의 모니터링 측정항목

다음은 Monitoring에 보고되는 내부 애플리케이션 부하 분산기 측정항목입니다.

측정항목 FQDN 설명
요청 수 loadbalancing.googleapis.com/https/internal/request_count 내부 애플리케이션 부하 분산기에서 제공하는 요청 수입니다.
요청 바이트 수 loadbalancing.googleapis.com/https/internal/request_bytes 클라이언트에서 내부 애플리케이션 부하 분산기로 전송된 요청의 바이트 수
응답 바이트 수 loadbalancing.googleapis.com/https/internal/response_bytes 내부 HTTP(S) 부하 분산기에서 클라이언트로 보낸 응답의 바이트 수
총 지연 시간 loadbalancing.googleapis.com/https/internal/total_latencies 지연 시간 분포(밀리초)입니다. 지연 시간은 프록시가 요청의 첫 번째 바이트를 수신하는 시간부터 프록시가 응답의 마지막 바이트를 전송하는 시간까지로 측정됩니다.
백엔드 지연 시간 loadbalancing.googleapis.com/https/internal/backend_latencies 지연 시간 분포(밀리초)입니다. 지연 시간은 프록시가 요청의 첫 번째 바이트를 백엔드로 전송하는 시간부터 프록시가 백엔드로부터 응답의 마지막 바이트를 수신한 시간까지 측정됩니다.

내부 애플리케이션 부하 분산기 측정항목의 필터링 측정기준

측정항목은 내부 애플리케이션 부하 분산기별로 집계됩니다. 집계된 측정항목은 다음 측정기준으로 필터링할 수 있습니다.

속성 설명
BACKEND_SCOPE 클라이언트 요청을 제공하는 백엔드 그룹의 Google Cloud 영역 또는 리전이거나 백엔드 그룹이 할당되지 않은 경우의 특수 문자열. 예시: us-central1-a, europe-west1-b, asia-east1, UNKNOWN
PROXY_REGION 내부 애플리케이션 부하 분산기, 클라이언트, 백엔드의 리전 예시: us-central1, europe-west1 또는 asia-east1
BACKEND 클라이언트 요청을 제공한 백엔드 인스턴스 그룹 또는 NEG의 이름
BACKEND_TARGET 클라이언트 요청을 제공한 백엔드 서비스의 이름
MATCHED_URL_RULE 클라이언트 HTTP(S) 요청의 프리픽스와 일치하는 URL 맵 경로 규칙 또는 라우팅 규칙(최대 50자)

Response code class fraction 측정항목은 전체 부하 분산기에서 지원됩니다. 추가 세부사항은 지원되지 않습니다.

다음 단계