Use métricas do lado do cliente do gRPC

Esta página descreve como emitir métricas do lado do cliente gRPC para o Cloud Monitoring quando usa o gRPC para interagir com o Cloud Storage através de uma das seguintes interfaces suportadas:

As métricas do lado do cliente podem ser usadas para monitorizar o desempenho da aplicação cliente que interage com o Cloud Storage através do gRPC. A métrica do lado do cliente difere das métricas do lado do servidor, que fornecem estatísticas sobre o desempenho do Cloud Storage na perspetiva do lado do servidor.

Como funciona

Pode optar por emitir métricas do lado do cliente para o Cloud Monitoring quando usar o gRPC para interagir com o Cloud Storage através de uma das interfaces suportadas. Pode ver as métricas do lado do cliente através do Explorador de métricas para ajudar a monitorizar e otimizar as interações entre o Cloud Storage e o cliente gRPC, gerir a utilização e resolver problemas técnicos e gargalos de desempenho.

Preços

As métricas do lado do cliente do Cloud Storage não são cobradas, o que significa que pode emitir, armazenar e aceder a métricas do lado do cliente do Cloud Storage sem incorrer em custos do Cloud Monitoring. Para mais informações sobre os preços, consulte os preços do Google Cloud Observability.

Antes de começar

Para usar métricas do lado do cliente, tem de concluir primeiro os seguintes passos:

  1. Verifique se a biblioteca ou o conetor do cliente do Cloud Storage que quer usar suporta gRPC. As seguintes bibliotecas cliente e conetores do Cloud Storage suportam gRPC:

  2. Configure a autenticação.

  3. Ative a Cloud Monitoring API.

  4. Ative a API Cloud Storage.

    Aceda à API Cloud Storage

  5. Defina as funções e as autorizações necessárias para emitir métricas do lado do cliente.

Funções necessárias

Para definir as autorizações necessárias para emitir métricas do lado do cliente gRPC para o Cloud Monitoring, conceda a função de IAM Monitoring Metric Writer (roles/monitoring.metricWriter) na conta de serviço usada pelo cliente gRPC.

Esta função predefinida contém as autorizações necessárias para emitir métricas gRPC do lado do cliente para o Cloud Monitoring. Para ver as autorizações exatas necessárias, consulte a secção Autorizações necessárias:

Autorizações necessárias

  • monitoring.timeSeries.create

Esta autorização de IAM está incluída nas seguintes funções predefinidas do Cloud Storage:

Também pode conseguir estas autorizações com outras funções personalizadas ou funções predefinidas. Para mais informações sobre a função de escritor de métricas do Monitoring, consulte a documentação do IAM sobre roles/monitoring.metricWriter.

Considerações

Veja métricas no explorador de métricas

Siga estas instruções para ver as métricas do lado do cliente gRPC do Cloud Storage no explorador de métricas.

  1. Na Google Cloud consola, aceda à página Explorador de métricas.

    Aceder ao Explorador de métricas

  2. Selecione o projeto para o qual quer ver as métricas.

  3. No menu pendente Métrica, clique em Selecionar uma métrica.

  4. Na barra de pesquisa Filtrar por nome do recurso ou da métrica, introduza storage.googleapis.com/Client ou pesquise a métrica que quer aplicar por nome da métrica e clique em Aplicar. Para adicionar mais do que uma métrica, clique em Adicionar consulta.

    O Cloud Storage aplica as métricas ao seu projeto. Pode filtrar ou agregar as métricas através dos seguintes menus pendentes:

    • Para selecionar e ver um subconjunto dos seus dados com base em critérios especificados, use o menu pendente Filtro.

    • Para combinar vários pontos de dados num único valor e ver uma vista resumida das suas métricas, use o menu pendente Agregação.

    Permita que a aplicação seja executada durante, pelo menos, um minuto antes de verificar se existem métricas publicadas.

Para ver as métricas que adicionou ao seu projeto através de um painel de controlo, consulte o artigo Vista geral dos painéis de controlo.

Descrições das métricas

As secções seguintes descrevem as métricas do lado do cliente do Cloud Storage que podem ser usadas para monitorizar o desempenho do cliente gRPC.

Métricas por tentativa do cliente

