應用程式負載平衡器和 Cloud CDN 外掛程式的記錄與監控功能

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

記錄

本節說明應用程式負載平衡器外掛程式的記錄功能。您可以從外掛程式和負載平衡器的角度記錄。

記錄訊息

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

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

  • 標準記錄註解,例如時間戳記和記錄層級。
  • 產生訊息的外掛程式 ID。
  • 產生記錄訊息的外掛程式 回呼
  • 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:活動記錄的取樣率,值介於 01 之間。值 0 表示系統不會儲存記錄訊息。預設值 1 表示系統會儲存所有記錄訊息。介於 0.01.0 之間的浮點值,表示儲存的記錄訊息百分比。
    • min-log-level:要匯出至 Cloud Logging 的外掛程式記錄訊息最低嚴重程度。預設值為 INFO

為外掛程式啟用記錄功能後,您可以在 Cloud Logging 中查看外掛程式程式碼中記錄陳述式發出的訊息。

如要查看記錄,請前往 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 回呼嘗試以 4 KiB 的訊息進行三次記錄呼叫,但這些呼叫都是針對同一個 HTTP 要求,那麼第三個記錄訊息就會遭到捨棄。系統會新增記錄訊息,記錄遭捨棄的外掛程式產生記錄訊息數量。

從負載平衡器的角度記錄

本節從負載平衡器的角度說明 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.01.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 陣列 ProcessingRequest 擴充功能 ext_proc 的統計資料清單,或透過 gRPC 串流發生的 ext_authz 擴充功能 CheckRequest 統計資料清單。
per_processing_request_info[].event_type 列舉 ProcessingRequest 的事件類型。可以是下列任一值: REQUEST_HEADERSREQUEST_BODYRESPONSE_HEADERSRESPONSE_BODY
per_processing_request_info[].latency 持續時間 從將訊息的第一個位元組傳送至擴充功能,到接收訊息的最後一個位元組為止的期間。ProcessingRequestProcessingResponse
per_processing_request_info[].processing_effect 列舉 處理要求中每個事件的處理結果。

僅適用於區域性外部應用程式負載平衡器、區域性內部應用程式負載平衡器,以及跨區域內部應用程式負載平衡器。

可以是下列其中一個值:

  • NONE:表示內容未變更。
  • NONE_FAILED_OPEN:表示擴充功能無法開啟,因此未執行任何突變。
  • CONTENT_MODIFIED:表示內容已因成功套用的變動要求而變更。
  • IMMEDIATE_RESPONSE:表示擴充功能已傳送立即回應,停止所有後續處理作業。
  • MUTATION_REJECTED:表示擴充功能要求至少一項不允許的變更,因此後續處理作業已停止。系統會記錄適當的錯誤訊息。
  • UNSPECIFIED:表示處理效果不明。
per_processing_request_info[].processing_effect_details 字串 processing_effectMUTATION_REJECTED 時,系統會提供變更遭拒的詳細原因。

僅適用於區域性外部應用程式負載平衡器、區域性內部應用程式負載平衡器,以及跨區域內部應用程式負載平衡器。

resource 字串 擴充功能資源名稱

監控

本節說明如何使用 Cloud Monitoring 資訊主頁,查看透過 Service Extensions 設定的應用程式負載平衡器外掛程式指標。您可以從外掛程式或負載平衡器的角度監控外掛程式。

從外掛程式的角度監控

本節從外掛程式的角度說明 Service Extensions 監控。

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

查看 Service Extensions 的 Monitoring 資訊主頁

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

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

    前往 Service Extensions

  2. 按一下「外掛程式」分頁標籤。
  3. 按一下外掛程式名稱。
  4. 在「外掛程式詳細資料」頁面中,按一下「監控」分頁標籤。
  5. 在「監控」頁面中,指標圖表會顯示有助於監控外掛程式成效的資訊。

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

Service Extensions 的外掛程式指標

您可以從 Service Extensions 角度監控外掛程式的下列指標。這些指標會加上 networkservices.googleapis.com/wasm_plugin/ 前置字元。表格中的項目會省略前置字串。

