Utiliser les métriques côté client gRPC

Cette page explique comment émettre des métriques côté client gRPC dans Cloud Monitoring lorsque vous utilisez gRPC pour interagir avec Cloud Storage à l'aide de l'une des interfaces compatibles suivantes:

Les métriques côté client peuvent être utilisées pour surveiller les performances de l'application cliente qui interagit avec Cloud Storage à l'aide de gRPC. La métrique côté client diffère des métriques côté serveur, qui fournissent des insights sur les performances de Cloud Storage du point de vue du serveur.

Fonctionnement

Vous pouvez choisir d'émettre des métriques côté client vers Cloud Monitoring lorsque vous utilisez gRPC pour interagir avec Cloud Storage à l'aide de l'une des interfaces compatibles. Vous pouvez afficher les métriques côté client à l'aide de l'explorateur de métriques pour vous aider à surveiller et optimiser les interactions entre Cloud Storage et le client gRPC, à gérer l'utilisation, et à résoudre les goulots d'étranglement de performances et les problèmes techniques.

Tarifs

Les métriques côté client Cloud Storage ne sont pas facturées. Vous pouvez donc les émettre, les stocker et y accéder sans payer de frais de surveillance Cloud. Pour en savoir plus sur les tarifs, consultez la page Tarifs de Google Cloud Observability.

Avant de commencer

Pour utiliser des métriques côté client, vous devez d'abord suivre les étapes suivantes:

  1. Vérifiez que la bibliothèque cliente ou le connecteur Cloud Storage que vous souhaitez utiliser est compatible avec gRPC. Les bibliothèques clientes et connecteurs Cloud Storage suivants sont compatibles avec gRPC:

  2. Configurez l'authentification.

  3. Activez l'API Cloud Monitoring.

  4. Activez l'API Cloud Storage.

    Accéder à l'API Cloud Storage

  5. Définissez les rôles et autorisations requis pour émettre des métriques côté client.

Rôles requis

Pour définir les autorisations dont vous avez besoin pour émettre des métriques côté client gRPC dans Cloud Monitoring, attribuez le rôle IAM Rédacteur de métriques Monitoring (roles/monitoring.metricWriter) au compte de service utilisé par le client gRPC.

Ce rôle prédéfini contient les autorisations requises pour émettre des métriques côté client gRPC vers Cloud Monitoring. Pour connaître les autorisations exactes requises, consultez la section Autorisations requises:

Autorisations requises

  • monitoring.timeSeries.create

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis. Pour en savoir plus sur le rôle Écrivain de métriques de surveillance, consultez la documentation IAM sur roles/monitoring.metricWriter.

Remarques

Afficher les métriques dans l'Explorateur de métriques

Suivez les instructions ci-dessous pour afficher les métriques côté client gRPC de Cloud Storage dans l'explorateur de métriques.

  1. Dans la console Google Cloud, accédez à la page Explorateur de métriques.

    Accéder à l'explorateur de métriques

  2. Sélectionnez le projet pour lequel vous souhaitez afficher les métriques.

  3. Dans le menu déroulant Métrique, cliquez sur Sélectionner une métrique.

  4. Dans la barre de recherche Filtrer par nom de ressource ou de métrique, saisissez storage.googleapis.com/Client ou recherchez la métrique que vous souhaitez appliquer par nom de métrique, puis cliquez sur Appliquer. Pour ajouter plusieurs métriques, cliquez sur Ajouter une requête.

    Cloud Storage applique les métriques à votre projet. Vous pouvez filtrer ou agréger vos métriques à l'aide des menus déroulants suivants:

    • Pour sélectionner et afficher un sous-ensemble de vos données en fonction de critères spécifiés, utilisez le menu déroulant Filtrer.

    • Pour combiner plusieurs points de données en une seule valeur et afficher un résumé de vos métriques, utilisez le menu déroulant Agrégation.

    Laissez votre application s'exécuter pendant au moins une minute avant de rechercher des métriques publiées.

Pour afficher les métriques que vous avez ajoutées à votre projet à l'aide d'un tableau de bord, consultez la section Présentation des tableaux de bord.

Descriptions des métriques

Les sections suivantes décrivent les métriques côté client Cloud Storage qui peuvent être utilisées pour surveiller les performances du client gRPC.

Métriques par tentative du client