As métricas seguintes recolhem dados de desempenho sobre tentativas individuais feitas por um cliente para comunicar com um servidor. As métricas por tentativa do cliente podem ajudar a medir o comportamento de repetição, os gargalos e otimizar a comunicação entre um cliente e um servidor.

Métrica completa Descrição Tipo de instrumento Unidade Atributos
storage.googleapis.com/client/grpc/client/attempt/started Preview. O número total de tentativas de RPC iniciadas, incluindo as que não foram concluídas. Contrapropor {attempt}
  • grpc.method: o nome completo do método gRPC, incluindo o pacote, o serviço e o método.
  • grpc.target: URI de destino canonicalizado usado quando criou o canal gRPC.
storage.googleapis.com/client/grpc/client/attempt/duration Preview. O tempo total necessário para concluir uma tentativa de RPC, incluindo o tempo necessário para escolher um subcanal. Histograma s
  • grpc.method: nome completo do método gRPC, incluindo o pacote, o serviço e o método.
  • grpc.target: URI de destino canonicalizado usado quando cria o canal gRPC.
  • grpc.status: código de estado do servidor gRPC recebido, como OK, CANCELLED ou DEADLINE_EXCEEDED.
  • grpc.lb.locality: a localidade para a qual o tráfego está a ser enviado. Este valor é definido como o atributo do resolvedor transmitido pela política weighted_target, ou a string vazia se o atributo do resolvedor não estiver definido.
storage.googleapis.com/client/grpc/client/attempt/sent_total_compressed_message_size Preview. O total de bytes, comprimidos, mas não encriptados, que são enviados em todas as mensagens de pedido, exceto metadados, por tentativa de RPC. Isto não inclui bytes de enquadramento de transporte nem gRPC. Histograma By
  • grpc.method: nome completo do método gRPC, incluindo o pacote, o serviço e o método.
  • grpc.target: URI de destino canonicalizado usado quando cria o canal gRPC.
  • grpc.status: código de estado do servidor gRPC recebido, como OK, CANCELLED ou DEADLINE_EXCEEDED.
  • grpc.lb.locality: a localidade para a qual o tráfego está a ser enviado. Este valor é definido como o atributo do resolvedor transmitido a partir da política weighted_target ou a string vazia se o atributo do resolvedor não estiver definido.
storage.googleapis.com/client/grpc/client/attempt/rcvd_total_compressed_message_size Preview. O total de bytes, comprimidos, mas não encriptados, que são recebidos em todas as mensagens de resposta, exceto metadados por tentativa de RPC. Isto não inclui bytes de enquadramento de transporte nem gRPC. Histograma By
  • grpc.method: nome completo do método gRPC, incluindo o pacote, o serviço e o método.
  • grpc.target: URI de destino canonicalizado usado quando cria o canal gRPC.
  • grpc.status: código de estado do servidor gRPC recebido, como OK, CANCELLED ou DEADLINE_EXCEEDED.
  • grpc.lb.locality: a localidade para a qual o tráfego está a ser enviado. Este valor é definido como o atributo do resolvedor transmitido a partir da política weighted_target ou a string vazia se o atributo do resolvedor não estiver definido.

Para mais informações acerca dos instrumentos por tentativa do cliente, consulte a documentação de métricas do OpenTelemetry no GitHub.

Métricas por chamada do cliente

As seguintes métricas oferecem uma vista agregada de todo o ciclo de vida de uma chamada de cliente para um servidor. As métricas por chamada do cliente fornecem dados de alto nível sobre as chamadas de clientes, fornecem métricas de acompanhamento para compreender os padrões de chamadas e ajudam a identificar frequências nos erros.

Métrica completa Descrição Tipo de instrumento Unidade Atributos
storage.googleapis.com/client/grpc/client/call/duration Preview. Mede o tempo ponto a ponto que a biblioteca gRPC demora a concluir um RPC na perspetiva da aplicação. Histograma s
  • grpc.method: nome completo do método gRPC, incluindo o pacote, o serviço e o método.
  • grpc.target: URI de destino canonicalizado usado quando cria o canal gRPC.
  • grpc.status: código de estado do servidor gRPC recebido, como OK, CANCELLED ou DEADLINE_EXCEEDED.

Para mais informações sobre os instrumentos por chamada do cliente, consulte a documentação de métricas do OpenTelemetry no GitHub.

Pedir métricas de deteção de carga

