使用 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. 设置发出客户端指标所需的角色和权限

所需的角色

如需设置向 Cloud Monitoring 发送 gRPC 客户端指标所需的权限,请向 gRPC 客户端使用的服务账号授予 Monitoring Metric Writer (roles/monitoring.metricWriter) IAM 角色。

此预定义角色包含将 gRPC 客户端指标发送到 Cloud Monitoring 所需的权限。如需查看所需的确切权限,请参阅所需权限部分:

所需权限

  • monitoring.timeSeries.create

您也可以使用其他自定义角色预定义角色来获取这些权限。如需详细了解“监控指标写入器”角色,请参阅 有关 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 或按指标名称搜索要应用的指标,然后点击应用。如需添加多个指标,请点击添加查询

    Cloud Storage 会将这些指标应用于您的项目。您可以使用以下下拉菜单过滤或汇总指标:

    • 如需根据指定条件选择并查看部分数据,请使用过滤下拉菜单。

    • 如需将多个数据点合并为一个值,并查看指标的汇总视图,请使用汇总下拉菜单。

    请让应用运行至少 1 分钟,然后再检查是否有任何已发布的指标。

如需查看您使用信息中心向项目添加的指标,请参阅信息中心概览

指标说明

以下部分简要介绍了可用于监控 gRPC 客户端性能的 Cloud Storage 客户端指标。

客户端每次尝试指标

以下指标会收集有关客户端尝试与服务器通信的各次尝试的性能数据。客户端每次尝试指标可帮助您衡量重试行为、瓶颈问题,并优化客户端和服务器之间的通信。

完整指标 说明 付款方式类型 单位 属性
storage.googleapis.com/client/grpc/client/attempt/started Preview。已启动的 RPC 尝试总数,包括尚未完成的 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 服务器状态代码,例如 OKCANCELLEDDEADLINE_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 服务器状态代码,例如 OKCANCELLEDDEADLINE_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 服务器状态代码,例如 OKCANCELLEDDEADLINE_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 服务器状态代码,例如 OKCANCELLEDDEADLINE_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:单个请求负载感知客户端实例的通用唯一标识符 (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 服务客户端指标

以下指标可帮助您深入了解客户端应用如何与 xDiscovery Service (xDS) 控制平面交互,以发现和配置与后端服务的连接。xDS 指标可帮助您跟踪服务请求延迟时间、监控配置更新,以及优化整体 xDS 性能。

以下指标仅适用于直接连接。

完整指标 说明 付款方式类型 单位 属性
storage.googleapis.com/client/grpc/xds_client/connected Preview。衡量 xDS 客户端是否有可用的 ADS 流向 xDS 服务器。对于给定服务器,此指标在最初创建数据流时会设置为 1。如果发生连接故障,或者 ADS 数据流失败且未看到 A57 中的响应消息,则该指标会设为 0。设置为 0 后,当 ADS 数据流收到第一个响应时,该指标将重置为 1。此指标仅适用于 C++ 版 Cloud 客户端库。 仪表盘 {bool}
  • grpc.target:对于客户端,表示 XdsClient 所使用的 gRPC 通道的目标。对于服务器,将为字符串 "#server"
  • grpc.xds.serverXdsClient 与之通信的 xDS 服务器的目标 URI。
storage.googleapis.com/client/grpc/xds_client/resource_updates_invalid Preview。系统判定为无效的收到资源的数量。此指标仅适用于 C++ 版 Cloud 客户端库。 计数器 {resource}
  • grpc.target:对于客户端,表示使用 XdsClient 的 gRPC 通道的目标。对于服务器,将为字符串 "#server"
  • grpc.xds.serverXdsClient 与之通信的 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.serverXdsClient 与之通信的 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.targetXdsClient 与之通信的 xDS 服务器的目标 URI。
  • 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 停用客户端指标,请参阅结构体 EnableGrpcMetricsOption

后续步骤