使用 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 所需的權限,請將 Monitoring 指標寫入者 (roles/monitoring.metricWriter) IAM 角色授予 gRPC 用戶端使用的服務帳戶。

這個預先定義的角色具備必要權限,可將 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. 在「Filter by resource or metric name」(依資源或指標名稱篩選) 搜尋列中,輸入 storage.googleapis.com/Client,或依指標名稱搜尋要套用的指標,然後按一下「Apply」(套用)。如要新增多個指標,請按一下「Add query」(新增查詢)。

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

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

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

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

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

指標說明

下列各節概述 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:XdsClient 通訊的 xDS 伺服器目標 URI。
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:與 XdsClient 通訊的 xDS 伺服器目標 URI。
  • grpc.xds.server:如果是用戶端,這代表使用 XdsClient 的 gRPC 管道目標。如果是伺服器,則為字串 "#server"。

如要進一步瞭解 xDS 用戶端指標,請參閱 GitHub 中的「xDS-Based global load balancing」(xDS 型全域負載平衡) 說明文件。

停用用戶端指標

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

Java

public GrpcStorageOptions.Builder setEnableGrpcClientMetrics(false enableGrpcClientMetrics)

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

C++

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

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

後續步驟