使用 gRPC 用戶端指標

本頁面說明如何使用 gRPC 透過下列其中一種支援的介面與 Cloud Storage 互動,將 gRPC 用戶端指標傳送至 Cloud Monitoring:

您可以使用用戶端指標,監控透過 gRPC 與 Cloud Storage 互動的用戶端應用程式效能。用戶端指標與伺服器端指標不同,後者可從伺服器端角度提供 Cloud Storage 效能的深入分析。

運作方式

使用 gRPC 透過其中一個支援的介面與 Cloud Storage 互動時,您可以選擇加入將用戶端指標傳送至 Cloud Monitoring。您可以使用 Metrics Explorer 查看用戶端指標,監控及最佳化 Cloud Storage 與 gRPC 用戶端之間的互動、管理用量,以及排解效能瓶頸和技術問題。

定價

Cloud Storage 用戶端指標不會產生費用,也就是說,您可以發出、儲存及存取 Cloud Storage 用戶端指標,而不會產生 Cloud Monitoring 費用。如要進一步瞭解定價,請參閱「Google Cloud Observability 定價」。

事前準備

如要使用用戶端指標,請先完成下列步驟:

  1. 確認要使用的 Cloud Storage 用戶端程式庫或連接器支援 gRPC。下列 Cloud Storage 用戶端程式庫和連接器支援 gRPC:

  2. 設定驗證方法。

  3. 啟用 Cloud Monitoring API。

  4. 啟用 Cloud Storage API。

    前往 Cloud Storage API

  5. 設定傳送用戶端指標所需的角色和權限。

必要的角色

如要設定權限,將 gRPC 用戶端指標傳送至 Cloud Monitoring,請在 gRPC 用戶端使用的服務帳戶中,授予「Monitoring 指標寫入者」(roles/monitoring.metricWriter) IAM 角色。

這個預先定義的角色具備將 gRPC 用戶端指標發布至 Cloud Monitoring 所需的權限。如要查看確切的必要權限,請參閱「必要權限」一節:

所需權限

  • monitoring.timeSeries.create

下列 Cloud Storage 預先定義的角色具備這項 IAM 權限:

您或許還可透過其他自訂角色或預先定義的角色取得這些權限。如要進一步瞭解 Monitoring 指標寫入者角色,請參閱 roles/monitoring.metricWriter 的 IAM 說明文件。

注意事項

在 Metrics Explorer 查看指標

請按照下列操作說明,在 Metrics Explorer 中查看 Cloud Storage gRPC 用戶端指標。

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

    前往 Metrics Explorer

  2. 選取要查看指標的專案。

  3. 在「指標」下拉式選單中,按一下「選取指標」。

  4. 在「依資源或指標名稱篩選」搜尋列中,輸入 storage.googleapis.com/Client 或依指標名稱搜尋要套用的指標,然後按一下「套用」。如要新增多個指標,請按一下「Add query」(新增查詢)。

    Cloud Storage 會將指標套用至專案。您可以使用下列下拉式選單篩選或匯總指標:

    • 如要根據指定條件選取及查看部分資料,請使用「Filter」(篩選器) 下拉式選單。

    • 如要將多個資料點合併為單一值,並查看指標的摘要檢視畫面,請使用「彙整」下拉式選單。

    請先讓應用程式執行至少一分鐘,再檢查是否有任何已發布的指標。

如要使用資訊主頁查看您新增至專案的指標,請參閱「資訊主頁總覽」。

指標說明

下列各節概述 Cloud Storage 用戶端指標,可用於監控 gRPC 用戶端的效能。

用戶端每次嘗試指標

下列指標會收集用戶端嘗試與伺服器通訊的個別成效資料。用戶端每次嘗試指標可協助您評估重試行為、瓶頸,以及最佳化用戶端與伺服器之間的通訊。

