記錄及監控 Media CDN 外掛程式

本頁面說明如何搭配 Media CDN 的 Service Extensions 外掛程式,設定及使用 Cloud Logging 和 Cloud Monitoring。

記錄

本節說明 Media CDN 外掛程式的 Service Extensions 記錄,以及如何查看和關聯記錄訊息中的資訊。

記錄訊息

Service Extensions 支援在執行外掛程式時產生記錄訊息。記錄功能預設為停用。如要記錄外掛程式的記錄,請在建立外掛程式或更新外掛程式時啟用。

外掛程式記錄會加上下列背景資訊:

  • 標準記錄註解,例如時間戳記和記錄層級。
  • 生成訊息的外掛程式身分。
  • 產生記錄訊息的外掛程式回呼。
  • requestId 追蹤 ID,可協助判斷記錄訊息與哪個要求記錄相關聯。

與 Service Extensions 相關的記錄屬於下列其中一個類別:

  • 外掛程式記錄訊息

    由記錄呼叫產生,例如 Rust 的 info!(...)、Go 的 proxywasm.LogInfo(...) 或 C++ 的 LOG_INFO。Service Extensions 會將這些記錄訊息匯出至 Cloud Logging。您可以記錄要求和回應標頭,以及外掛程式採取的任何動作。

    您可以使用 networkservices.googleapis.com 服務查看這些訊息。

  • Media CDN 記錄訊息

    Media CDN 記錄訊息,用於向具有相關聯 CdnEdgeExtension 的 EdgeCacheService 資源發出 HTTP 要求。這些是一般的 Media CDN 記錄項目,您可以在 edgecache.googleapis.com 服務下查看。

啟用外掛程式的記錄功能

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 控制台的「Logs Explorer」頁面。

查看記錄訊息

您可以在 Logs Explorer 中建構查詢,查看記錄檔。

您可以將外掛程式記錄視為獨立的 Service Extensions 記錄。在這個檢視畫面中,每則外掛程式記錄訊息都會記錄在專屬的記錄中,不會自動與要求記錄資訊建立關聯。

這些記錄訊息位於 networkactions.googleapis.com/wasm_plugin_activity 記錄中,資源類型為 networkactions.googleapis.com/WasmPluginVersion。

系統也可能在記錄中加入資訊記錄訊息。舉例來說,如果外掛程式叫用超過 CPU 或記憶體限制,導致外掛程式失敗,系統會記錄嚴重性為 ERROR 的訊息。這類訊息也會顯示在「查看及篩選錯誤」中。

您也可以在記錄檔探索工具中,查看與對應 Media CDN 要求記錄相關聯的記錄訊息。查看要求記錄時,如果展開要求記錄項目,與要求相關的外掛程式記錄會以巢狀結構顯示在要求記錄下方。這個檢視畫面可協助您瞭解外掛程式記錄與相關要求的關聯。

記錄範例

以下是 Service Extensions 記錄項目範例。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 要求 16 KiB 的酬載資料。這項金額會分配給與特定 HTTP 要求相關聯的多個記錄呼叫。這項限制僅適用於記錄訊息文字,不適用於 Service Extensions 新增至記錄檔的其他中繼資料。

舉例來說,如果 on_http_request_headers 回呼發出兩次記錄呼叫,每次呼叫都包含 4 KiB 訊息,接著 on_http_response_headers 回呼嘗試針對同一個 HTTP 要求發出三次記錄呼叫,每次呼叫都包含 4 KiB 訊息,則第五則記錄訊息會遭到捨棄。系統會新增記錄訊息,記錄外掛程式產生的記錄訊息中,有多少訊息遭到捨棄。

監控

本節說明如何使用 Cloud Monitoring 資訊主頁,查看 Media CDN 外掛程式的 Service Extensions 指標。

如要進一步瞭解 Service Extensions 指標類型,請參閱Google Cloud 指標頁面。

查看 Service Extensions 的 Monitoring 資訊主頁

如要查看 Service Extensions 的 Monitoring 資訊主頁,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Service Extensions」頁面。

    前往 Service Extensions

  2. 按一下「外掛程式」分頁標籤。
  3. 按一下外掛程式名稱。
  4. 在「Plugin details」(外掛程式詳細資料) 頁面中,按一下「Monitoring」(監控) 分頁標籤。
  5. 「Monitoring」(監控) 頁面的指標圖表會顯示資訊,協助您監控外掛程式效能。

  6. 如要查看外掛程式生命週期作業的指標,請從「Operation filter」(作業篩選器) 清單中選取值。根據預設,系統會選取 HTTP request header 和 HTTP response header 值。
  7. 如要查看特定外掛程式版本的指標,請從「Plugin version filter」(外掛程式版本篩選器) 清單中選取值。根據預設,系統會顯示所有版本的指標。
  8. 如要變更要查看資料的時間範圍,請從時間選取器中選取預先定義的時間範圍,或按一下「Custom」(自訂) 並定義開始和結束時間。根據預設,選取器會設為 1 day。

Service Extensions 的外掛程式指標

您可以從 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 Metrics Explorer 中,從 EdgeCacheService 角度監控 Media CDN 邊緣擴充功能:

  1. 前往 Google Cloud 控制台的「Metrics Explorer」頁面。

    前往「Metrics Explorer」頁面

  2. 選取「Media CDN Service Extension」受監控資源。

  3. 選取「擴充功能」指標類別。

  4. 依設為外掛程式名稱的 extension_service 標籤篩選。

在預先發布版中,您可以監控 Media CDN 擴充功能的下列指標。這些指標的前置字元為 networkactions.googleapis.com。下表中的項目會省略前置字元。

下表提供各項指標的指標類型、顯示名稱、種類、類型、單位和說明。

指標類型 顯示名稱
種類、類型、單位
說明
extension/invocation_count 擴充功能叫用次數
DELTA、INT64、1
傳送至擴充功能的叫用次數。
extension/invocation_latencies 擴充功能叫用延遲時間
DELTA、DISTRIBUTION、ms
根據各項擴充功能叫用延遲時間計算出的分布情形。 僅適用於摘要擴充功能,不支援外掛程式。
extension/sent_chunks_count 擴充功能傳送的區塊數量
DELTA、INT64、1
僅適用於 request_body 和 response_body 事件。 傳送至擴充功能的資料區塊數量。
extension/received_chunks_count 擴充功能收到的區塊數量
DELTA、INT64、1
僅適用於 request_body 和 response_body 事件。 從擴充功能收到的區塊數量。
extension/failed_open_count 擴充功能叫用失敗 (容錯模式)
DELTA、INT64、1
系統設為容錯模式,且要求獲准繼續執行時,叫用失敗的次數。
extension/mutation_rejections_count 擴充功能變異拒絕次數
DELTA、INT64、1
要求標頭、主體或結尾變異,但遭拒絕的叫用次數。拒絕的原因有很多,例如異動無效或超出大小限制。
extension/sent_bytes_count 擴充功能傳送的位元組數
DELTA、INT64、By
傳送至擴充功能的位元組數。
extension/received_bytes_count 擴充功能接收的位元組數
DELTA、INT64、By
從擴充功能接收的位元組數。