Usar métricas del lado del cliente de gRPC

En esta página se describe cómo emitir métricas del lado del cliente de gRPC a Cloud Monitoring cuando se usa gRPC para interactuar con Cloud Storage mediante una de las siguientes interfaces compatibles:

Las métricas del lado del cliente se pueden usar para monitorizar el rendimiento de la aplicación cliente que interactúa con Cloud Storage mediante gRPC. La métrica del lado del cliente es diferente de las métricas del lado del servidor, que proporcionan información valiosa sobre el rendimiento de Cloud Storage desde la perspectiva del lado del servidor.

Cómo funciona

Puedes habilitar la emisión de métricas del lado del cliente a Cloud Monitoring cuando uses gRPC para interactuar con Cloud Storage mediante una de las interfaces admitidas. Puede ver las métricas del lado del cliente con el Explorador de métricas para monitorizar y optimizar las interacciones entre Cloud Storage y el cliente de gRPC, gestionar el uso y solucionar problemas técnicos y cuellos de botella del rendimiento.

Precios

Las métricas del lado del cliente de Cloud Storage no son facturables, lo que significa que puede emitir, almacenar y acceder a ellas sin incurrir en cargos de Cloud Monitoring. Para obtener más información sobre los precios, consulta la página Precios de Google Cloud Observability.

Antes de empezar

Para usar las métricas del lado del cliente, primero debes completar los siguientes pasos:

  1. Verifica que la biblioteca de cliente o el conector de Cloud Storage que quieras usar sea compatible con gRPC. Las siguientes bibliotecas de cliente y conectores de Cloud Storage admiten gRPC:

  2. Configura la autenticación.

  3. Habilita la API Cloud Monitoring.

  4. Habilita la API de Cloud Storage.

    Ir a la API de Cloud Storage

  5. Defina los roles y permisos necesarios para emitir métricas del lado del cliente.

Roles obligatorios

Para definir los permisos que necesitas para emitir métricas del lado del cliente de gRPC a Cloud Monitoring, asigna el rol de gestión de identidades y accesos Escritor de métricas de Monitoring (roles/monitoring.metricWriter) a la cuenta de servicio que usa el cliente de gRPC.

Este rol predefinido contiene los permisos necesarios para emitir métricas del lado del cliente de gRPC a Cloud Monitoring. Para ver los permisos exactos que se necesitan, consulta la sección Permisos obligatorios:

Permisos obligatorios

  • monitoring.timeSeries.create

Este permiso de gestión de identidades y accesos está incluido en los siguientes roles predefinidos de Cloud Storage:

También puedes obtener estos permisos con otros roles personalizados o roles predefinidos. Para obtener más información sobre el rol Escritor de métricas de Monitoring, consulta la documentación de gestión de identidades y accesos sobre roles/monitoring.metricWriter.

Cuestiones importantes

Ver métricas en el explorador de métricas

Sigue estas instrucciones para ver las métricas del lado del cliente de gRPC de Cloud Storage en el explorador de métricas.

  1. En la Google Cloud consola, ve a la página Explorador de métricas.

    Ir a Explorador de métricas

  2. Selecciona el proyecto cuyas métricas quieras ver.

  3. En el menú desplegable Métrica, haga clic en Seleccionar una métrica.

  4. En la barra de búsqueda Filtrar por nombre de recurso o métrica, introduce storage.googleapis.com/Client o busca la métrica que quieras aplicar por nombre de métrica y haz clic en Aplicar. Para añadir más de una métrica, haga clic en Añadir consulta.

    Cloud Storage aplica las métricas a tu proyecto. Puede filtrar o agregar sus métricas mediante los siguientes menús desplegables:

    • Para seleccionar y ver un subconjunto de sus datos en función de los criterios especificados, utilice el menú desplegable Filtrar.

    • Para combinar varios puntos de datos en un solo valor y ver un resumen de las métricas, usa el menú desplegable Agregación.

    Deje que su aplicación se ejecute durante al menos un minuto antes de comprobar si se han publicado métricas.

Para ver las métricas que has añadido a tu proyecto mediante un panel de control, consulta el artículo Descripción general de los paneles de control.

Descripciones de las métricas

En las siguientes secciones se describen las métricas del lado del cliente de Cloud Storage que se pueden usar para monitorizar el rendimiento del cliente de gRPC.

Métricas por intento del cliente

