Usar métricas do lado do cliente gRPC

Esta página descreve como emitir métricas do lado do cliente do gRPC para o Cloud Monitoring quando você usa o gRPC para interagir com o Cloud Storage usando uma das seguintes interfaces compatíveis:

As métricas do lado do cliente podem ser usadas para monitorar o desempenho do aplicativo do cliente que interage com o Cloud Storage usando o gRPC. A métrica do lado do cliente é diferente das métricas do lado do servidor, que fornecem insights sobre a performance do Cloud Storage do lado do servidor.

Como funciona

É possível ativar o envio de métricas do lado do cliente para o Cloud Monitoring ao usar o gRPC para interagir com o Cloud Storage usando uma das interfaces compatíveis. É possível conferir as métricas do lado do cliente usando o Metrics Explorer para monitorar e otimizar as interações entre o Cloud Storage e o cliente gRPC, gerenciar o uso e resolver gargalos de desempenho e problemas técnicos.

Preços

As métricas do lado do cliente do Cloud Storage não são cobradas, ou seja, você pode emitir, armazenar e acessar métricas do lado do cliente do Cloud Storage sem incorrer em taxas do Cloud Monitoring. Para mais informações sobre preços, consulte Preços do Google Cloud Observability.

Antes de começar

Para usar métricas do lado do cliente, siga estas etapas:

  1. Verifique se a biblioteca de cliente ou o conector do Cloud Storage que você quer usar oferece suporte ao gRPC. As seguintes bibliotecas de cliente e conectores do Cloud Storage são compatíveis com o gRPC:

  2. Configure a autenticação.

  3. Ative a API Cloud Monitoring.

  4. Ative a API Cloud Storage.

    Acessar a API Cloud Storage

  5. Defina as permissões e os papéis necessários para emitir métricas do lado do cliente.

Funções exigidas

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

Esse papel predefinido contém as permissões necessárias para emitir métricas do lado do cliente do gRPC para o Cloud Monitoring. Para conferir as permissões exatas necessárias, consulte a seção Permissões necessárias:

Permissões necessárias

  • monitoring.timeSeries.create

Essas permissões também podem ser concedidas com outros papéis personalizados ou papéis predefinidos. Para mais informações sobre o papel de escritor de métricas de monitoramento, consulte a documentação do IAM sobre roles/monitoring.metricWriter.

Considerações

Visualizar métricas no Metrics Explorer

Use as instruções a seguir para conferir as métricas do lado do cliente do gRPC do Cloud Storage no Metrics Explorer.

  1. No Console do Google Cloud, acesse a página do Metrics Explorer.

    Acesse o Metrics Explorer

  2. Selecione o projeto para o qual você quer conferir as métricas.

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

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

    O Cloud Storage aplica as métricas ao seu projeto. Você pode filtrar ou agregar suas métricas usando os seguintes menus suspensos:

    • Para selecionar e visualizar um subconjunto de dados com base em critérios especificados, use o menu suspenso Filtrar.

    • Para combinar vários pontos de dados em um único valor e conferir uma visualização resumida das métricas, use o menu suspenso Agregação.

    Deixe o aplicativo ser executado por pelo menos um minuto antes de verificar se há métricas publicadas.

Para conferir as métricas que você adicionou ao seu projeto usando um painel, consulte a Visão geral dos painéis.

Descrições das métricas

As seções a seguir descrevem as métricas do lado do cliente do Cloud Storage que podem ser usadas para monitorar o desempenho do cliente gRPC.

Métricas do cliente por tentativa

As métricas a seguir coletam dados de desempenho sobre tentativas individuais feitas por um cliente para se comunicar com um servidor. As métricas por tentativa do cliente podem ajudar a medir o comportamento de nova tentativa, 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 aquelas que não foram concluídas. Contador {attempt}
  • grpc.method: o nome completo do método gRPC, incluindo pacote, serviço e método.
  • grpc.target: URI de destino canônico usado ao criar o canal gRPC.