As seguintes métricas fornecem estatísticas sobre a eficácia da utilização da deteção de carga de pedidos pela aplicação do cliente. As métricas de deteção de carga de pedidos podem ajudar a equilibrar as cargas do servidor, otimizar a utilização de recursos e melhorar os tempos de resposta do cliente. As seguintes métricas só estão disponíveis com a conetividade direta.

Métrica completa Descrição Tipo de instrumento Unidade Atributos
storage.googleapis.com/client/grpc/lb/rls/cache_entries Preview. O número de entradas na cache de deteção de carga de pedidos. Indicador {entry}
  • grpc.target: indica o destino do canal gRPC no qual o WRR é usado.
  • grpc.lb.rls.server_target: o URI de destino com o qual o servidor de deteção de carga de pedidos comunica.
  • grpc.lb.rls.instance_uuid: um identificador exclusivo universal (UUID) para uma instância de cliente de deteção de carga de pedido individual. O valor não é significativo por si só, mas é útil para diferenciar as instâncias do cliente de deteção de carga de pedidos nos casos em que existem várias instâncias no mesmo canal gRPC ou em que existem vários canais para o mesmo destino.
storage.googleapis.com/client/grpc/lb/rls/cache_size Preview. O tamanho atual da cache de deteção de carga do pedido. Indicador By
  • grpc.target: o destino do canal gRPC no qual o WRR é usado.
  • grpc.lb.rls.server_target: o URI de destino com o qual o servidor de deteção de carga de pedidos comunica.
  • grpc.lb.rls.instance_uuid: um UUID para uma instância do cliente de deteção de carga de pedido individual. O valor não é significativo por si só, mas é útil para diferenciar as instâncias do cliente de deteção de carga de pedidos nos casos em que existem várias instâncias no mesmo canal gRPC ou em que existem vários canais para o mesmo destino.
storage.googleapis.com/client/grpc/lb/rls/default_target_picks Preview. O número de seleções do equilibrador de carga (LB) enviadas para o destino predefinido. Contrapropor {pick}
  • grpc.target: indica o destino do canal gRPC no qual é usada a deteção de carga de pedidos.
  • grpc.lb.rls.server_target: o URI de destino do servidor de deteção de carga com o qual comunicar.
  • grpc.lb.rls.data_plane_target: uma string de destino usada pela deteção de carga de pedidos para encaminhar o tráfego do plano de dados. O valor é devolvido pelo servidor de deteção de carga de pedidos para uma chave específica ou configurado como o destino predefinido na configuração de deteção de carga de pedidos.
  • grpc.lb.pick_result:o resultado de uma seleção de LB, como "complete", "fail" ou "drop".
storage.googleapis.com/client/grpc/lb/rls/target_picks Preview. O número de seleções de LB enviadas para cada destino de deteção de carga de pedidos. Se o destino predefinido também for devolvido pelo servidor de deteção de carga de pedidos, os RPCs enviados para esse destino a partir da cache são contabilizados nesta métrica e não em grpc.rls.default_target_picks. Contrapropor {pick}
  • grpc.target: o destino do canal gRPC no qual é usada a deteção de carga de pedidos.
  • grpc.lb.rls.server_target: o URI de destino do servidor de deteção de carga com o qual comunicar.
  • grpc.lb.rls.data_plane_target: uma string de destino usada pela deteção de carga de pedidos para encaminhar o tráfego do plano de dados. O valor é devolvido pelo servidor de deteção de carga de pedidos para uma chave específica ou configurado como o destino predefinido na configuração de deteção de carga de pedidos.
  • grpc.lb.pick_result: o resultado de uma seleção de LB, como "complete", "fail" ou "drop".
storage.googleapis.com/client/grpc/lb/rls/failed_picks Preview. O número de seleções de LB que falharam devido a: um pedido de deteção de carga de pedido falhado ou o canal de deteção de carga de pedido a ser limitado. Contrapropor {pick}
  • grpc.target: o destino do canal gRPC no qual é usada a deteção de carga de pedidos.
  • grpc.lb.rls.server_target: o URI de destino do servidor de deteção de carga com o qual comunicar.

Métricas do cliente do serviço xDiscovery

As seguintes métricas fornecem estatísticas sobre a forma como a sua aplicação cliente interage com o plano de controlo do serviço xDiscovery (xDS) para descobrir e configurar ligações aos serviços de back-end. As métricas xDS podem ajudar a monitorizar a latência dos pedidos de serviço, monitorizar as atualizações de configuração e otimizar o desempenho geral do xDS.

