애플리케이션 부하 분산기 및 Cloud CDN 플러그인 로깅 및 모니터링

이 페이지에서는 Cloud 부하 분산 및 Cloud CDN용 서비스 확장 프로그램 플러그인과 함께 Cloud LoggingCloud Monitoring을 구성하고 사용하는 방법을 보여줍니다.

로깅

이 섹션에서는 애플리케이션 부하 분산기 플러그인의 로깅에 대해 설명합니다. 로깅은 플러그인 관점과 부하 분산기 관점에서 모두 가능합니다.

로그 메시지

서비스 확장 프로그램은 플러그인 실행 중에 로그 메시지 생성을 지원합니다. 로그 기록은 기본적으로 사용 중지되어 있습니다. 플러그인에 대한 로그를 기록하려면 플러그인을 만들 때 또는 업데이트할 때 사용 설정하세요.

플러그인 로그 레코드에는 다음 컨텍스트 정보가 주석으로 추가됩니다.

  • 타임스탬프, 로그 수준과 같은 표준 로그 주석
  • 메시지를 생성한 플러그인의 ID입니다.
  • 로그 메시지가 생성된 플러그인 콜백입니다.
  • 로그 메시지와 연결된 요청 로그를 확인하는 데 도움이 되는 requestId 추적 식별자입니다.

서비스 확장 프로그램과 관련된 로그는 다음 카테고리 중 하나에 있습니다.

  • 플러그인 로그 메시지

    Rust의 경우 info!(...), Go의 경우 proxywasm.LogInfo(...), C++의 경우 LOG_INFO와 같은 로깅 호출에 의해 생성됩니다. Service Extensions는 이러한 로그 메시지를 Cloud Logging으로 내보냅니다. 요청 및 응답 헤더와 플러그인에서 취한 작업을 로깅할 수 있습니다.

    networkservices.googleapis.com 서비스를 사용하여 이러한 메시지를 볼 수 있습니다.

  • Cloud Load Balancing 로그 메시지

    loadbalancing.googleapis.com 서비스를 사용하여 이러한 메시지를 볼 수 있습니다.

플러그인 관점에서 로깅

이 섹션에서는 플러그인 관점에서 서비스 확장 프로그램 로깅을 설명합니다.

플러그인 로깅 사용 설정

서비스 확장 프로그램은 플러그인 실행 중에 로그 메시지 생성을 지원합니다. 로그 기록은 기본적으로 사용 중지되어 있습니다.

플러그인에 대한 로그를 기록하려면 플러그인을 만들 때 또는 업데이트할 때 사용 설정하세요.

기존 플러그인에 로깅을 사용 설정하려면 gcloud service-extensions wasm-plugins update 명령어를 사용합니다.

gcloud service-extensions wasm-plugins update WASM_PLUGIN \
    --log-config=[LOG_CONFIG,...]

다음을 바꿉니다.

  • WASM_PLUGIN: 플러그인의 ID 또는 정규화된 이름
  • LOG_CONFIG: 플러그인의 로깅 옵션입니다. 로깅을 사용 설정하려면 enable 옵션을 true로 설정합니다. 그런 다음 다음 세부정보를 지정합니다.

    • sample-rate: 활동 로그의 샘플링 레이트(0~1 사이의 값)입니다. 값 0은 로그 메시지가 저장되지 않음을 나타냅니다. 기본값 1은 모든 로그 메시지가 저장됨을 나타냅니다. 0.01.0 사이의 부동 소수점 값은 로그 메시지의 비율이 저장됨을 나타냅니다.
    • min-log-level: Cloud Logging으로 내보낼 플러그인 로그 메시지의 최소 심각도 수준입니다. 기본값은 INFO입니다.

플러그인의 로깅을 사용 설정하면 플러그인 코드의 로깅 문에서 내보낸 메시지를 Cloud Logging에서 볼 수 있습니다.

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

플러그인 로그 메시지 보기

로그는 로그 탐색기에서 쿼리를 빌드하여 볼 수 있습니다.

플러그인 로그를 독립형 서비스 확장 프로그램 로그로 볼 수 있습니다. 이 뷰에서는 각 플러그인 로그 메시지가 자체 로그 레코드에 기록되며 요청 로그 정보와 자동으로 연결되지 않습니다.

이러한 로그 메시지는 리소스 유형이 networkservices.googleapis.com/WasmPluginVersionnetworkservices.googleapis.com/wasm_plugin_activity 로그에 있습니다.

