本頁說明如何搭配 Media CDN 的 Service Extensions 外掛程式,設定及使用 Cloud Logging 和 Cloud Monitoring。
記錄
本節說明 Media CDN 外掛程式的 Service Extensions 記錄,以及如何查看記錄訊息中的資訊並建立關聯。
記錄訊息
Service Extensions 支援在外掛程式執行期間產生記錄訊息。記錄檔功能預設為停用。如要記錄外掛程式的記錄,請在建立外掛程式或更新外掛程式時啟用這項功能。
外掛程式記錄會註記下列背景資訊:
- 標準記錄註解,例如時間戳記和記錄層級。
- 產生訊息的外掛程式 ID。
- 產生記錄訊息的外掛程式 callback。
requestId追蹤 ID,有助於判斷記錄訊息與哪個要求記錄相關聯。
與 Service Extensions 相關的記錄屬於下列其中一個類別:
外掛程式記錄訊息
由記錄呼叫產生,例如 Rust 的
info!(...)、Go 的proxywasm.LogInfo(...)或 C++ 的LOG_INFO。Service Extensions 會將這些記錄訊息匯出至 Cloud Logging。您可以記錄要求和回應標頭,以及外掛程式採取的任何動作。您可以使用
networkservices.googleapis.com服務查看這些訊息。Media CDN 記錄訊息
針對 HTTP 要求傳送至
EdgeCacheService資源的 Media CDN 記錄訊息,並包含相關聯的 Wasm 動作。這些是可透過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。
如要查看記錄,請前往 Google Cloud 控制台的「Logs Explorer」頁面。
查看記錄訊息
您可以在 Logs Explorer 中建構查詢,查看記錄。
外掛程式記錄會以獨立的 Service Extensions 記錄形式顯示。在這個檢視畫面中,每個外掛程式記錄訊息都會記錄在自己的記錄中,且不會自動與要求記錄資訊建立關聯。
這些記錄訊息位於 networkactions.googleapis.com/wasm_plugin_activity 記錄中,資源類型為 networkactions.googleapis.com/WasmPluginVersion。
系統也可能會將資訊記錄訊息新增至這份記錄。
舉例來說,如果外掛程式調用超出 CPU 或記憶體限制,導致外掛程式失敗,系統就會記錄 ERROR 嚴重程度的訊息。您也可以在「查看及篩選錯誤」中查看這類訊息。
您也可以在 Logs Explorer 中,查看與相應 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"
}
requestId 和 trace 值相同。
{
"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 要求 16 KiB 的酬載資料。這個金額會分配到與特定 HTTP 要求相關聯的多個記錄呼叫中。這項限制僅適用於記錄訊息文字,不適用於 Service Extensions 新增至記錄檔記錄的其他中繼資料。
舉例來說,如果 on_http_request_headers 回呼各以 4 KiB 的訊息進行兩次記錄呼叫,然後 on_http_response_headers 回呼嘗試以 4 KiB 的訊息進行三次記錄呼叫,但這些呼叫都是針對同一個 HTTP 要求,那麼第三個記錄訊息就會遭到捨棄。系統會新增記錄訊息,記錄遭捨棄的外掛程式產生記錄訊息數量。
監控
本節說明如何使用 Cloud Monitoring 資訊主頁,查看 Media CDN 外掛程式的 Service Extensions 指標。
如要進一步瞭解 Service Extensions 指標類型,請參閱「Google Cloud 指標」頁面。
查看 Service Extensions 的 Monitoring 資訊主頁
如要查看服務擴充功能的監控資訊主頁,請按照下列步驟操作:
- 前往 Google Cloud 控制台的「Service Extensions」頁面。
- 按一下「外掛程式」分頁標籤。
- 按一下外掛程式名稱。
- 在「外掛程式詳細資料」頁面中,按一下「監控」分頁標籤。
- 如要查看外掛程式生命週期作業的指標,請從「作業篩選器」清單中選取值。預設會選取
HTTP request header和HTTP response header。 - 如要查看特定外掛程式版本的指標,請從「外掛程式版本篩選器」清單中選取值。根據預設,系統會顯示所有版本的指標。
- 如要變更要查看資料的期間,請從時間選取器選取預先定義的期間,或按一下「自訂」並定義開始和結束時間。選取器預設為
1 day。
在「監控」頁面中,指標圖表會顯示有助於監控外掛程式效能的資訊。
Service Extensions 的外掛程式指標
您可以從服務擴充功能角度監控外掛程式的下列指標。這些指標會加上 networkactions.googleapis.com/wasm_plugin/ 前置字元。表格中的項目會省略前置字串。
| 指標類型 | 顯示名稱
種類、類型、單位 說明 |
|---|---|
invocation_count
|
Wasm 外掛程式叫用次數
DELTA、INT64、1
所選時間範圍內的外掛程式叫用次數。每次外掛程式 callback 呼叫都會計為一次外掛程式呼叫。 |
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 的外掛程式指標
從 Media CDN 的角度來看,您可以監控外掛程式的下列指標。指標類型字串會遵循下列前置字元:edgecache.googleapis.com/edge_cache_route_rule/network_actions/。表格中的項目會省略前置字串。
| 指標類型 | 顯示名稱
種類、類型、單位 說明 |
|---|---|
wasm_action_invocation_count
|
Service Extensions 叫用次數
DELTA、INT64、1
在所選時間範圍內,Media CDN 處理的 Service Extensions 叫用次數。 |
wasm_action_invocation_latencies
|
Service Extensions 呼叫延遲時間
DELTA、DISTRIBUTION、us
Media CDN 傳送及執行外掛程式所花費的總時間 (以毫秒為單位)。這項指標包含服務擴充功能回呼的標籤分隔項目。 |