Usa las métricas del cliente de gRPC

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

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

Cómo funciona

Puedes habilitar la emisión de métricas del cliente a Cloud Monitoring cuando usas gRPC para interactuar con Cloud Storage con una de las interfaces compatibles.

Precios

Las métricas del cliente de Cloud Storage no tienen cargo, lo que significa que puedes emitir, almacenar y acceder a las métricas del cliente de Cloud Storage sin incurrir en cargos de Cloud Monitoring. Para obtener más información sobre los precios, consulta Precios de Google Cloud Observability.

Antes de comenzar

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

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

  2. Configura la autenticación.

  3. Habilita la API de Cloud Monitoring.

  4. Habilita la API de Cloud Storage.

    Ir a la API de Cloud Storage

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

Roles obligatorios

Para configurar los permisos que necesitas para emitir métricas del cliente de gRPC a Cloud Monitoring, otorga el rol de IAM de Escritor de métricas de Monitoring (roles/monitoring.metricWriter) en la cuenta de servicio que usa el cliente de gRPC.

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

Permisos necesarios

  • monitoring.timeSeries.create

Este permiso de IAM se incluye 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 de escritor de métricas de Monitoring, consulta la documentación de IAM sobre roles/monitoring.metricWriter.

Descripciones de las métricas

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

Métricas por intento del cliente

Las siguientes métricas recopilan datos de rendimiento sobre los intentos individuales que realiza un cliente para comunicarse con un servidor. Las métricas por intento del cliente pueden ayudarte a medir el comportamiento de los reintentos, los cuellos de botella y 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: Es la cantidad total de intentos de RPC iniciados, incluidos los que no se completaron. Contador {attempt}
  • grpc.method: Es el nombre completo del método de gRPC, incluidos el paquete, el servicio y el método.
  • grpc.target: Es el URI de destino canónico que se usa cuando se crea el canal de gRPC.
storage.googleapis.com/client/grpc/client/attempt/duration Preview: Es el tiempo de extremo a extremo que se toma para completar un intento de RPC, incluido el tiempo que lleva elegir un subcanal. Histograma s
  • grpc.method: Es el nombre completo del método de gRPC, incluidos el paquete, el servicio y el método.
  • grpc.target: Es el URI de destino canónico que se usa cuando se crea el canal de gRPC.
  • grpc.status: Es el código de estado del servidor de gRPC recibido, como OK, CANCELLED o DEADLINE_EXCEEDED.
  • grpc.lb.locality: Es la localidad a la que se envía el tráfico. Se establecerá en el atributo resolver que se pasa desde la política weighted_target o en la cadena vacía si no se establece el atributo resolver.
storage.googleapis.com/client/grpc/client/attempt/sent_total_compressed_message_size Preview: Es el total de bytes, comprimidos, pero no encriptados, que se envían en todos los mensajes de solicitud, excepto los metadatos, por intento de RPC. Esto no incluye los bytes de enmarcado de transporte ni de gRPC. Histograma By
  • grpc.method: Es el nombre completo del método de gRPC, incluidos el paquete, el servicio y el método.
  • grpc.target: Es el URI de destino canónico que se usa cuando se crea el canal de gRPC.
  • grpc.status: Es el código de estado del servidor de gRPC recibido, como OK, CANCELLED o DEADLINE_EXCEEDED.
  • grpc.lb.locality: Es la localidad a la que se envía el tráfico. Se establecerá en el atributo de resolución que se pasa desde la política weighted_target o la cadena vacía si no se establece el atributo de resolución.