시스템은 이 로그에 정보 로그 메시지를 추가할 수도 있습니다. 예를 들어 플러그인 호출이 CPU 또는 메모리 한도를 초과할 때 플러그인 오류가 발생하면 ERROR 심각도의 메시지가 로깅됩니다. 이러한 메시지는 오류 보기 및 필터링에서도 확인할 수 있습니다.

플러그인 로그 샘플

샘플 서비스 확장 프로그램 로그 항목을 생각해 보세요. message 값은 플러그인의 LOG_INFO 호출에 전달됩니다. severity 값은 플러그인 로그 호출에 사용된 로그 수준에 따라 달라집니다. labels 섹션에서 API 값은 HTTP_REQUEST_HEADER이며, 이는 로깅된 작업이 on_http_request_headers 플러그인 콜백임을 나타냅니다.

{
  "insertId": "65224aac-0000-24bd-a0e1-582429bd544c@a1",
  "jsonPayload": {
    "@type": "type.googleapis.com/google.cloud.networkservices.logging.v1.WasmPluginLogEntry",
    "metroIataCode": "ber",
    "proxyRegionCode": "DE",
    "message": "[add_header_plugin.cc:26]::onRequestHeaders() AddHeaderStreamContext::onRequestHeaders called",
    "requestId": "effc0311-6716-431b-9e2a-7586835fdff1"
  },
  "resource": {
    "type": "networkservices.googleapis.com/WasmPluginVersion",
    "labels": {
      "plugin_version": "prod-1",
      "resource_container": "projects/123456789",
      "location": "global",
      "plugin_name": "add-headers-plugin-prod-resource"
    }
  },
  "timestamp": "2023-05-10T03:05:43.317015458Z",
  "severity": "INFO",
  "labels": {
    "networkservices.googleapis.com/operation": "HTTP_REQUEST_HEADERS"
  },
  "logName": "projects/123456789/logs/networkservices.googleapis.com%2Fwasm_plugin_activity",
  "trace": "projects/123456789/traces/effc0311-6716-431b-9e2a-7586835fdff1",
  "receiveTimestamp": "2023-05-10T03:05:44.207265284Z"
}

로깅 제한사항

플러그인은 클라이언트 HTTP 요청당 최대 16KiB의 페이로드 데이터 로깅으로 제한됩니다. 이 금액은 지정된 HTTP 요청과 연결된 여러 로깅 호출로 나뉩니다. 이 한도는 로그 메시지 텍스트에만 적용되며 서비스 확장 프로그램에서 로그 레코드에 추가한 추가 메타데이터에는 적용되지 않습니다.

예를 들어 on_http_request_headers 콜백이 각각 4KiB 메시지가 있는 로깅 호출을 두 번 실행한 다음 on_http_response_headers 콜백이 동일한 HTTP 요청에 대해 각각 4KiB 메시지가 있는 로깅 호출을 세 번 실행하려고 하면 세 번째 로깅 메시지가 삭제됩니다. 삭제된 플러그인 생성 로그 메시지 수를 기록하기 위해 로그 메시지가 추가됩니다.

부하 분산기 관점에서의 로깅

이 섹션에서는 부하 분산기 관점에서 서비스 확장 프로그램 로깅을 설명합니다.

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

요청의 타겟인 백엔드 서비스에서 로깅을 사용 설정하여 서비스를 만드는 동안 애플리케이션 부하 분산기 플러그인에 대한 로깅을 사용 설정할 수 있습니다.

타겟 백엔드 서비스에 로깅을 사용 설정하려면 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

다음을 바꿉니다.

  • BACKEND_SERVICE: 백엔드 서비스의 이름입니다.
  • RATE: 0.0부터 1.0까지의 값입니다. 0.0은 요청이 로깅되지 않음을 의미하고 1.0은 요청이 100% 로깅됨을 의미합니다. 기본값은 1.0입니다. 이 설정은 enable-logging 파라미터와 함께 사용하는 경우에만 적용됩니다. enable-logging을 생략하면 로깅이 사용 중지됩니다.
  • REGION: 백엔드의 리전
  • LOGGING_OPTIONAL_MODE: 다음 모드 중 하나에서 선택적 필드의 로깅을 사용 설정합니다.

    • INCLUDE_ALL_OPTIONAL에는 모든 선택적 필드가 포함됩니다.
    • EXCLUDE_ALL_OPTIONAL (기본값)은 모든 선택적 필드를 제외합니다.
    • CUSTOM에는 선택적 필드의 맞춤 목록이 포함됩니다.
  • OPTIONAL_FIELDS: CUSTOM 모드를 선택할 때의 선택적 필드를 쉼표로 구분한 목록

