Le traçage OpenTelemetry vous permet d'identifier et de suivre la latence de diverses opérations de la bibliothèque cliente Pub/Sub, telles que le traitement par lot, la gestion des baux et le contrôle de flux. La collecte de ces informations peut vous aider à déboguer les problèmes liés à la bibliothèque cliente.
Voici quelques cas d'utilisation potentiels du traçage OpenTelemetry :
- Votre service enregistre une latence de publication plus élevée que d'habitude.
- Vous enregistrez un nombre élevé de nouvelles distributions de messages.
- Une modification de la fonction de rappel de votre client abonné entraîne un traitement plus long que d'habitude.
Avant de commencer
Avant de configurer OpenTelemetry, effectuez les tâches suivantes :
- Configurez Pub/Sub à l'aide de l'une des bibliothèques clientes.
- Installez le SDK OpenTelemetry et configurez un exportateur de trace et un fournisseur de trace.
- Activez l'API Cloud Trace.
- Découvrez comment lire les traces Cloud Observability.
Rôles requis
Pour vous assurer que le compte de service dispose des autorisations nécessaires pour exporter des traces vers Cloud Trace, demandez à votre administrateur d'accorder les rôles IAM suivants au compte de service de votre projet :
-
Tous :
Agent Cloud Trace (
roles/cloudtrace.agent)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Ces rôles prédéfinis contiennent les autorisations requises pour exporter des traces vers Cloud Trace. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour exporter des traces vers Cloud Trace :
-
Tous :
cloudtrace.traces.patch
Votre administrateur peut également attribuer au compte de service ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Workflow de traçage OpenTelemetry
Pour configurer le traçage OpenTelemetry, vous utilisez les bibliothèques clientes Pub/Sub et le SDK OpenTelemetry. Avec le SDK, vous devez configurer un exportateur de trace et un fournisseur de trace avant de vous connecter aux bibliothèques Pub/Sub. Dans certaines bibliothèques, la configuration d'un fournisseur de trace est facultative.
Exportateur de trace Le SDK OpenTelemetry utilise l'exportateur de trace pour déterminer où envoyer les traces.
Fournisseur de trace Les bibliothèques clientes Pub/Sub utilisent le fournisseur de trace pour créer des traces.
Les étapes suivantes décrivent comment configurer le traçage :
- Instanciez un exportateur OpenTelemetry Cloud Trace.
- Si nécessaire, instanciez et enregistrez un fournisseur de trace à l'aide du SDK OpenTelemetry.
- Configurez votre client avec l'option permettant d'activer le traçage OpenTelemetry.
- Utilisez les bibliothèques clientes Pub/Sub pour publier un message.
Fonctionnement du traçage
Pour chaque message publié, la bibliothèque cliente crée une trace. Cette trace représente l'intégralité du cycle de vie du message, du moment où vous le publiez jusqu'à sa confirmation. Une trace encapsule des informations telles que la durée des opérations, les segments parents et enfants, ainsi que les segments liés.
Une trace est composée d'un segment racine et de ses segments enfants correspondants. Ces segments représentent le travail effectué par la bibliothèque cliente lors du traitement d'un message. Chaque trace de message contient les éléments suivants :
- Pour la publication Contrôle de flux, planification des clés de commande, traitement par lot et durée de l'appel RPC de publication.
- Pour les abonnements Contrôle de simultanéité, planification des clés de commande et gestion des baux.
Afin de propager les informations du côté de la publication vers le côté de l'abonnement, les bibliothèques clientes injectent un attribut spécifique au traçage du côté de la publication. Le mécanisme de propagation du contexte n'est activé que lorsque le traçage est activé et qu'il est précédé du préfixe googclient_.
Publier des messages avec le traçage
L'exemple de code suivant vous montre comment activer le traçage à l'aide de la bibliothèque cliente Pub/Sub et du SDK OpenTelemetry. Dans cet exemple, les résultats du traçage sont exportés vers Cloud Trace.
Remarques
Lorsque vous instanciez le fournisseur de trace, vous configurez un taux d'échantillonnage avec le SDK OpenTelemetry. Ce taux détermine le nombre de traces que le SDK doit échantillonner. Un taux d'échantillonnage plus faible peut vous aider à réduire les coûts de facturation et à éviter que votre service ne dépasse le quota de segments Cloud Trace.
Go
C++
Python
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Python qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Python.
TypeScript
Node.js
Java
Recevoir des messages avec le traçage
Go
C++
Python
TypeScript
Node.js
Java
Analyser une trace
Les sections suivantes contiennent des informations détaillées sur la façon de suivre et d'analyser une trace dans la Google Cloud console.
Remarques
- Lorsque vous publiez un lot de messages, le segment RPC de publication est capturé dans une trace distincte.
- Un RPC de publication comporte plusieurs segments d'origine, car plusieurs appels de création peuvent entraîner un RPC de publication lorsqu'ils sont regroupés.
Les segments dans OpenTelemetry peuvent avoir zéro ou un segment parent.
Les segments représentant des opérations par lot, telles que publish batch, (qui devraient logiquement avoir plusieurs parents) ne peuvent pas être représentés à l'aide de zéro ou d'un segment parent.
Suivre les segments créés pendant le cycle de vie du message
L'image suivante montre un exemple de segments créés dans une seule trace pour un seul message.

Chaque segment peut avoir des attributs supplémentaires. Les attributs de segment transmettent des métadonnées supplémentaires telles que la clé de commande du message, l'ID du message et la taille du message.

Les principaux segments de publication et d'abonnement sont augmentés par des événements de segment qui correspondent au moment où un appel réseau est émis et à celui où il est terminé.

Résoudre les problèmes courants
Les problèmes suivants peuvent entraîner des problèmes de traçage :
- Le compte de service que vous utilisez pour exporter des traces ne dispose pas du rôle
roles/cloudtrace.agentrequis. - Le quota du nombre maximal de segments ingérés dans Cloud Trace a été atteint.
- Votre application est arrêtée sans appeler la fonction de vidage appropriée.