Les métriques suivantes collectent des données de performances sur les tentatives individuelles d'un client pour communiquer avec un serveur. Les métriques par tentative client peuvent vous aider à mesurer le comportement de nouvelle tentative, les goulots d'étranglement et à optimiser la communication entre un client et un serveur.

Métrique complète Description Type d'instrument Unité Attributs
storage.googleapis.com/client/grpc/client/attempt/started Preview : nombre total de tentatives de RPC lancées, y compris celles qui ne sont pas terminées. Compteur {attempt}
  • grpc.method: nom complet de la méthode gRPC, y compris le package, le service et la méthode.
  • grpc.target: URI cible canonisé utilisé lors de la création du canal gRPC.
storage.googleapis.com/client/grpc/client/attempt/duration Preview : temps nécessaire pour effectuer une tentative RPC, y compris le temps nécessaire pour sélectionner un sous-canal. Histogramme s
  • grpc.method: nom complet de la méthode gRPC, y compris le package, le service et la méthode.
  • grpc.target: URI cible canonisé utilisé lors de la création du canal gRPC.
  • grpc.status: code d'état du serveur gRPC reçu (par exemple, OK, CANCELLED ou DEADLINE_EXCEEDED)
  • grpc.lb.locality: localité à laquelle le trafic est envoyé. Il sera défini sur l'attribut de résolveur transmis à partir de la règle weighted_target ou sur la chaîne vide si l'attribut de résolveur n'est pas défini.
storage.googleapis.com/client/grpc/client/attempt/sent_total_compressed_message_size Preview : nombre total d'octets, compressés mais non chiffrés, envoyés par tous les messages de requête, à l'exception des métadonnées, par tentative de RPC. Cela n'inclut pas les octets de structuration du transport ni de gRPC. Histogramme By
  • grpc.method: nom complet de la méthode gRPC, y compris le package, le service et la méthode.
  • grpc.target: URI cible canonisé utilisé lors de la création du canal gRPC.
  • grpc.status: code d'état du serveur gRPC reçu (par exemple, OK, CANCELLED ou DEADLINE_EXCEEDED)
  • grpc.lb.locality: localité à laquelle le trafic est envoyé. Il sera défini sur l'attribut de résolveur transmis à partir de la règle weighted_target ou sur la chaîne vide si l'attribut de résolveur n'est pas défini.
storage.googleapis.com/client/grpc/client/attempt/rcvd_total_compressed_message_size Preview : nombre total d'octets, compressés mais non chiffrés, reçus par tous les messages de réponse, à l'exception des métadonnées, par tentative de RPC. Cela n'inclut pas les octets de structuration du transport ni de gRPC. Histogramme By
  • grpc.method: nom complet de la méthode gRPC, y compris le package, le service et la méthode.
  • grpc.target: URI cible canonisé utilisé lors de la création du canal gRPC.
  • grpc.status: code d'état du serveur gRPC reçu (par exemple, OK, CANCELLED ou DEADLINE_EXCEEDED)
  • grpc.lb.locality: localité à laquelle le trafic est envoyé. Il sera défini sur l'attribut de résolveur transmis à partir de la règle weighted_target ou sur la chaîne vide si l'attribut de résolveur n'est pas défini.

Pour en savoir plus sur les instruments client par tentative, consultez la documentation sur les métriques OpenTelemetry sur GitHub.

Métriques par appel du client

Les métriques suivantes fournissent une vue agrégée de l'ensemble du cycle de vie d'un appel client à un serveur. Les métriques par appel client fournissent des données générales sur les appels client, des métriques de suivi pour comprendre les tendances des appels et vous aident à identifier les fréquences des erreurs.

Métrique complète Description Type d'instrument Unité Attributs
storage.googleapis.com/client/grpc/client/call/duration Preview : mesure le temps de bout en bout que la bibliothèque gRPC prend pour effectuer une RPC du point de vue de l'application. Histogramme s
  • grpc.method: nom complet de la méthode gRPC, y compris le package, le service et la méthode.
  • grpc.target: URI cible canonisé utilisé lors de la création du canal gRPC.
  • grpc.status: code d'état du serveur gRPC reçu (par exemple, OK, CANCELLED ou DEADLINE_EXCEEDED)

Pour en savoir plus sur les instruments par appel client, consultez la documentation sur les métriques OpenTelemetry sur GitHub.

Demander des métriques de détection de charge