Las siguientes métricas recogen datos de rendimiento sobre los intentos individuales que hace un cliente para comunicarse con un servidor. Las métricas por intento del cliente pueden ayudarte a medir el comportamiento de reintento y los cuellos de botella, así como a optimizar la comunicación entre un cliente y un servidor.

Métrica completa Descripción Tipo de instrumento Unidad Atributos
storage.googleapis.com/client/grpc/client/attempt/started Preview. Número total de intentos de RPC iniciados, incluidos los que no se han completado. Encimera {attempt}
  • grpc.method: el nombre completo del método gRPC, incluidos el paquete, el servicio y el método.
  • grpc.target: URI de destino canonicalizado que se usa cuando se crea un canal gRPC.
storage.googleapis.com/client/grpc/client/attempt/duration Preview. El tiempo total que se tarda en completar un intento de RPC, incluido el tiempo que se tarda en elegir un subcanal. Histograma s
  • grpc.method: nombre completo del método gRPC, incluido el paquete, el servicio y el método.
  • grpc.target: URI de destino canonicalizado que se usa al crear un canal gRPC.
  • grpc.status: código de estado del servidor gRPC recibido, como OK, CANCELLED o DEADLINE_EXCEEDED.
  • grpc.lb.locality: la localidad a la que se envía el tráfico. Se le asignará el valor del atributo resolver que se haya transferido desde la política weighted_target o una cadena vacía si no se ha definido el atributo resolver.
storage.googleapis.com/client/grpc/client/attempt/sent_total_compressed_message_size Preview. El total de bytes comprimidos, pero no cifrados, que se envían en todos los mensajes de solicitud, excepto los metadatos por intento de RPC. No incluye bytes de gRPC ni de encuadre de transporte. Histograma By
  • grpc.method: nombre completo del método gRPC, incluido el paquete, el servicio y el método.
  • grpc.target: URI de destino canonicalizado que se usa al crear un canal gRPC.
  • grpc.status: código de estado del servidor gRPC recibido, como OK, CANCELLED o DEADLINE_EXCEEDED.
  • grpc.lb.locality: la localidad a la que se envía el tráfico. Se le asignará el atributo de resolución transferido desde la política weighted_target o la cadena vacía si no se ha definido el atributo de resolución.
storage.googleapis.com/client/grpc/client/attempt/rcvd_total_compressed_message_size Preview. El total de bytes comprimidos, pero no cifrados, que se reciben en todos los mensajes de respuesta, excepto los metadatos por intento de RPC. No incluye bytes de gRPC ni de encuadre de transporte. Histograma By
  • grpc.method: nombre completo del método gRPC, incluido el paquete, el servicio y el método.
  • grpc.target: URI de destino canonicalizado que se usa al crear un canal gRPC.
  • grpc.status: código de estado del servidor gRPC recibido, como OK, CANCELLED o DEADLINE_EXCEEDED.
  • grpc.lb.locality: la localidad a la que se envía el tráfico. Se le asignará el atributo de resolución transferido desde la política weighted_target o la cadena vacía si no se ha definido el atributo de resolución.

Para obtener más información sobre los instrumentos por intento del cliente, consulta la documentación de métricas de OpenTelemetry en GitHub.

Métricas por llamada del cliente

Las siguientes métricas ofrecen una vista agregada de todo el ciclo de vida de una llamada de cliente a un servidor. Las métricas por llamada del cliente proporcionan datos generales sobre las llamadas de los clientes, métricas de seguimiento para comprender los patrones de llamadas y le ayudan a identificar las frecuencias de los errores.

Métrica completa Descripción Tipo de instrumento Unidad Atributos
storage.googleapis.com/client/grpc/client/call/duration Preview. Mide el tiempo total que tarda la biblioteca gRPC en completar una RPC desde la perspectiva de la aplicación. Histograma s
  • grpc.method: nombre completo del método gRPC, incluido el paquete, el servicio y el método.
  • grpc.target: URI de destino canonicalizado que se usa al crear un canal gRPC.
  • grpc.status: se ha recibido un código de estado del servidor gRPC, como OK, CANCELLED o DEADLINE_EXCEEDED.

Para obtener más información sobre los instrumentos por llamada del cliente, consulta la documentación de métricas de OpenTelemetry en GitHub.

Solicitar métricas de detección de carga

