Media CDN 플러그인 로깅 및 모니터링

이 페이지에서는 Media CDN의 서비스 확장 프로그램 플러그인으로 Cloud LoggingCloud Monitoring을 구성하고 사용하는 방법을 보여줍니다.

로깅

이 섹션에서는 Media CDN 플러그인의 서비스 확장 프로그램 로그와 로그 메시지의 정보를 확인하고 상호 연관시키는 방법을 설명합니다.

로그 메시지

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

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

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

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

  • 플러그인 로그 메시지

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

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

  • Media CDN 로그 메시지

    연결된 Wasm 작업이 있는 EdgeCacheService 리소스에 대한 HTTP 요청의 Media CDN 로그 메시지 edgecache.googleapis.com 서비스에서 볼 수 있는 일반 Media CDN 로그 항목입니다.

플러그인 로깅 사용 설정

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

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

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

gcloud beta 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 콘솔에서 로그 탐색기 페이지로 이동합니다.

로그 메시지 보기

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

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

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

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

로그 탐색기에서 해당 Media CDN 요청 로그와 상관관계가 지정된 로그 메시지를 볼 수도 있습니다. 요청 로그를 보는 동안 요청 로그 항목을 펼치면 요청과 관련된 플러그인 로그가 요청 로그 아래에 중첩되어 표시됩니다. 이 보기를 사용하면 연결된 요청의 컨텍스트에서 플러그인 로그를 이해할 수 있습니다.

로그 샘플

샘플 서비스 확장 프로그램 로그 항목을 고려해 보세요. 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.networkactions.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": "networkactions.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": {
    "networkactions.googleapis.com/operation": "HTTP_REQUEST_HEADERS"
  },
  "logName": "projects/123456789/logs/networkactions.googleapis.com%2Fwasm_plugin_activity",
  "trace": "projects/123456789/traces/effc0311-6716-431b-9e2a-7586835fdff1",
  "receiveTimestamp": "2023-05-10T03:05:44.207265284Z"
}
관련 Media CDN 로그 항목은 다음과 같이 표시됩니다. 두 로그 메시지의 requestIdtrace 값이 동일합니다.
{
  "insertId": "6c95cc54-0000-26ba-ba73-f403043c328c@a1",
  "jsonPayload": {
    "cacheMode": "USE_ORIGIN_HEADERS",
    "@type": "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry",
    "wasmAction": "add-headers-action-prod-resource",
    "cacheKeyFingerprint": "f04d02bb12f2e79e",
    "proxyStatus": "Google-Edge-Cache",
    "clientCity": "Erlangen",
    "clientAsn": "8881",
    "origin": "example-origin",
    "cacheId": "ber",
    "tlsVersion": "NONE",
    "latency": "0.002840304s",
    "originIp": "142.250.145.128",
    "requestId": "effc0311-6716-431b-9e2a-7586835fdff1",
    "clientRegionCode": "DE",
    "originalRequestId": "7656c418-df7c-4ae5-9db5-4f247ec5a82c",
    "httpTtfb": "0.002814903s",
    "metroIataCode": "BER",
    "proxyRegionCode": "DE",
    "cacheStatus": "hit"
  },
  "httpRequest": {
    "requestMethod": "GET",
    "requestUrl": "https://example.com/image.jpg",
    "requestSize": "1631",
    "status": "200",
    "responseSize": "402907",
    "userAgent": "Wtrace",
    "remoteIp": "2001:1438:1:19::5",
    "protocol": "HTTP/1.1"
  },
  "resource": {
    "type": "edgecache.googleapis.com/EdgeCacheRouteRule",
    "labels": {
      "location": "global",
      "route_destination": "projects/123456789/locations/global/edgeCacheOrigins/example-origin",
      "matched_path": "/turing/",
      "route_type": "ORIGIN",
      "path_matcher_name": "routes",
      "resource_container": "projects/123456789",
      "service_name": "example-service"
    }
  },
  "timestamp": "2023-05-10T03:05:43.321347304Z",
  "logName": "projects/bdn-prober/logs/edgecache.googleapis.com%2Fedge_cache_request",
  "trace": "projects/1069774196212/traces/effc0311-6716-431b-9e2a-7586835fdff1",
  "receiveTimestamp": "2023-05-10T03:05:49.919781008Z"
}

제한사항

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

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

모니터링

이 섹션에서는 Cloud Monitoring 대시보드를 사용하여 Media CDN 플러그인의 서비스 확장 프로그램 측정항목을 보는 방법을 설명합니다.

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

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

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

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

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

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

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

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

서비스 확장 프로그램 관점에서 플러그인의 다음 측정항목을 모니터링할 수 있습니다. 이러한 측정항목에는 networkactions.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이 할당한 총 메모리(바이트)입니다.

Media CDN의 플러그인 측정항목

Media CDN 관점에서 플러그인의 다음 측정항목을 모니터링할 수 있습니다. 측정항목 유형 문자열은 edgecache.googleapis.com/edge_cache_route_rule/network_actions/ 프리픽스를 따릅니다. 표의 항목에서는 이 프리픽스가 생략되었습니다.

측정항목 유형 표시 이름
종류, 유형, 단위
설명
wasm_action_invocation_count 서비스 확장 프로그램 호출 수
DELTAINT641
선택한 기간 동안 Media CDN에서 처리한 서비스 확장 프로그램 호출 수입니다.
wasm_action_invocation_latencies 서비스 확장 프로그램 호출 지연 시간
DELTADISTRIBUTIONus
Media CDN이 플러그인을 디스패치하고 실행하는 데 걸리는 총시간(밀리초)입니다. 이 측정항목에는 서비스 확장 프로그램 콜백의 라벨로 구분된 항목이 포함됩니다.