storage.googleapis.com/client/grpc/client/attempt/duration Preview: o tempo total 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 pacote, serviço e método.
  • grpc.target: URI de destino canônico usado ao criar o canal gRPC.
  • grpc.status: código de status do servidor gRPC recebido, como OK, CANCELLED ou DEADLINE_EXCEEDED.
  • grpc.lb.locality: a localidade para a qual o tráfego está sendo enviado. Ele será definido como o atributo resolvidor 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 compactados, mas não criptografados, enviados em todas as mensagens de solicitação, exceto metadados por tentativa de RPC. Isso não inclui bytes de enquadramento de transporte ou gRPC. Histograma By
  • grpc.method: nome completo do método gRPC, incluindo pacote, serviço e método.
  • grpc.target: URI de destino canônico usado ao criar o canal gRPC.
  • grpc.status: código de status do servidor gRPC recebido, como OK, CANCELLED ou DEADLINE_EXCEEDED.
  • grpc.lb.locality: a localidade para a qual o tráfego está sendo enviado. Ele será definido como o atributo do resolvedor transmitido pela política weighted_target ou como 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 compactados, mas não criptografados, recebidos em todas as mensagens de resposta, exceto metadados por tentativa de RPC. Isso não inclui bytes de enquadramento de transporte ou gRPC. Histograma By
  • grpc.method: nome completo do método gRPC, incluindo pacote, serviço e método.
  • grpc.target: URI de destino canônico usado ao criar o canal gRPC.
  • grpc.status: código de status do servidor gRPC recebido, como OK, CANCELLED ou DEADLINE_EXCEEDED.
  • grpc.lb.locality: a localidade para a qual o tráfego está sendo enviado. Ele será definido como o atributo do solucionador transmitido pela política weighted_target ou como a string vazia se o atributo do solucionador não estiver definido.

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

Métricas do cliente por chamada

As métricas a seguir fornecem uma visão agregada de todo o ciclo de vida de uma chamada de cliente para um servidor. As métricas por chamada do cliente fornecem dados gerais sobre as chamadas do cliente, métricas de rastreamento para entender os padrões de chamadas e ajudam a identificar frequências em erros.

Métrica completa Descrição Tipo de instrumento Unidade Atributos
storage.googleapis.com/client/grpc/client/call/duration Preview. Mede o tempo total que a biblioteca gRPC leva para concluir uma RPC do ponto de vista do aplicativo. Histograma s
  • grpc.method: nome completo do método gRPC, incluindo pacote, serviço e método.
  • grpc.target: URI de destino canônico usado ao criar o canal gRPC.
  • grpc.status: código de status 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.

Solicitar métricas de detecção de carga

As métricas a seguir fornecem insights sobre a eficácia do uso do aplicativo cliente de deteção de carga de solicitação. As métricas de detecção de carga de solicitação 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 estão disponíveis apenas com conexão 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 no cache de detecção de carga de solicitação. Medidor {entry}
  • grpc.target: indica o destino do canal gRPC em que o WRR é usado.
  • grpc.lb.rls.server_target: o URI de destino do servidor de detecção de carga de solicitação com quem ele se comunica.
  • grpc.lb.rls.instance_uuid: um identificador universalmente exclusivo (UUID, na sigla em inglês) para uma instância de cliente de detecção de carga de solicitação individual. O valor não é significativo por si só, mas é útil para diferenciar entre a carga de solicitação que detecta instâncias de cliente em casos em que há várias instâncias no mesmo canal gRPC ou em que há vários canais para o mesmo destino.
storage.googleapis.com/client/grpc/lb/rls/cache_size Preview: o tamanho atual do cache de detecção de carga de solicitação. Medidor By
  • grpc.target: o destino do canal gRPC em que o WRR é usado.
  • grpc.lb.rls.server_target: o URI de destino do servidor de detecção de carga de solicitação com quem ele se comunica.
  • grpc.lb.rls.instance_uuid: um UUID para uma instância de cliente de detecção de carga de solicitação. O valor não é significativo por si só, mas é útil para diferenciar entre a carga de solicitação detectando instâncias de cliente em casos em que há várias instâncias no mesmo canal gRPC ou em que há vários canais para o mesmo destino.
storage.googleapis.com/client/grpc/lb/rls/default_target_picks Preview: o número de escolhas do balanceador de carga (LB, na sigla em inglês) enviadas para o destino padrão. Contador {pick}
  • grpc.target: indica o destino do canal gRPC em que o sensor de carga de solicitação é usado.
  • grpc.lb.rls.server_target: o URI de destino do servidor de detecção de carga de solicitação com o qual o servidor precisa se comunicar.
  • grpc.lb.rls.data_plane_target: uma string de destino usada pelo request load sensing para rotear o tráfego do plano de dados. O valor é retornado pelo servidor de detecção de carga de solicitação para uma chave específica ou configurado como o destino padrão na configuração de detecção de carga de solicitação.
  • grpc.lb.pick_result:o resultado de uma escolha de LB, como "complete", "fail" ou "drop".