完整指標 說明 樂器類型 單位 屬性
storage.googleapis.com/client/grpc/client/attempt/started Preview:已啟動的 RPC 嘗試總數,包括尚未完成的嘗試。 計數器 {attempt}
  • grpc.method:完整的 gRPC 方法名稱,包括套件、服務和方法。
  • grpc.target:建立 gRPC 管道時使用的標準化目標 URI。
storage.googleapis.com/client/grpc/client/attempt/duration Preview:完成 RPC 嘗試所需的端對端時間,包括選擇子管道所需的時間。 直方圖 s
  • grpc.method:完整的 gRPC 方法名稱,包括套件、服務和方法。
  • grpc.target:建立 gRPC 管道時使用的標準化目標 URI。
  • grpc.status:收到的 gRPC 伺服器狀態碼,例如 OK、CANCELLED 或 DEADLINE_EXCEEDED。
  • grpc.lb.locality:流量傳送至的地區。這項屬性會設為從 weighted_target 政策傳遞下來的解析器屬性,如果未設定解析器屬性,則會設為空白字串。
storage.googleapis.com/client/grpc/client/attempt/sent_total_compressed_message_size Preview。所有要求訊息 (不含每次 RPC 嘗試的中繼資料) 傳送的位元組總數,經過壓縮但未加密。不含 gRPC 或傳輸框架位元組。 直方圖 By
  • grpc.method:完整的 gRPC 方法名稱,包括套件、服務和方法。
  • grpc.target:建立 gRPC 管道時使用的標準化目標 URI。
  • grpc.status:收到的 gRPC 伺服器狀態碼,例如 OK、CANCELLED 或 DEADLINE_EXCEEDED。
  • grpc.lb.locality:流量傳送至的地區。這項屬性會設為從 weighted_target 政策傳遞下來的解析器屬性,如果未設定解析器屬性,則會設為空白字串。
storage.googleapis.com/client/grpc/client/attempt/rcvd_total_compressed_message_size Preview。每次 RPC 嘗試中,所有回應訊息 (不含中繼資料) 接收到的總位元組數 (已壓縮但未加密)。不含 gRPC 或傳輸框架位元組。 直方圖 By
  • grpc.method:完整的 gRPC 方法名稱,包括套件、服務和方法。
  • grpc.target:建立 gRPC 管道時使用的標準化目標 URI。
  • grpc.status:收到的 gRPC 伺服器狀態碼,例如 OK、CANCELLED 或 DEADLINE_EXCEEDED。
  • grpc.lb.locality:流量傳送至的地區。這項屬性會設為從 weighted_target 政策傳遞下來的解析器屬性,如果未設定解析器屬性,則會設為空字串。

如要進一步瞭解用戶端每次嘗試的工具,請參閱 GitHub 上的 OpenTelemetry 指標說明文件。

用戶端每次呼叫指標

下列指標會匯總顯示用戶端呼叫伺服器的整個生命週期。用戶端每次呼叫指標提供用戶端呼叫的概要資料、追蹤指標,協助您瞭解呼叫模式,並找出錯誤頻率。

完整指標 說明 樂器類型 單位 屬性
storage.googleapis.com/client/grpc/client/call/duration Preview:從應用程式的角度,測量 gRPC 程式庫完成 RPC 的端對端時間。 直方圖 s
  • grpc.method:完整的 gRPC 方法名稱,包括套件、服務和方法。
  • grpc.target:建立 gRPC 管道時使用的標準化目標 URI。
  • grpc.status:收到的 gRPC 伺服器狀態碼,例如 OK、CANCELLED 或 DEADLINE_EXCEEDED。

如要進一步瞭解用戶端每次呼叫檢測,請參閱 GitHub 中的 OpenTelemetry 指標說明文件。

要求負載感測指標

下列指標可深入瞭解用戶端應用程式使用要求負載感應功能的成效。要求負載感應指標可協助您平衡伺服器負載、最佳化資源使用率,以及縮短用戶端回應時間。下列指標僅適用於直接連線。