Les métriques suivantes fournissent des insights sur l'efficacité de l'utilisation de la détection de la charge de requête par votre application cliente. Les métriques de détection de la charge de requête peuvent vous aider à équilibrer les charges de serveur, à optimiser l'utilisation des ressources et à améliorer les temps de réponse des clients. Les métriques suivantes ne sont disponibles qu'avec une connectivité directe.

Métrique complète Description Type d'instrument Unité Attributs
storage.googleapis.com/client/grpc/lb/rls/cache_entries Preview : nombre d'entrées dans le cache de détection de la charge de requêtes. Jauge {entry}
  • grpc.target: indique la cible du canal gRPC dans lequel le WRR est utilisé.
  • grpc.lb.rls.server_target: URI cible du serveur de détection de la charge de la requête avec lequel le serveur communique.
  • grpc.lb.rls.instance_uuid: identifiant unique universel (UUID) pour une instance cliente de détection de la charge de requête individuelle. La valeur n'a pas de sens en soi, mais elle est utile pour différencier les instances client de détection de la charge de requêtes dans les cas où il existe plusieurs instances dans le même canal gRPC ou plusieurs canaux vers la même cible.
storage.googleapis.com/client/grpc/lb/rls/cache_size Preview : taille actuelle du cache de détection de la charge de la requête. Jauge By
  • grpc.target: cible du canal gRPC dans lequel le WRR est utilisé.
  • grpc.lb.rls.server_target: URI cible du serveur de détection de la charge de la requête avec lequel le serveur communique.
  • grpc.lb.rls.instance_uuid: UUID d'une instance cliente de détection de la charge de requête individuelle. La valeur n'a pas de sens en soi, mais elle est utile pour différencier les instances client de détection de la charge de requêtes dans les cas où il existe plusieurs instances dans le même canal gRPC ou plusieurs canaux vers la même cible.
storage.googleapis.com/client/grpc/lb/rls/default_target_picks Preview : nombre de choix d'équilibreur de charge (LB) envoyés à la cible par défaut. Compteur {pick}
  • grpc.target: indique la cible du canal gRPC dans lequel la détection de la charge de requête est utilisée.
  • grpc.lb.rls.server_target: URI cible du serveur de détection de charge de la requête à contacter.
  • grpc.lb.rls.data_plane_target: chaîne cible utilisée par la détection de la charge de requête pour le routage du trafic du plan de données. La valeur est renvoyée par le serveur de détection de charge de la requête pour une clé particulière ou configurée comme cible par défaut dans la configuration de détection de charge de la requête.
  • grpc.lb.pick_result:résultat d'une sélection de LB, telle que "complete", "fail" ou "drop".
storage.googleapis.com/client/grpc/lb/rls/target_picks Preview : nombre de choix de LB envoyés à chaque cible de détection de la charge de requête. Si la cible par défaut est également renvoyée par le serveur de détection de la charge de requêtes, les RPC envoyés à cette cible à partir du cache sont comptabilisés dans cette métrique, et non dans grpc.rls.default_target_picks. Compteur {pick}
  • grpc.target: cible du canal gRPC dans lequel la détection de la charge de la requête est utilisée.
  • grpc.lb.rls.server_target: URI cible du serveur de détection de charge de la requête à contacter.
  • grpc.lb.rls.data_plane_target: chaîne cible utilisée par la détection de la charge de la requête pour router le trafic du plan de données. La valeur est renvoyée par le serveur de détection de la charge de la requête pour une clé spécifique ou configurée comme cible par défaut dans la configuration de la détection de la charge de la requête.
  • grpc.lb.pick_result: résultat d'un choix de LB, tel que "complete", "fail" ou "drop".
storage.googleapis.com/client/grpc/lb/rls/failed_picks Preview : nombre de choix de LB ayant échoué en raison d'une requête de détection de la charge de la requête ayant échoué ou du canal de détection de la charge de la requête ayant été limité. Compteur {pick}
  • grpc.target: cible du canal gRPC dans lequel la détection de la charge de la requête est utilisée.
  • grpc.lb.rls.server_target: URI cible du serveur de détection de charge de la requête à contacter.

Métriques client du service xDiscovery