Las siguientes métricas proporcionan información valiosa sobre la eficacia del uso de la detección de carga de solicitudes por parte de tu aplicación cliente. Las métricas de detección de carga de solicitudes pueden ayudarte a equilibrar las cargas del servidor, optimizar la utilización de los recursos y mejorar los tiempos de respuesta de los clientes. Las siguientes métricas solo están disponibles con conectividad directa.

Métrica completa Descripción Tipo de instrumento Unidad Atributos
storage.googleapis.com/client/grpc/lb/rls/cache_entries Preview. Número de entradas en la caché de detección de carga de la solicitud. Indicador {entry}
  • grpc.target: indica el destino del canal gRPC en el que se usa WRR.
  • grpc.lb.rls.server_target: el URI de destino con el que se comunica el servidor de detección de carga de solicitudes.
  • grpc.lb.rls.instance_uuid: identificador único universal (UUID) de una instancia de cliente de detección de carga de solicitudes. El valor no es significativo por sí mismo, pero es útil para diferenciar entre instancias de cliente de detección de carga de solicitudes en los casos en los que hay varias instancias en el mismo canal de gRPC o en los que hay varios canales al mismo destino.
storage.googleapis.com/client/grpc/lb/rls/cache_size Preview. Tamaño actual de la caché de detección de carga de solicitudes. Indicador By
  • grpc.target: el destino del canal gRPC en el que se usa WRR.
  • grpc.lb.rls.server_target: el URI de destino con el que se comunica el servidor de detección de carga de solicitudes.
  • grpc.lb.rls.instance_uuid: UUID de una instancia de cliente de detección de carga de solicitudes. El valor no es significativo por sí mismo, pero es útil para diferenciar entre instancias de cliente de detección de carga de solicitudes en los casos en los que hay varias instancias en el mismo canal de gRPC o en los que hay varios canales al mismo destino.
storage.googleapis.com/client/grpc/lb/rls/default_target_picks Preview. Número de selecciones de balanceador de carga (LB) enviadas al destino predeterminado. Encimera {pick}
  • grpc.target: indica el destino del canal gRPC en el que se usa la detección de carga de solicitudes.
  • grpc.lb.rls.server_target: el URI de destino del servidor de detección de carga de solicitudes con el que se va a comunicar.
  • grpc.lb.rls.data_plane_target: cadena de destino que usa la detección de carga de solicitudes para enrutar el tráfico del plano de datos. El valor lo devuelve el servidor de detección de carga de solicitudes para una clave concreta o se configura como el objetivo predeterminado en la configuración de detección de carga de solicitudes.
  • grpc.lb.pick_result:el resultado de una selección de balanceo de carga, como "complete", "fail" o "drop".
storage.googleapis.com/client/grpc/lb/rls/target_picks Preview. Número de selecciones de balanceo de carga enviadas a cada destino de detección de carga de solicitudes. Si el servidor de detección de carga de solicitudes también devuelve el destino predeterminado, las llamadas a procedimiento remoto enviadas a ese destino desde la caché se contabilizarán en esta métrica, no en grpc.rls.default_target_picks. Encimera {pick}
  • grpc.target: el destino del canal gRPC en el que se usa la detección de carga de solicitudes.
  • grpc.lb.rls.server_target: el URI de destino del servidor de detección de carga de solicitudes con el que se va a comunicar.
  • grpc.lb.rls.data_plane_target: una cadena de destino que usa la detección de carga de solicitudes para enrutar el tráfico del plano de datos. El valor lo devuelve el servidor de detección de carga de solicitudes para una clave concreta o se configura como el objetivo predeterminado en la configuración de detección de carga de solicitudes.
  • grpc.lb.pick_result: el resultado de una selección de balanceo de carga, como "complete", "fail" o "drop".
storage.googleapis.com/client/grpc/lb/rls/failed_picks Preview. Número de selecciones de balanceo de carga que han fallado debido a lo siguiente: una solicitud de detección de carga fallida o la limitación del canal de detección de carga. Encimera {pick}
  • grpc.target: el destino del canal gRPC en el que se usa la detección de carga de solicitudes.
  • grpc.lb.rls.server_target: el URI de destino del servidor de detección de carga de solicitudes con el que se va a comunicar.

Métricas de cliente del servicio xDiscovery

Las siguientes métricas proporcionan información valiosa sobre cómo interactúa tu aplicación cliente con el plano de control del servicio xDiscovery (xDS) para descubrir y configurar conexiones con servicios backend. Las métricas de xDS pueden ayudarte a monitorizar la latencia de las solicitudes de servicio, supervisar las actualizaciones de configuración y optimizar el rendimiento general de xDS.