storage.googleapis.com/client/grpc/lb/rls/target_picks Preview: o número de escolhas de LB enviadas para cada destino de detecção de carga de solicitação. Se o destino padrão também for retornado pelo servidor de detecção de carga de solicitações, os RPCs enviados para esse destino do cache serão contados nessa métrica, não em grpc.rls.default_target_picks. Contador {pick}
  • grpc.target: o destino do canal gRPC em que o sensor de carga de solicitação é usado.
  • grpc.lb.rls.server_target: o URI de destino do servidor de detecção de carga de solicitação com o qual o servidor precisa se comunicar.
  • grpc.lb.rls.data_plane_target: uma string de destino usada pelo Request Load Sensing para rotear o tráfego do plano de dados. O valor é retornado pelo servidor de detecção de carga de solicitação para uma chave específica ou configurado como o destino padrão na configuração de detecção de carga de solicitação.
  • grpc.lb.pick_result: o resultado de uma escolha de LB, como "complete", "fail" ou "drop".
storage.googleapis.com/client/grpc/lb/rls/failed_picks Preview: o número de escolhas de LB que falharam devido a uma solicitação de detecção de carga de solicitação com falha ou ao canal de detecção de carga de solicitação sendo limitado. Contador {pick}
  • grpc.target: o destino do canal gRPC em que o sensor de carga de solicitação é usado.
  • grpc.lb.rls.server_target: o URI de destino do servidor de detecção de carga de solicitação com o qual o servidor precisa se comunicar.

Métricas do cliente do xDiscovery Service

As métricas a seguir fornecem insights sobre como o aplicativo cliente interag com o plano de controle do xDiscovery Service (xDS) para descobrir e configurar conexões com serviços de back-end. As métricas do xDS podem ajudar a rastrear a latência da solicitação de serviço, monitorar atualizações de configuração e otimizar a performance geral do xDS.

As métricas a seguir estão disponíveis apenas com conectividade direta.

Métrica completa Descrição Tipo de instrumento Unidade Atributos
storage.googleapis.com/client/grpc/xds_client/connected Preview. Avalia se o cliente xDS tem ou não um fluxo de ADS em funcionamento para o servidor xDS. Para um determinado servidor, essa métrica é definida como 1 quando o stream é criado inicialmente. Se houver uma falha de conectividade ou quando o fluxo de ADS falhar sem mostrar uma mensagem de resposta conforme A57, a métrica será definida como 0. Depois de ser definida como 0, a métrica será redefinida como 1 quando a primeira resposta for recebida em um stream de ADS. Essa métrica está disponível apenas para bibliotecas de cliente do Cloud para C++. Medidor {bool}
  • grpc.target: para clientes, indica o destino do canal gRPC em que o XdsClient é usado. Para servidores, será a string "#server".
  • grpc.xds.server: o URI de destino do servidor xDS com que o XdsClient está se comunicando.
storage.googleapis.com/client/grpc/xds_client/resource_updates_invalid Preview: o número de recursos recebidos que foram considerados inválidos. Essa métrica está disponível apenas para bibliotecas de cliente do Cloud para C++. Contador {resource}
  • grpc.target: para clientes, indica o destino do canal gRPC em que o XdsClient é usado. Para servidores, será a string "#server".
  • grpc.xds.server: o URI de destino do servidor do xDS com que o XdsClient está se comunicando.
  • 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 se não tiverem sido alterados. Essa métrica está disponível apenas para as bibliotecas de cliente do Cloud para C++. Contador {resource}
  • grpc.target: para clientes, indica o destino do canal gRPC em que o XdsClient é usado. Para servidores, será a string "#server".
  • grpc.xds.server: o URI de destino do servidor do xDS com que o XdsClient está se comunicando.
  • 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. Essa métrica está disponível apenas para as bibliotecas de cliente do Cloud para C++. Medidor {resource}
  • grpc.target: para clientes, indica o destino do canal gRPC em que o XdsClient é usado. Para servidores, será a string "#server".
  • grpc.xds.authority: a autoridade xDS. O valor será "#old" para nomes de recursos que não sã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 do 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 não estão mais funcionando corretamente e ficaram indisponíveis, sobrecarregados ou estão fornecendo dados de configuração incorretos ou inválidos. Essa métrica está disponível apenas para as bibliotecas de cliente do Cloud para C++. Contador {failure}
  • grpc.target: o URI de destino do servidor xDS com que o XdsClient está se comunicando.
  • grpc.xds.server: para clientes, indica o destino do canal gRPC em que o XdsClient é usado. Para servidores, essa é 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.

Desativar as métricas do lado do cliente

Você pode desativar as métricas do lado do cliente, se necessário.

Java

public GrpcStorageOptions.Builder setEnableGrpcClientMetrics(false enableGrpcClientMetrics)

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

C++

Para desativar as métricas do lado do cliente para a API gRPC usando as bibliotecas de cliente do Cloud para C++, consulte Estrutura EnableGrpcMetricsOption.

A seguir