完整指標 說明 樂器類型 單位 屬性
storage.googleapis.com/client/grpc/lb/rls/cache_entries Preview。要求負載感應快取中的項目數。 度量圖 {entry}
  • grpc.target:表示使用 WRR 的 gRPC 管道目標。
  • grpc.lb.rls.server_target:要求負載感知伺服器通訊的目標 URI。
  • grpc.lb.rls.instance_uuid:個別要求負載感測用戶端執行個體的通用唯一 ID (UUID)。這個值本身沒有意義,但如果同一個 gRPC 管道中有多個執行個體,或有多個管道指向同一個目標,這個值就能用來區分要求負載感測用戶端執行個體。
storage.googleapis.com/client/grpc/lb/rls/cache_size Preview:要求負載感測快取的目前大小。 度量圖 By
  • grpc.target:WRR 使用的 gRPC 管道目標。
  • grpc.lb.rls.server_target:要求負載感測伺服器通訊的目標 URI。
  • grpc.lb.rls.instance_uuid:個別要求負載感測用戶端執行個體的 UUID。這個值本身沒有意義,但如果同一個 gRPC 管道中有多個執行個體,或有多個管道指向同一個目標,這個值就能用來區分要求負載感測用戶端執行個體。
storage.googleapis.com/client/grpc/lb/rls/default_target_picks Preview:傳送至預設目標的負載平衡器 (LB) 挑選數量。 計數器 {pick}
  • grpc.target:指出使用要求負載感測的 gRPC 管道目標。
  • grpc.lb.rls.server_target:要求負載感應伺服器通訊的目標 URI。
  • grpc.lb.rls.data_plane_target:要求負載感測用於轉送資料層流量的目標字串。這個值會由要求負載感測伺服器針對特定金鑰傳回,或在要求負載感測設定中設為預設目標。
  • grpc.lb.pick_result:負載平衡選擇的結果,例如 "complete"、"fail" 或 "drop"。
storage.googleapis.com/client/grpc/lb/rls/target_picks Preview:傳送至各要求負載感測目標的 LB 挑選數量。如果要求負載感應伺服器也傳回預設目標,則從快取傳送至該目標的 RPC 會計入這項指標,而非 grpc.rls.default_target_picks。 計數器 {pick}
  • grpc.target:使用要求負載感測的 gRPC 管道目標。
  • grpc.lb.rls.server_target:要通訊的要求負載感測伺服器目標 URI。
  • grpc.lb.rls.data_plane_target:要求負載感測用於轉送資料層流量的目標字串。這個值是由特定鍵的要求負載感應伺服器傳回,或是設定為要求負載感應設定中的預設目標。
  • grpc.lb.pick_result:LB 挑選結果,例如 "complete"、"fail" 或 "drop"。
storage.googleapis.com/client/grpc/lb/rls/failed_picks Preview。因要求負載感測要求失敗,或要求負載感測管道受到節流,而失敗的 LB 挑選數量。 計數器 {pick}
  • grpc.target:使用要求負載感測的 gRPC 管道目標。
  • grpc.lb.rls.server_target:要求負載感應伺服器通訊的目標 URI。

xDiscovery Service 用戶端指標

下列指標可讓您深入瞭解用戶端應用程式如何與 xDiscovery Service (xDS) 控制層互動,以探索及設定與後端服務的連線。xDS 指標可協助您追蹤服務要求延遲時間、監控設定更新,以及最佳化整體 xDS 效能。

只有直接連線才能使用下列指標。