storage.googleapis.com/client/grpc/client/attempt/rcvd_total_compressed_message_size Preview: Es el total de bytes, comprimidos, pero no encriptados, que se reciben en todos los mensajes de respuesta, excepto los metadatos por intento de RPC. Esto no incluye los bytes de enmarcado de transporte ni de gRPC. Histograma By
  • grpc.method: Es el nombre completo del método de gRPC, incluidos el paquete, el servicio y el método.
  • grpc.target: Es el URI de destino canónico que se usa cuando se crea el canal de gRPC.
  • grpc.status: Es el código de estado del servidor de gRPC recibido, como OK, CANCELLED o DEADLINE_EXCEEDED.
  • grpc.lb.locality: Es la localidad a la que se envía el tráfico. Se establecerá en el atributo de resolución que se pasa desde la política weighted_target o la cadena vacía si el atributo de resolución no está establecido.

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 proporcionan 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 de alto nivel sobre las llamadas de los clientes, proporcionan métricas de seguimiento para comprender los patrones de llamadas y te 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 de extremo a extremo que tarda la biblioteca de gRPC en completar una RPC desde la perspectiva de la aplicación. Histograma s
  • grpc.method: Es el nombre completo del método de gRPC, incluidos el paquete, el servicio y el método.
  • grpc.target: Es el URI de destino canónico que se usa cuando se crea el canal de gRPC.
  • grpc.status: Es el código de estado del servidor de gRPC recibido, 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.

Métricas de detección de carga de solicitudes

Las siguientes métricas proporcionan estadísticas 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 balancear las cargas del servidor, optimizar el uso de recursos y mejorar los tiempos de respuesta de los clientes. 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/lb/rls/cache_entries Preview: Es la cantidad de entradas en la caché de detección de carga de solicitudes. Indicador {entry}
  • grpc.target: Indica el destino del canal de gRPC en el que se usa el WRR.
  • grpc.lb.rls.server_target: Es el URI de destino con el que se comunica el servidor de detección de carga de solicitudes.
  • grpc.lb.rls.instance_uuid: Es un identificador único universal (UUID) para una instancia de cliente de detección de carga de solicitudes individual. El valor no es significativo por sí mismo, pero es útil para diferenciar entre las instancias de cliente de detección de carga de solicitudes en los casos en que hay varias instancias en el mismo canal de gRPC o en los que hay varios canales para el mismo destino.
storage.googleapis.com/client/grpc/lb/rls/cache_size Preview: Es el tamaño actual de la caché de detección de carga de solicitudes. Indicador By
  • grpc.target: Es el destino del canal de gRPC en el que se usa el WRR.
  • grpc.lb.rls.server_target: Es el URI de destino con el que se comunica el servidor de detección de carga de la solicitud.
  • grpc.lb.rls.instance_uuid: Es un UUID para una instancia de cliente de detección de carga de solicitudes individual. El valor no es significativo por sí mismo, pero es útil para diferenciar entre las instancias de cliente de detección de carga de solicitudes en los casos en que hay varias instancias en el mismo canal de gRPC o en los que hay varios canales para el mismo destino.
storage.googleapis.com/client/grpc/lb/rls/default_target_picks Preview: Es la cantidad de selecciones del balanceador de cargas (LB) que se enviaron al destino predeterminado. Contador {pick}
  • grpc.target: Indica el destino del canal de gRPC en el que se usa la detección de carga de solicitudes.
  • grpc.lb.rls.server_target: Es el URI de destino del servidor de detección de carga de solicitudes con el que se debe establecer la comunicación.
  • grpc.lb.rls.data_plane_target: Es 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 en particular o se configura como el objetivo predeterminado en la configuración de detección de carga de solicitudes.
  • grpc.lb.pick_result:Es el resultado de una selección de LB, como "complete", "fail" o "drop".
storage.googleapis.com/client/grpc/lb/rls/target_picks Preview: Es la cantidad de selecciones de LB 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 RPC enviadas a ese destino desde la caché se cuentan en esta métrica, no en grpc.rls.default_target_picks. Contador {pick}
  • grpc.target: Es el destino del canal de gRPC en el que se usa la detección de carga de solicitudes.
  • grpc.lb.rls.server_target: Es el URI de destino del servidor de detección de carga de solicitudes con el que se debe establecer la comunicación.
  • grpc.lb.rls.data_plane_target: Es una cadena de destino que usa la detección de carga de solicitudes para enrutar el tráfico del plano de datos. El servidor de detección de carga de solicitudes devuelve el valor para una clave en particular o se configura como el objetivo predeterminado en la configuración de detección de carga de solicitudes.
  • grpc.lb.pick_result: Es el resultado de una selección de LB, como "complete", "fail" o "drop".
