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

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

로깅

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

로그 메시지

Service Extensions는 플러그인 실행 중에 로그 메시지 생성을 지원합니다. 녹화 로그는 기본적으로 사용 중지되어 있습니다. 플러그인의 로그를 기록하려면 플러그인을 만들거나 업데이트할 때 사용 설정합니다.

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

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

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

  • 플러그인 로그 메시지

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

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

  • Media CDN 로그 메시지

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

플러그인 로깅 사용 설정

Service Extensions는 플러그인 실행 중에 로그 메시지 생성을 지원합니다. 녹화 로그는 기본적으로 사용 중지되어 있습니다.

플러그인의 로그를 기록하려면 플러그인을 만들거나 업데이트할 때 사용 설정합니다.

기존 플러그인에 로깅을 사용 설정하려면 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.0과 1.0 사이의 부동 소수점 값은 로그 메시지의 비율이 저장됨을 나타냅니다.
    • min-log-level: Cloud Logging으로 내보낼 플러그인 로그 메시지의 최소 심각도 수준입니다. 기본값은 INFO입니다.

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

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

로그 메시지 보기

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

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

이러한 로그 메시지는 리소스 유형이 networkactions.googleapis.com/WasmPluginVersion인 networkactions.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 로그 항목은 다음과 같이 표시됩니다. 두 로그 메시지의 requestId 및 trace 값은 동일합니다.
{
  "insertId": "6c95cc54-0000-26ba-ba73-f403043c328c@a1",
  "jsonPayload": {
    "cacheMode": "USE_ORIGIN_HEADERS",
    "@type": "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry",
        "serviceExtensionInfo": [
      {
        "serviceExtension": "projects/123456789/locations/global/cdnEdgeExtensions/my-cdn-edge-extension",
        "chain": "edge-plugin-chain",
        "extension": "auth-and-header-plugin",
        "grpcStatus": "OK",
        "processingRequests": [
          {
            "eventType": "RESPONSE_HEADERS",
            "processingEffect": "CONTENT_MODIFIED"
          }
        ]
      }
    ],
    "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 측정항목 페이지를 참조하세요.

Service Extensions의 Monitoring 대시보드 보기

Service Extensions의 Monitoring 대시보드를 보려면 다음을 수행합니다.

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

    Service Extensions로 이동

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

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

Service Extensions의 플러그인 측정항목

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

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

Media CDN의 서비스 확장 프로그램 모니터링 측정항목

Monitoring 측정항목 탐색기의 EdgeCacheService 관점에서 Media CDN 에지 확장 프로그램을 모니터링할 수 있습니다.

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

    측정항목 탐색기로 이동

  2. Media CDN 서비스 확장 프로그램 모니터링 리소스를 선택합니다.

  3. 확장 프로그램 측정항목 카테고리를 선택합니다.

  4. 플러그인 이름으로 설정된 extension_service 라벨로 필터링합니다.

프리뷰에서 Media CDN의 확장 프로그램에 대한 다음 측정항목을 모니터링할 수 있습니다. 이러한 측정항목에는 프리픽스 networkactions.googleapis.com/extension이 있습니다. 다음 표에서는 항목에 이 프리픽스가 생략되어 있습니다.

다음 표에는 각 측정항목의 측정항목 유형, 표시 이름, 종류, 유형, 단위, 설명이 나와 있습니다.

측정항목 유형 표시 이름
종류, 유형, 단위
설명
invocation_count 확장 프로그램 호출 횟수
DELTA, INT64, 1
내선으로 전송된 호출 횟수입니다.
invocation_latencies 확장 프로그램 호출 지연 시간
DELTA, DISTRIBUTION, ms
각 확장 프로그램 호출의 지연 시간에서 계산된 분포입니다. 콜아웃 광고 확장에만 적용되며 플러그인에는 지원되지 않습니다.
sent_chunks_count 확장 프로그램에서 전송한 청크 수
DELTA, INT64, 1
request_body 및 response_body 이벤트에만 적용됩니다. 확장 프로그램으로 전송된 데이터 청크 수입니다.
received_chunks_count 확장 프로그램에서 수신한 청크 수
DELTA, INT64, 1
request_body 및 response_body 이벤트에만 적용됩니다. 확장 프로그램에서 수신한 청크 수입니다.
failed_open_count 장애 시 허용으로 확장 프로그램 호출 실패
DELTA, INT64, 1
시스템이 장애 시 허용으로 구성되고 요청이 계속 진행되도록 허용된 경우 호출이 실패한 횟수입니다.
mutation_rejections_count 확장 프로그램 변경사항 거부 수
DELTA, INT64, 1
요청 헤더, 본문 또는 트레일러 변경사항을 요청했지만 거부된 호출 수입니다. 변형이 잘못되었거나 크기 한도를 초과하는 경우 등 다양한 이유로 거부가 발생할 수 있습니다.
sent_bytes_count 확장 프로그램 전송 바이트 수
DELTA, INT64, By
확장 프로그램으로 전송된 바이트 수입니다.
received_bytes_count 확장 프로그램 수신 바이트 수
DELTA, INT64, By
확장 프로그램에서 수신한 바이트 수입니다.