指標類型 顯示名稱
種類、類型、單位
說明
invocation_count Wasm 外掛程式叫用次數
DELTAINT641
所選時間範圍內的外掛程式叫用次數。每次外掛程式 callback 叫用都會視為獨立的外掛程式叫用。
invocation_latencies Wasm 外掛程式叫用延遲
DELTADISTRIBUTIONus
外掛程式的本機執行時間 (以毫秒為單位)。這項指標包含每個回呼的標籤分隔項目。
cpu/usage_times Wasm 外掛程式標準化 CPU 使用率
DELTADISTRIBUTIONus{CPU}
外掛程式調用作業的 CPU 使用時間 (以微秒為單位)。
memory/bytes_used Wasm 外掛程式記憶體用量
GAUGEDISTRIBUTIONBy
Wasm 外掛程式 VM 分配的總記憶體 (以位元組為單位)。

從負載平衡器的角度監控

本節將從負載平衡器的角度,說明如何監控外掛程式的 Service Extensions。

查看 Cloud Load Balancing 的監控資訊主頁

應用程式負載平衡器會將監控資料匯出至 Cloud Monitoring

監控指標可用於以下目的:

  • 評估負載平衡器的設定、用量和效能
  • 問題疑難排解
  • 提高資源利用率和使用者體驗

如要查看預先定義的資訊主頁,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「資訊主頁總覽」頁面。

    前往資訊主頁總覽

  2. 在「類別」部分中,按一下「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 擴充功能叫用次數
DELTAINT641
傳送至擴充功能的叫用次數。
extension/invocation_latencies 擴充功能叫用延遲時間
DELTADISTRIBUTIONms
根據每次擴充功能叫用的延遲時間計算出的分布情形。
extension/sent_chunks_count 傳送的擴充功能區塊計數
DELTAINT641
僅適用於 request_bodyresponse_body 事件。 傳送至擴充功能的資料區塊數量。
extension/received_chunks_count 收到的擴充功能區塊計數
DELTAINT641
僅適用於 request_bodyresponse_body 事件。 從擴充功能收到的區塊數。
extension/failed_open_count 擴充功能叫用失敗 (採用失敗開啟機制)
DELTAINT641
系統設定為失敗開啟,且允許要求繼續執行時,叫用失敗的次數。
extension/mutation_rejections_count 擴充功能異動遭拒次數
DELTAINT641
要求標頭、主體或預告片異動但遭拒的叫用次數。拒絕的原因有很多,例如變動無效或超出大小限制。
extension/sent_bytes_count 擴充功能傳送的位元組數
DELTAINT64By
傳送至擴充功能的位元組數。
extension/received_bytes_count 擴充功能接收的位元組數
DELTAINT64By 從擴充功能接收的位元組數。

您也可以監控下列指標。這些指標會加上 loadbalancing.googleapis.com/ 前置字元。表格中的項目會省略前置字串。

指標類型 顯示名稱
種類、類型、單位
說明
https/backend_request_count
https/external/regional/backend_request_count
https/internal/backend_request_count
後端要求數量
DELTAINT641
外掛程式從應用程式負載平衡器呼叫的次數。
https/backend_request_bytes_count
https/external/regional/backend_request_bytes_count
https/internal/backend_request_bytes_count
後端要求位元組數
DELTAINT64By
從負載平衡器傳送至外掛程式的位元組數。
https/backend_response_bytes_count
https/external/regional/backend_response_bytes_count
https/internal/backend_response_bytes_count
後端回應位元組數
DELTAINT64By
負載平衡器從擴充功能後端收到的位元組數。

查看外掛程式指標

如要查看特定外掛程式的指標,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「指標探索器」頁面。

    前往「Metrics Explorer」頁面

  2. 在「指標」元素中,展開「選取指標」選單。接著,請按照下列步驟操作:

    1. 從資源清單中,選取適當的應用程式負載平衡器規則。

    2. 從指標類別清單中選取「Https」

    3. 從指標清單中選取外掛程式指標

    4. 按一下「套用」

  3. 在「篩選器」元素中,執行下列操作:

    1. 選取 backend_target_type 標籤,並將值設為 WASM_PLUGIN

    2. 選取 backend_target_name 標籤,然後將外掛程式名稱設為值。

如要進一步瞭解負載平衡器指標類型,請參閱 Google Cloud 指標頁面的「loadbalancing」一節。