백엔드 서비스에서 로깅을 사용 설정하면 HTTP 또는 HTTPS 요청이 Cloud Logging 로그 요청을 사용하여 로깅됩니다.

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

백엔드 서비스의 메시지 로깅

일반적으로 애플리케이션 부하 분산기 로그 항목에는 HTTP 또는 HTTPS 트래픽을 모니터링하고 디버깅하는 데 유용한 정보가 포함됩니다. 로그 항목은 다음과 같은 유형의 정보를 담고 있습니다.

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

HTTP 및 HTTPS 부하 분산기의 요청 로그에는 다음 정보가 포함된 부하 분산기 로그 항목 JSON 페이로드의 service_extension_info 객체가 포함됩니다.

필드 유형 설명
backend_target_name 문자열 확장 프로그램의 백엔드 대상 이름입니다.
backend_target_type 문자열 백엔드 대상의 유형입니다.
chain 문자열 요청과 일치하는 서비스 확장 프로그램 리소스 내 확장 프로그램 체인의 이름입니다.
extension 문자열 확장 프로그램 체인 내 확장 프로그램의 이름입니다.
grpc_status enum gRPC 스트림의 가장 최근 상태입니다. 자세한 내용은 gRPC 상태 코드를 참고하세요.
per_processing_request_info 배열 gRPC 스트림에서 발생하는 ext_proc 확장 프로그램의 ProcessingRequest 통계 또는 ext_authz 확장 프로그램의 CheckRequest 통계 목록입니다.
per_processing_request_info[].event_type enum ProcessingRequest의 이벤트 유형입니다. REQUEST_HEADERS, REQUEST_BODY, RESPONSE_HEADERS, RESPONSE_BODY 중 하나일 수 있습니다.
per_processing_request_info[].latency 기간 ProcessingRequest 메시지의 첫 번째 바이트가 확장 프로그램으로 전송된 시간부터 ProcessingResponse 메시지의 마지막 바이트가 수신된 시간까지의 기간입니다.
resource 문자열 확장 프로그램 리소스의 이름

모니터링

이 섹션에서는 Cloud Monitoring 대시보드를 사용하여 서비스 확장 프로그램을 통해 구성된 애플리케이션 부하 분산기 플러그인의 측정항목을 확인하는 방법을 설명합니다. 플러그인 관점 또는 부하 분산기 관점에서 플러그인을 모니터링할 수 있습니다.

플러그인 관점에서 모니터링

이 섹션에서는 플러그인 관점에서 서비스 확장 프로그램 모니터링을 설명합니다.

서비스 확장 프로그램 측정항목 유형에 대한 자세한 내용은 Google Cloud 측정항목 페이지를 참고하세요.

서비스 확장 프로그램의 모니터링 대시보드 보기

서비스 확장 프로그램의 모니터링 대시보드를 보려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 서비스 확장 프로그램 페이지로 이동합니다.

    서비스 확장 프로그램으로 이동

  2. 플러그인 탭을 클릭합니다.
  3. 플러그인 이름을 클릭합니다.
  4. 플러그인 세부정보 페이지에서 모니터링 탭을 클릭합니다.
  5. 모니터링 페이지의 측정항목 차트에는 플러그인 성능을 모니터링하는 데 도움이 되는 정보가 표시됩니다.

  6. 플러그인 수명 주기 작업의 측정항목을 보려면 작업 필터 목록에서 값을 선택합니다. 기본적으로 HTTP request headerHTTP response header 값이 선택됩니다.
  7. 특정 플러그인 버전의 측정항목을 보려면 플러그인 버전 필터 목록에서 값을 선택합니다. 기본적으로 모든 버전에 대한 측정항목이 표시됩니다.
  8. 데이터를 볼 기간을 변경하려면 시간 선택기에서 사전 정의된 기간을 선택하거나 맞춤을 클릭하고 시작 및 종료 시간을 정의합니다. 기본적으로 선택기는 1 day로 설정됩니다.

서비스 확장 프로그램의 플러그인 측정항목