完整指標 說明 樂器類型 單位 屬性
storage.googleapis.com/client/grpc/xds_client/connected Preview. 評估 xDS 用戶端是否具有可連線至 xDS 伺服器的 ADS 串流。針對特定伺服器,這個指標會在最初建立串流時設為 1。如果連線能力失敗,或 ADS 串流失敗但未顯示如 A57 所示的回應訊息,指標會設為 0。設為 0 後,當 ADS 串流收到第一個回應時,指標會重設為 1。這項指標僅適用於 C++ 適用的 Cloud 用戶端程式庫。 度量圖 {bool}
  • grpc.target:如果是用戶端,則表示使用 XdsClient 的 gRPC 管道目標。如果是伺服器,則會是字串 "#server"。
  • grpc.xds.server:xDS 伺服器的目標 URI,XdsClient 會與該伺服器通訊。
storage.googleapis.com/client/grpc/xds_client/resource_updates_invalid Preview。系統收到的資源數量,這些資源被視為無效。這項指標僅適用於 C++ 適用的 Cloud 用戶端程式庫。 計數器 {resource}
  • grpc.target:對於用戶端,表示使用 XdsClient 的 gRPC 管道目標。如果是伺服器,則為字串 "#server"。
  • grpc.xds.server:XdsClient 通訊的 xDS 伺服器目標 URI。
  • grpc.xds.resource_type:表示 xDS 資源類型,例如 "envoy.config.listener.v3.Listener"。
storage.googleapis.com/client/grpc/xds_client/resource_updates_valid Preview:系統收到的有效資源數量 (即使未變更)。這項指標僅適用於 C++ 適用的 Cloud 用戶端程式庫。 計數器 {resource}
  • grpc.target:如果是用戶端,則表示使用 XdsClient 的 gRPC 管道目標。如果是伺服器,則為字串 "#server"。
  • grpc.xds.server:XdsClient 通訊的 xDS 伺服器目標 URI。
  • grpc.xds.resource_type:表示 xDS 資源類型,例如 "envoy.config.listener.v3.Listener"。
storage.googleapis.com/client/grpc/xds_client/resources Preview。xDS 資源數量。這項指標僅適用於 C++ 適用的 Cloud 用戶端程式庫。 度量圖 {resource}
  • grpc.target:對用戶端而言,表示使用 XdsClient 的 gRPC 管道目標。如果是伺服器,則會是字串 "#server"。
  • grpc.xds.authority:xDS 授權單位。在導入 xdstp:// URI 表示法之前,如果 xDS API 中識別的非 xdstp 資源名稱,則值會是 "#old"。
  • grpc.xds.cache_state:表示 xDS 資源的快取狀態。
  • grpc.xds.resource_type 表示 xDS 資源類型,例如 "envoy.config.listener.v3.Listener"。
storage.googleapis.com/client/grpc/xds_client/server_failure Preview。不再正常運作的 xDS 伺服器數量,這些伺服器可能已無法使用、過載,或提供不正確或無效的設定資料。這項指標僅適用於 C++ 適用的 Cloud 用戶端程式庫。 計數器 {failure}
  • grpc.target:xDS 伺服器的目標 URI,XdsClient 會與該伺服器通訊。
  • grpc.xds.server:如果是用戶端,這代表使用 XdsClient 的 gRPC 管道目標。如果是伺服器,則為字串 "#server"。

如要進一步瞭解 xDS 用戶端指標,請參閱 GitHub 的 xDS 架構全域負載平衡說明文件。

停用用戶端指標

您可以視需要停用用戶端指標。

Java

public GrpcStorageOptions.Builder setEnableGrpcClientMetrics(false enableGrpcClientMetrics)

詳情請參閱「適用於 Java 類別的 Cloud 用戶端程式庫 GrpcStorageOptions.Builder 方法,用於 gRPC 用戶端指標」。

C++

如要使用 C++ 適用的 Cloud 用戶端程式庫,選擇不採用 gRPC API 的用戶端指標,請參閱「Struct EnableGrpcMetricsOption」。

如果您使用 Bazel 建構應用程式,並想停用用戶端指標,請在應用程式的建構檔案中,將 enable_grpc_metrics 選項設為 false。

後續步驟