Usar métricas do lado do cliente gRPC

Nesta página, descrevemos como emitir métricas do lado do cliente gRPC para o Cloud Monitoring ao usar 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 cliente que interage com o Cloud Storage usando 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 ponto de vista do servidor.

Como funciona

É possível ativar a emissão de métricas do lado do cliente para o Cloud Monitoring ao usar gRPC para interagir com o Cloud Storage usando uma das interfaces compatíveis. É possível conferir 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. Isso significa que você pode emitir, armazenar e acessar essas métricas sem incorrer em custos 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, primeiro conclua as seguintes etapas:

  1. Verifique se a biblioteca de cliente ou o conector do Cloud Storage que você quer usar é compatível com o gRPC. As seguintes bibliotecas de cliente e conectores do Cloud Storage são compatíveis com 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 os papéis e as permissões necessárias 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 no Cloud Monitoring, conceda o papel do 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 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 gravador de métricas do Monitoring, 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 gRPC do Cloud Storage no Metrics Explorer.

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

    Acesse o Metrics Explorer

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

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

  4. Na barra de pesquisa Filtrar por nome do recurso ou da métrica, digite storage.googleapis.com/Client ou procure a métrica que você quer aplicar por 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. É possível 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 Filtro.

    • Para combinar vários pontos de dados em um único valor e ver uma visão resumida das suas 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 adicionadas ao projeto usando um painel, consulte 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 por tentativa do cliente

As métricas a seguir coletam dados de performance sobre tentativas individuais feitas por um cliente para se comunicar com um servidor. As métricas de cliente por tentativa podem ajudar você a medir o comportamento de novas tentativas, 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 canonizado usado quando o canal gRPC é criado.
storage.googleapis.com/client/grpc/client/attempt/duration Preview. O tempo completo 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 canonizado 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 onde o tráfego está sendo enviado. Ele será definido como o atributo resolver transmitido da política weighted_target, ou a string vazia se o atributo resolver 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 canonizado 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 onde o tráfego está sendo enviado. Ele será definido como o atributo de resolver transmitido da política weighted_target ou como a string vazia se o atributo de resolver 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 canonizado 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 onde o tráfego está sendo enviado. Ele será definido como o atributo do resolvedor transmitido da política weighted_target ou como a string vazia se o atributo do resolvedor não estiver definido.

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

Métricas por chamada do cliente

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 de chamadas por cliente fornecem dados de alto nível 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 completo 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 canonizado 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 instrumentos por chamada do cliente, consulte a documentação de métricas do OpenTelemetry no GitHub.

Solicitar métricas de detecção de carga de solicitação

As métricas a seguir fornecem insights sobre a eficácia do uso da detecção de carga de solicitação pelo aplicativo cliente. As métricas de detecção de carga de solicitação podem ajudar você 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 conectividade 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.
  • grpc.lb.rls.instance_uuid: um identificador exclusivo universal (UUID) para uma instância de cliente individual de detecção de carga de solicitação. O valor não é significativo por si só, mas é útil para diferenciar instâncias de cliente de detecção de carga de solicitação em casos em que há várias instâncias no mesmo canal gRPC ou 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.
  • grpc.lb.rls.instance_uuid: um UUID para uma instância de cliente individual de detecção de carga de solicitação. O valor não é significativo por si só, mas é útil para diferenciar instâncias de cliente de detecção de carga de solicitação em casos em que há várias instâncias no mesmo canal gRPC ou vários canais para o mesmo destino.
storage.googleapis.com/client/grpc/lb/rls/default_target_picks Preview. O número de escolhas de balanceador de carga (LB) enviadas para a meta padrão. Contador {pick}
  • grpc.target: indica o destino do canal gRPC em que a detecção de carga de solicitação é usada.
  • grpc.lb.rls.server_target: o URI de destino do servidor de detecção de carga de solicitação com que se comunicar.
  • grpc.lb.rls.data_plane_target: uma string de destino usada pela detecção de carga de solicitação 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 balanceamento de carga enviadas a 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ção, os RPCs enviados a 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 a detecção de carga de solicitação é usada.
  • grpc.lb.rls.server_target: o URI de destino do servidor de detecção de carga de solicitação com que se comunicar.
  • grpc.lb.rls.data_plane_target: uma string de destino usada pela detecção de carga de solicitação 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 com falha ou à limitação do canal de detecção de carga da solicitação. Contador {pick}
  • grpc.target: o destino do canal gRPC em que a detecção de carga de solicitação é usada.
  • grpc.lb.rls.server_target: o URI de destino do servidor de detecção de carga de solicitação com que se comunicar.

xDiscovery Service client metrics

As métricas a seguir fornecem insights sobre como o aplicativo cliente interage 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 ajudam a rastrear a latência de solicitação de serviço, monitorar atualizações de configuração e otimizar o desempenho geral do xDS.

As seguintes métricas só estão disponíveis com conectividade 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 um stream ADS funcionando para o servidor xDS. Para um determinado servidor, essa métrica é definida como 1 quando o fluxo é criado inicialmente. Se houver uma falha de conectividade ou quando o stream do ADS falhar sem uma mensagem de resposta conforme A57, a métrica será definida como 0. Depois de definida como 0, a métrica será redefinida como 1 quando a primeira resposta for recebida em um stream do ADS. Essa métrica está disponível apenas para as 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 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 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 que não tenham sido alterados. 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 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 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 não xdstp 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 bibliotecas de cliente do Cloud para C++. Contador {failure}
  • grpc.target: o URI de destino do servidor xDS com o qual o XdsClient está se comunicando.
  • grpc.xds.server: para clientes, isso indica o destino do canal gRPC em que o XdsClient é usado. Para servidores, essa é a string "#server".

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

Desativar as métricas do lado do cliente

Se necessário, você 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 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 Struct EnableGrpcMetricsOption.

Se você estiver usando o Bazel para criar o aplicativo e quiser desativar as métricas do lado do cliente, defina a opção enable_grpc_metrics como false no arquivo de build do aplicativo.

A seguir