As seguintes métricas só estão disponíveis com a conetividade direta.

Métrica completa Descrição Tipo de instrumento Unidade Atributos
storage.googleapis.com/client/grpc/xds_client/connected Preview. Mede se o cliente xDS tem ou não uma stream ADS funcional para o servidor xDS. Para um determinado servidor, esta métrica é definida como 1 quando a stream é criada inicialmente. Se ocorrer uma falha de conetividade ou quando o fluxo ADS falha sem ver uma mensagem de resposta, conforme indicado em A57, a métrica é definida como 0. Quando definida como 0, a métrica é reposta para 1 quando a primeira resposta é recebida num fluxo ADS. Esta métrica só está disponível para as bibliotecas de cliente da nuvem para C++. Indicador {bool}
  • grpc.target: para clientes, indica o destino do canal gRPC no qual o XdsClient é usado. Para servidores, vai ser a string "#server".
  • grpc.xds.server: o URI de destino do servidor xDS com o qual o XdsClient está a comunicar.
storage.googleapis.com/client/grpc/xds_client/resource_updates_invalid Preview. O número de recursos recebidos que foram considerados inválidos. Esta métrica só está disponível para as bibliotecas de cliente da nuvem para C++. Contrapropor {resource}
  • grpc.target: para clientes, indica o destino do canal gRPC no qual o XdsClient é usado. Para servidores, vai ser a string "#server".
  • grpc.xds.server: o URI de destino do servidor xDS com o qual o XdsClient está a comunicar.
  • grpc.xds.resource_type: indica um tipo de recurso xDS, como "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/resource_updates_valid Preview. O número de recursos recebidos que foram considerados válidos, mesmo que não tenham sido alterados. Esta métrica só está disponível para as bibliotecas de cliente do Google Cloud para C++. Contrapropor {resource}
  • grpc.target: para clientes, indica o destino do canal gRPC no qual o XdsClient é usado. Para servidores, vai ser a string "#server".
  • grpc.xds.server: o URI de destino do servidor xDS com o qual o XdsClient está a comunicar.
  • grpc.xds.resource_type: indica um tipo de recurso xDS, como "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/resources Preview. O número de recursos xDS. Esta métrica só está disponível para as bibliotecas de cliente do Google Cloud para C++. Indicador {resource}
  • grpc.target: para clientes, indica o destino do canal gRPC no qual o XdsClient é usado. Para os servidores, vai ser a string "#server".
  • grpc.xds.authority: a autoridade xDS. O valor será "#old" para nomes de recursos não xdstp que foram identificados na API xDS, antes da introdução da representação de URI xdstp://.
  • grpc.xds.cache_state: indica o estado da cache de um recurso xDS.
  • grpc.xds.resource_type indica um tipo de recurso xDS, como "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/server_failure Preview. O número de servidores xDS que já não estão a funcionar corretamente e que ficaram indisponíveis, sobrecarregados ou estão a fornecer dados de configuração incorretos ou inválidos. Esta métrica só está disponível para as bibliotecas de cliente do Google Cloud para C++. Contrapropor {failure}
  • grpc.target: o URI de destino do servidor xDS com o qual o XdsClient está a comunicar.
  • grpc.xds.server: para clientes, isto indica o destino do canal gRPC no qual o XdsClient é usado. Para servidores, esta é a string "#server".

Para mais informações sobre as métricas do cliente xDS, consulte a documentação Balanceamento de carga global baseado em xDS no GitHub.

Desative as métricas do lado do cliente

Se necessário, pode desativar as métricas do lado do cliente.

Java

public GrpcStorageOptions.Builder setEnableGrpcClientMetrics(false enableGrpcClientMetrics)

Para mais informações, consulte o método GrpcStorageOptions.Builder da classe Cloud Client Libraries for Java para métricas do cliente gRPC.

C++

Para desativar as métricas do lado do cliente para a API gRPC através das bibliotecas cliente da Google Cloud para C++, consulte Struct EnableGrpcMetricsOption.

Se estiver a usar o Bazel para criar a sua aplicação e quiser desativar as métricas do lado do cliente, defina a opção enable_grpc_metrics como false no ficheiro de compilação da sua aplicação.

O que se segue?