서비스 확장 프로그램 관점에서 플러그인의 다음 측정항목을 모니터링할 수 있습니다. 이러한 측정항목에는 networkservices.googleapis.com/wasm_plugin/ 프리픽스가 있습니다. 표의 항목에서는 이 프리픽스가 생략되었습니다.

측정항목 유형 표시 이름
종류, 유형, 단위
설명
invocation_count Wasm 플러그인 호출 수
DELTAINT641
선택한 기간 동안 플러그인이 호출된 횟수입니다. 각 플러그인 콜백 호출은 별도의 플러그인 호출로 계산됩니다.
invocation_latencies Wasm 플러그인 호출 지연 시간
DELTADISTRIBUTIONus
플러그인의 로컬 실행 시간(밀리초)입니다. 측정항목에는 각 콜백에 대한 라벨로 구분된 항목이 포함됩니다.
cpu/usage_times Wasm 플러그인 정규화된 CPU 사용량
DELTADISTRIBUTIONus{CPU}
플러그인 호출의 CPU 사용 시간(마이크로초)입니다.
memory/bytes_used Wasm 플러그인 메모리 사용량
GAUGEDISTRIBUTIONBy
Wasm 플러그인 VM이 할당한 총 메모리(바이트)입니다.

부하 분산기 관점에서 모니터링

이 섹션에서는 부하 분산기 관점에서 플러그인의 서비스 확장 프로그램 모니터링을 설명합니다.

Cloud Load Balancing의 모니터링 대시보드 보기

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

다음과 같은 목적으로 모니터링 측정항목을 사용하세요.

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

사전 정의된 대시보드를 보려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 대시보드 개요 페이지로 이동합니다.

    대시보드 개요로 이동

  2. 카테고리 섹션에서 GCP를 클릭합니다.
    • 모든 부하 분산기의 대시보드 목록을 보려면 GCP 대시보드 목록에서 Google Cloud 부하 분산기라는 대시보드를 클릭합니다. 특정 부하 분산기의 대시보드를 보려면 목록에서 부하 분산기를 찾아 해당 이름을 클릭합니다.
    • 부하 분산기에 대해서만 사전 정의된 대시보드를 보려면 적절한 대시보드를 선택합니다.

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

Cloud Load Balancing의 플러그인 측정항목

Cloud Load Balancing 관점에서 플러그인의 다음 측정항목을 모니터링할 수 있습니다.

이러한 측정항목에는 프리픽스 loadbalancing.googleapis.com/이 있습니다. 표의 항목에서는 이 프리픽스가 생략되었습니다.

측정항목 유형 표시 이름
종류, 유형, 단위
설명
https/backend_request_count,
https/external/regional/backend_request_count,
https/internal/backend_request_count
백엔드 요청 수
DELTAINT641
애플리케이션 부하 분산기에서 플러그인이 호출된 횟수입니다.
https/backend_request_bytes_count,
https/external/regional/backend_request_bytes_count,
https/internal/backend_request_bytes_count
백엔드 요청 바이트
DELTAINT64By
부하 분산기에서 플러그인으로 전송된 바이트 수입니다.
https/backend_response_bytes_count,
https/external/regional/backend_response_bytes_count,
https/internal/backend_response_bytes_count
백엔드 응답 바이트
DELTAINT64By
부하 분산기가 확장 프로그램 백엔드에서 수신한 바이트 수입니다.

플러그인 측정항목 보기

특정 플러그인의 측정항목을 보려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 측정항목 탐색기 페이지로 이동합니다.

    측정항목 탐색기로 이동

  2. 측정항목 요소에서 측정항목 선택 메뉴를 확장합니다. 그런 후 다음 작업을 수행합니다.

    1. 리소스 목록에서 적절한 Application Load Balancer 규칙을 선택합니다.

    2. 측정항목 카테고리 목록에서 Https를 선택합니다.

    3. 측정항목 목록에서 플러그인 측정항목을 선택합니다.

    4. 적용을 클릭합니다.

  3. 필터 요소에서 다음을 수행합니다.

    1. backend_target_type 라벨을 선택하고 값을 WASM_PLUGIN로 설정합니다.

    2. backend_target_name 라벨을 선택하고 플러그인 이름을 값으로 설정합니다.

부하 분산기 측정항목 유형에 대한 자세한 내용은 Google Cloud 측정항목 페이지의 loadbalancing 섹션을 참고하세요.