Les métriques suivantes fournissent des insights sur la façon dont votre application cliente interagit avec le plan de contrôle du service xDiscovery (xDS) pour découvrir et configurer les connexions aux services backend. Les métriques xDS peuvent vous aider à suivre la latence des requêtes de service, à surveiller les mises à jour de configuration et à optimiser les performances globales de xDS.

Les métriques suivantes ne sont disponibles qu'avec une connectivité directe.

Métrique complète Description Type d'instrument Unité Attributs
storage.googleapis.com/client/grpc/xds_client/connected Preview. Mesure si le client xDS dispose ou non d'un flux ADS fonctionnel vers le serveur xDS. Pour un serveur donné, cette métrique est définie sur 1 lors de la création initiale du flux. En cas d'échec de la connectivité ou lorsque le flux ADS échoue sans qu'aucun message de réponse ne s'affiche conformément à A57, la métrique est définie sur 0. Une fois définie sur 0, la métrique sera réinitialisée sur 1 lorsque la première réponse sera reçue sur un flux ADS. Cette métrique n'est disponible que pour les bibliothèques clientes Cloud pour C++. Jauge {bool}
  • grpc.target: pour les clients, indique la cible du canal gRPC dans lequel XdsClient est utilisé. Pour les serveurs, il s'agit de la chaîne "#server".
  • grpc.xds.server: URI cible du serveur xDS avec lequel XdsClient communique.
storage.googleapis.com/client/grpc/xds_client/resource_updates_invalid Preview : nombre de ressources reçues considérées comme non valides. Cette métrique n'est disponible que pour les bibliothèques clientes Cloud pour C++. Compteur {resource}
  • grpc.target: pour les clients, indique la cible du canal gRPC dans lequel XdsClient est utilisé. Pour les serveurs, il s'agit de la chaîne "#server".
  • grpc.xds.server: URI cible du serveur xDS avec lequel XdsClient communique.
  • grpc.xds.resource_type: indique un type de ressource xDS, par exemple "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/resource_updates_valid Preview : nombre de ressources reçues considérées comme valides, même si elles n'ont pas changé. Cette métrique n'est disponible que pour les bibliothèques clientes Cloud pour C++. Compteur {resource}
  • grpc.target: pour les clients, indique la cible du canal gRPC dans lequel XdsClient est utilisé. Pour les serveurs, il s'agit de la chaîne "#server".
  • grpc.xds.server: URI cible du serveur xDS avec lequel XdsClient communique.
  • grpc.xds.resource_type: indique un type de ressource xDS, par exemple "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/resources Preview : nombre de ressources xDS. Cette métrique n'est disponible que pour les bibliothèques clientes Cloud pour C++. Jauge {resource}
  • grpc.target: pour les clients, indique la cible du canal gRPC dans lequel XdsClient est utilisé. Pour les serveurs, il s'agit de la chaîne "#server".
  • grpc.xds.authority: autorité xDS. La valeur sera "#old" pour les noms de ressources autres que xdstp qui ont été identifiés dans l'API xDS, avant l'introduction de la représentation URI xdstp://.
  • grpc.xds.cache_state: indique l'état du cache d'une ressource xDS.
  • grpc.xds.resource_type indique un type de ressource xDS, tel que "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/server_failure Preview : nombre de serveurs xDS qui ne fonctionnent plus correctement et sont devenus indisponibles, surchargés ou fournissent des données de configuration incorrectes ou non valides. Cette métrique n'est disponible que pour les bibliothèques clientes Cloud pour C++. Compteur {failure}
  • grpc.target: URI cible du serveur xDS avec lequel XdsClient communique.
  • grpc.xds.server: pour les clients, indique la cible du canal gRPC dans lequel XdsClient est utilisé. Pour les serveurs, il s'agit de la chaîne "#server".

Pour en savoir plus sur les métriques client xDS, consultez la documentation sur l'équilibrage de charge global basé sur xDS sur GitHub.

Désactiver les métriques côté client

Si nécessaire, vous pouvez désactiver les métriques côté client.

Java

public GrpcStorageOptions.Builder setEnableGrpcClientMetrics(false enableGrpcClientMetrics)

Pour en savoir plus, consultez la méthode GrpcStorageOptions.Builder de la classe Java des bibliothèques clientes Cloud pour les métriques client gRPC.

C++

Pour désactiver les métriques côté client pour l'API gRPC à l'aide des bibliothèques clientes Cloud pour C++, consultez la structure EnableGrpcMetricsOption.

Étape suivante