Las siguientes métricas solo están disponibles con la conectividad directa.

Métrica completa Descripción Tipo de instrumento Unidad Atributos
storage.googleapis.com/client/grpc/xds_client/connected Preview. Mide si el cliente de xDS tiene o no un flujo de ADS que funcione en el servidor de xDS. En un servidor concreto, esta métrica se define como 1 cuando se crea la emisión. Si se produce un fallo de conectividad o si el flujo de ADS falla sin recibir un mensaje de respuesta según A57, la métrica se define como 0. Una vez que se haya definido como 0, la métrica se restablecerá a 1 cuando se reciba la primera respuesta en un flujo de ADS. Esta métrica solo está disponible para las bibliotecas de cliente de Cloud para C++. Indicador {bool}
  • grpc.target: en el caso de los clientes, indica el destino del canal gRPC en el que se usa XdsClient. En el caso de los servidores, será la cadena "#server".
  • grpc.xds.server: el URI de destino del servidor xDS con el que se comunica XdsClient.
storage.googleapis.com/client/grpc/xds_client/resource_updates_invalid Preview. Número de recursos recibidos que se han considerado no válidos. Esta métrica solo está disponible para las bibliotecas de cliente de Cloud para C++. Encimera {resource}
  • grpc.target: en el caso de los clientes, indica el destino del canal gRPC en el que se usa XdsClient. En el caso de los servidores, será la cadena "#server".
  • grpc.xds.server: el URI de destino del servidor xDS con el que se comunica XdsClient.
  • grpc.xds.resource_type: indica un tipo de recurso xDS, como "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/resource_updates_valid Preview. Número de recursos recibidos que se han considerado válidos, aunque no hayan cambiado. Esta métrica solo está disponible para las bibliotecas de cliente de Cloud para C++. Encimera {resource}
  • grpc.target: en el caso de los clientes, indica el destino del canal gRPC en el que se usa XdsClient. En el caso de los servidores, será la cadena "#server".
  • grpc.xds.server: el URI de destino del servidor xDS con el que se comunica el XdsClient.
  • grpc.xds.resource_type: indica un tipo de recurso xDS, como "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/resources Preview. Número de recursos xDS. Esta métrica solo está disponible para las bibliotecas de cliente de Cloud para C++. Indicador {resource}
  • grpc.target: en el caso de los clientes, indica el destino del canal gRPC en el que se usa XdsClient. En el caso de los servidores, será la cadena "#server".
  • grpc.xds.authority: la autoridad de xDS. El valor será "#old" para los nombres de recursos que no sean xdstp y que se hayan identificado en la API xDS antes de la introducción de la representación de URI xdstp://.
  • grpc.xds.cache_state: indica el estado de la caché de un recurso xDS.
  • grpc.xds.resource_type indica un tipo de recurso xDS, como "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/server_failure Preview. Número de servidores xDS que ya no funcionan correctamente y que no están disponibles, están sobrecargados o proporcionan datos de configuración incorrectos o no válidos. Esta métrica solo está disponible para las bibliotecas de cliente de Cloud para C++. Encimera {failure}
  • grpc.target: el URI de destino del servidor xDS con el que se comunica XdsClient.
  • grpc.xds.server: en el caso de los clientes, indica el destino del canal gRPC en el que se usa XdsClient. En el caso de los servidores, es la cadena "#server".

Para obtener más información sobre las métricas de cliente de xDS, consulta la documentación sobre el balanceo de carga global basado en xDS en GitHub.

Inhabilitar las métricas del lado del cliente

Si es necesario, puede inhabilitar las métricas del lado del cliente.

Java

public GrpcStorageOptions.Builder setEnableGrpcClientMetrics(false enableGrpcClientMetrics)

Para obtener más información, consulta el método GrpcStorageOptions.Builder de la clase de bibliotecas de cliente de Cloud para Java para métricas de cliente de gRPC.

C++

Para inhabilitar las métricas del lado del cliente de la API gRPC mediante las bibliotecas de cliente de Cloud para C++, consulta Struct EnableGrpcMetricsOption.

Si usas Bazel para compilar tu aplicación y quieres inhabilitar las métricas del lado del cliente, asigna el valor false a la opción enable_grpc_metrics en el archivo de compilación de tu aplicación.

Siguientes pasos