本頁面說明如何搭配 Cloud Load Balancing 和 Cloud CDN 的 Service Extensions 外掛程式,設定及使用 Cloud Logging 和 Cloud Monitoring。
記錄
本節說明 Application Load Balancer 外掛程式的記錄功能。您可以從外掛程式和負載平衡器的角度進行記錄。
記錄訊息
Service Extensions 支援在執行外掛程式時產生記錄訊息。記錄功能預設為停用。如要記錄外掛程式的記錄,請在建立外掛程式或更新外掛程式時啟用。
外掛程式記錄會加上下列背景資訊:
- 標準記錄註解,例如時間戳記和記錄層級。
- 生成訊息的外掛程式身分。
- 產生記錄訊息的外掛程式回呼。
requestId追蹤 ID,可協助判斷記錄訊息與哪個要求記錄相關聯。
與 Service Extensions 相關的記錄屬於下列其中一個類別:
外掛程式記錄訊息
由記錄呼叫產生,例如 Rust 的
info!(...)、Go 的proxywasm.LogInfo(...)或 C++ 的LOG_INFO。Service Extensions 會將這些記錄訊息匯出至 Cloud Logging。您可以記錄要求和回應標頭,以及外掛程式採取的任何動作。您可以使用
networkservices.googleapis.com服務查看這些訊息。Cloud Load Balancing 記錄訊息
您可以使用
loadbalancing.googleapis.com服務查看這些訊息。
從外掛程式角度記錄
本節從外掛程式的角度說明 Service Extensions 記錄。
啟用外掛程式的記錄功能
Service Extensions 支援在執行外掛程式時產生記錄訊息。記錄功能預設為停用。
如要記錄外掛程式的記錄,請在建立外掛程式或更新外掛程式時啟用。
如要為現有外掛程式啟用記錄功能,請使用 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.0和1.0之間的浮點值,表示儲存的記錄訊息百分比。min-log-level:要匯出至 Cloud Logging 的外掛程式記錄訊息最低嚴重性等級。預設值為INFO。
如要查看記錄,請前往 Google Cloud 控制台的「Logs Explorer」頁面。
查看外掛程式的記錄訊息
您可以在 Logs Explorer 中建構查詢,查看記錄檔。
您可以將外掛程式記錄視為獨立的 Service Extensions 記錄。在這個檢視畫面中,每則外掛程式記錄訊息都會記錄在專屬的記錄中,不會自動與要求記錄資訊建立關聯。
這些記錄訊息位於 networkservices.googleapis.com/wasm_plugin_activity 記錄中,資源類型為 networkservices.googleapis.com/WasmPluginVersion。
系統也可能在記錄中加入資訊記錄訊息。舉例來說,如果外掛程式叫用超過 CPU 或記憶體限制,導致外掛程式失敗,系統會記錄嚴重性為 ERROR 的訊息。這類訊息也會顯示在「查看及篩選錯誤」中。
外掛程式記錄範例
以下是 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.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 要求 16 KiB 的酬載資料。這項金額會分配給與特定 HTTP 要求相關聯的多個記錄呼叫。這項限制僅適用於記錄訊息文字,不適用於 Service Extensions 新增至記錄檔的其他中繼資料。
舉例來說,如果 on_http_request_headers 回呼發出兩次記錄呼叫,每次呼叫都包含 4 KiB 訊息,接著 on_http_response_headers 回呼嘗試針對同一個 HTTP 要求發出三次記錄呼叫,每次呼叫都包含 4 KiB 訊息,則第五則記錄訊息會遭到捨棄。系統會新增記錄訊息,記錄外掛程式產生的記錄訊息中,有多少訊息遭到捨棄。
從負載平衡器角度記錄
本節從負載平衡器的角度,說明 Service Extensions 記錄。
啟用後端服務的記錄功能
建立服務時,您可以為要求目標的後端服務啟用記錄功能,藉此啟用應用程式負載平衡器外掛程式的記錄功能。
如要啟用目標後端服務的記錄功能,請使用 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則代表會記錄所有要求。預設值為1.0。這項設定只有在與enable-logging參數搭配使用時才會生效。如果省略enable-logging,系統會停用記錄功能。REGION:後端所在區域LOGGING_OPTIONAL_MODE:啟用下列其中一種模式的選填欄位記錄功能:INCLUDE_ALL_OPTIONAL會包含所有選填欄位。EXCLUDE_ALL_OPTIONAL(預設) 會排除所有選填欄位。CUSTOM包含選填欄位的自訂清單。
OPTIONAL_FIELDS:選取CUSTOM模式時,以半形逗號分隔的選用欄位清單
在後端服務啟用記錄功能後,系統會使用 Cloud Logging 記錄 HTTP 或 HTTPS 要求。
如要查看記錄,請前往 Google Cloud 控制台的「Logs Explorer」頁面。
後端服務的記錄訊息
一般來說,應用程式負載平衡器記錄項目包含實用資訊,有助監控 HTTP 或 HTTPS 流量及偵錯。記錄項目包含下列資訊類型:
- 大部分 Google Cloud 記錄檔中顯示的資訊,例如嚴重性、專案 ID、專案編號和時間戳記,如 LogEntry 記錄檔所述。
- HttpRequest 記錄欄位。
HTTP 和 HTTPS 負載平衡器的要求記錄,在負載平衡器記錄項目 JSON 酬載中包含 service_extension_info 物件,其中含有下列資訊:
| 欄位 | 類型 | 說明 |
|---|---|---|
backend_target_name |
字串 | 擴充功能後端目標的名稱。 |
backend_target_type |
字串 | 後端目標的類型。 |
chain |
字串 | 服務擴充功能資源中,符合要求的擴充功能鏈結名稱。 |
extension |
字串 | 擴充功能鏈結中的擴充功能名稱。 |
failed_open |
布林值 | 如果擴充功能設定將 failOpen 設為 true,這項指標的值為 true,表示擴充功能逾時或失敗時,處理作業仍會繼續。僅適用於區域性外部應用程式負載平衡器、區域性內部應用程式負載平衡器,以及跨區域內部應用程式負載平衡器。 |
grpc_status |
列舉 | gRPC 串流的最新狀態。詳情請參閱 gRPC 狀態碼。 |
per_processing_request_info |
陣列 | ext_proc 擴充功能的 ProcessingRequest 統計資料清單,或 gRPC 串流中 ext_authz 擴充功能的 CheckRequest 統計資料清單。 |
per_processing_request_info[].event_type |
列舉 | ProcessingRequest 的事件類型。可以是下列其中一項:REQUEST_HEADERS、REQUEST_BODY、RESPONSE_HEADERS 或 RESPONSE_BODY。 |
per_processing_request_info[].latency |
持續時間 | 從 ProcessingRequest 訊息的第一個位元組傳送至擴充功能,到收到 ProcessingResponse 訊息的最後一個位元組,這段時間的長度。 |
per_processing_request_info[].processing_effect |
列舉 | 處理要求中每個事件的處理結果。僅適用於區域性外部應用程式負載平衡器、區域性內部應用程式負載平衡器,以及跨區域內部應用程式負載平衡器。
可以是下列其中一個值:
|
per_processing_request_info[].processing_effect_details |
字串 | 當 processing_effect 為 MUTATION_REJECTED 時,系統會顯示變動遭拒的詳細原因。僅適用於區域性外部應用程式負載平衡器、區域性內部應用程式負載平衡器,以及跨區域內部應用程式負載平衡器。 |
resource |
字串 | 擴充功能資源名稱 |
監控
本節說明如何使用 Cloud Monitoring 資訊主頁,查看使用 Service Extensions 設定的應用程式負載平衡器外掛程式指標。您可以從外掛程式或負載平衡器的角度監控外掛程式。
從外掛程式角度監控
本節說明如何從外掛程式的角度監控 Service Extensions。
如要進一步瞭解 Service Extensions 指標類型,請參閱Google Cloud 指標頁面。
查看 Service Extensions 的 Monitoring 資訊主頁
如要查看 Service Extensions 的 Monitoring 資訊主頁,請按照下列步驟操作:
- 前往 Google Cloud 控制台的「Service Extensions」頁面。
- 按一下「外掛程式」分頁標籤。
- 按一下外掛程式名稱。
- 在「Plugin details」(外掛程式詳細資料) 頁面中,按一下「Monitoring」(監控) 分頁標籤。
- 如要查看外掛程式生命週期作業的指標,請從「Operation filter」(作業篩選器) 清單中選取值。根據預設,系統會選取
HTTP request header和HTTP response header值。 - 如要查看特定外掛程式版本的指標,請從「Plugin version filter」(外掛程式版本篩選器) 清單中選取值。根據預設,系統會顯示所有版本的指標。
- 如要變更要查看資料的時間範圍,請從時間選取器中選取預先定義的時間範圍,或按一下「Custom」(自訂) 並定義開始和結束時間。根據預設,選取器會設為
1 day。
「Monitoring」(監控) 頁面的指標圖表會顯示資訊,協助您監控外掛程式效能。
Service Extensions 的外掛程式指標
您可以從 Service Extensions 的角度,監控外掛程式的下列指標。這些指標的前置字元為 networkservices.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 配置的記憶體總量,以位元組為單位。 |
從負載平衡器的角度監控
本節說明如何從負載平衡器的角度,監控外掛程式的 Service Extensions。
查看 Cloud Load Balancing 的 Monitoring 資訊主頁
應用程式負載平衡器會將監控資料匯出至 Cloud Monitoring。
Monitoring 指標可用於以下用途:
- 評估負載平衡器的設定、用量和效能
- 問題疑難排解
- 提高資源利用率和使用者體驗
如要查看預先定義的資訊主頁,請按照下列步驟操作:
- 在 Google Cloud 控制台中,前往「Dashboards overview」(資訊主頁總覽) 頁面。
- 在「Categories」(類別) 專區中,點選「GCP」。
- 如要查看「所有」負載平衡器的資訊主頁清單,請在「GCP Dashboards」(GCP 資訊主頁) 清單中,點選名為「Google Cloud Load Balancers」(Google Cloud 負載平衡器) 的資訊主頁。如要查看特定負載平衡器的資訊主頁,請從清單找出並點選負載平衡器的名稱。
- 如要查看僅限負載平衡器的預先定義資訊主頁,請選取適當的資訊主頁。
除了 Monitoring 預先定義的資訊主頁,您可透過 Cloud Monitoring API 建立自訂資訊主頁、設定警告及查詢指標。
Cloud Load Balancing 的外掛程式指標
您可以從 Cloud Load Balancing 的角度,監控外掛程式的下列指標。
在預先發布版中,您可以監控所有類型應用程式負載平衡器的擴充功能指標。這些指標的前置字元為 networkservices.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
從擴充功能接收的位元組數。 |
您也可以監控下列指標。這些指標的前置字元為 loadbalancing.googleapis.com/。表格中的項目會省略前置字元。
| 指標類型 | 顯示名稱
種類、類型、單位 說明 |
|---|---|
https/backend_request_count、https/external/regional/backend_request_count、https/internal/backend_request_count |
後端要求數量
DELTA、INT64、1
從應用程式負載平衡器呼叫外掛程式的次數。 |
https/backend_request_bytes_count、https/external/regional/backend_request_bytes_count、https/internal/backend_request_bytes_count |
後端要求位元組
DELTA、INT64、By
從負載平衡器傳送至外掛程式的位元組數。 |
https/backend_response_bytes_count、https/external/regional/backend_response_bytes_count、https/internal/backend_response_bytes_count |
後端回應位元組
DELTA、INT64、By
負載平衡器從擴充功能後端接收的位元組數。 |
查看外掛程式指標
如要查看特定外掛程式的指標,請按照下列步驟操作:
前往 Google Cloud 控制台的「Metrics Explorer」頁面。
在「Metric」(指標) 元素中,展開「Select a metric」(選取指標) 選單。接著,按照下列步驟操作:
從資源清單中選取適當的應用程式負載平衡器規則。
從指標類別清單中選取「Https」。
從指標清單中選取外掛程式指標。
按一下「套用」。
在「Filter」元素中,執行下列操作:
選取「backend_target_type」backend_target_type標籤,並將值設為
WASM_PLUGIN。選取「backend_target_name」backend_target_name標籤,並將外掛程式名稱設為值。
如要進一步瞭解負載平衡器指標類型,請參閱 Google Cloud 指標頁面的「loadbalancing」一節。