storage.googleapis.com/client/grpc/lb/rls/failed_picks Preview: Es la cantidad de selecciones de LB que fallaron debido a una solicitud de detección de carga de solicitud fallida o a que se limitó el canal de detección de carga de solicitud. Contador {pick}
  • grpc.target: Es el destino del canal de gRPC en el que se usa la detección de carga de solicitudes.
  • grpc.lb.rls.server_target: Es el URI de destino del servidor de detección de carga de solicitudes con el que se debe establecer la comunicación.

Métricas del cliente del servicio xDiscovery

Las siguientes métricas proporcionan estadísticas sobre cómo interactúa tu aplicación cliente con el plano de control del servicio xDiscovery (xDS) para descubrir y configurar conexiones a servicios de backend. Las métricas de xDS pueden ayudarte a hacer un seguimiento de 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 una transmisión de ADS en funcionamiento al servidor de xDS. Para un servidor determinado, esta métrica se establece en 1 cuando se crea la transmisión inicialmente. Si hay una falla de conectividad o cuando falla la transmisión de ADS sin ver un mensaje de respuesta según A57, la métrica se establece en 0. Una vez que se establezca en 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 cliente de Cloud para C++. Indicador {bool}
  • grpc.target: En el caso de los clientes, indica el destino del canal de gRPC en el que se usa XdsClient. En el caso de los servidores, será la cadena "#server".
  • grpc.xds.server: Es el URI de destino del servidor de xDS con el que se comunica el XdsClient.
storage.googleapis.com/client/grpc/xds_client/resource_updates_invalid Preview: Es la cantidad de recursos recibidos que se consideraron no válidos. Esta métrica solo está disponible para las bibliotecas cliente de Cloud para C++. Contador {resource}
  • grpc.target: En el caso de los clientes, indica el destino del canal de gRPC en el que se usa XdsClient. En el caso de los servidores, será la cadena "#server".
  • grpc.xds.server: Es el URI de destino del servidor de xDS con el que se comunica XdsClient.
  • grpc.xds.resource_type: Indica un tipo de recurso de xDS, como "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/resource_updates_valid Preview: Es la cantidad de recursos recibidos que se consideraron válidos, incluso si no se modificaron. Esta métrica solo está disponible para las bibliotecas cliente de Cloud para C++. Contador {resource}
  • grpc.target: En el caso de los clientes, indica el destino del canal de gRPC en el que se usa XdsClient. En el caso de los servidores, será la cadena "#server".
  • grpc.xds.server: Es el URI de destino del servidor de xDS con el que se comunica el XdsClient.
  • grpc.xds.resource_type: Indica un tipo de recurso de xDS, como "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/resources Preview: Es la cantidad de recursos de xDS. Esta métrica solo está disponible para las bibliotecas cliente de Cloud para C++. Indicador {resource}
  • grpc.target: Para los clientes, indica el destino del canal de gRPC en el que se usa XdsClient. En el caso de los servidores, será la cadena "#server".
  • grpc.xds.authority: Es la autoridad de xDS. El valor será "#old" para los nombres de recursos que no sean xdstp y que se identificaron en la API de xDS, antes de la introducción de la representación de URI de xdstp://.
  • grpc.xds.cache_state: Indica el estado de la caché de un recurso de xDS.
  • grpc.xds.resource_type indica un tipo de recurso de xDS, como "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/server_failure Preview: Es la cantidad de servidores de 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 cliente de Cloud para C++. Contador {failure}
  • grpc.target: Es el URI de destino del servidor de xDS con el que se comunica XdsClient.
  • grpc.xds.server: En el caso de los clientes, indica el destino del canal de gRPC en el que se usa el XdsClient. En el caso de los servidores, esta es la cadena "#server".

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

Inhabilita las métricas del cliente

Puedes inhabilitar las métricas del cliente si es necesario.

Java

public GrpcStorageOptions.Builder setEnableGrpcClientMetrics(false enableGrpcClientMetrics)

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

C++

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

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