Aucune donnée dans l'interface Trace
Si vous ne pouvez afficher aucune trace dans votre projet Google Cloud alors que vous prévoyez des données de trace, procédez comme suit:
-
Activez l'API requise.
Dans la console Google Cloud, accédez à la page API et services:
Après avoir trouvé la ligne intitulée API Cloud Trace, procédez comme suit:
Si la colonne intitulée Requests (Requêtes) ne contient aucune information numérique, cela signifie qu'aucune donnée de trace n'est envoyée à votre projet Google Cloud.
Pour résoudre ce problème, vérifiez vos applications et vos proxys pour vous assurer qu'ils sont configurés pour envoyer les traces au bon projet.
Sélectionnez API Cloud Trace, cliquez sur l'onglet Métriques, puis recherchez le graphique intitulé Erreurs par méthode API:
En cas d'échec des écritures, accordez au compte de service qui fournit les identifiants d'authentification le rôle d'agent Cloud Trace (
roles/cloudtrace.agent
). Ce rôle inclut l'autorisationcloudtrace.traces.patch
, qui permet aux applications d'écrire des données de segments dans un projet Google Cloud.Pour en savoir plus, consultez la page Rôles IAM de Cloud Trace.
Si les lectures échouent, assurez-vous que votre rôle IAM sur le projet Google Cloud inclut les autorisations du rôle Utilisateur Cloud Trace (
roles/cloutrace.user
). Pour obtenir la liste des autorisations pour ce rôle, consultez la section Rôles IAM de Cloud Trace.
Aucune donnée de trace après la mise à jour de l'application Go pour utiliser OpenTelemetry
Votre application s'appuie sur la bibliothèque cliente pour capturer des traces. Après l'avoir mise à jour pour utiliser OpenTelemetry, les données Cloud Trace ne s'affichent plus.
Étant donné que certaines bibliothèques clientes Google pour Go sont intégrées à OpenCensus, vous devez utiliser un pont OpenCensus. Pour en savoir plus sur le problème résolu par le pont, consultez la section OpenCensus Bridge.
Pour plus d'informations sur la mise à jour de la bibliothèque cliente Google pour Go, consultez le problème n° 4237.
Aucune donnée de trace pour l'application déployée
Vous avez déployé une application qui envoie des données à votre projet Google Cloud à l'aide de l'API Cloud Trace. Cependant, les données de trace ne sont pas collectées.
Essayez d'exécuter les commandes suivantes :
Si aucune donnée ne s'affiche sur la page Explorateur de traces de la console Google Cloud, suivez la procédure décrite dans la section Aucune donnée dans l'interface Trace.
Si l'application n'est pas déployée sur Google Cloud ou si elle utilise un compte de service pour fournir des identifiants d'authentification, assurez-vous que le rôle d'agent Cloud Trace (
roles/cloudtrace.agent
) a été attribué au compte de service.Ce rôle inclut l'autorisation
cloudtrace.traces.patch
, qui permet aux applications d'écrire des données de segments dans un projet Google Cloud.Si l'application repose sur OpenTelemetry, procédez comme suit:
Pour le service racine, essayez de mettre à jour vos variables d'environnement de sorte qu'OpenTelemetry utilise l'échantillonneur
traceidratio
avec un taux d'échantillonnage de0.5
:export OTEL_TRACES_SAMPLER="traceidratio" export OTEL_TRACES_SAMPLER_ARG="0.5"
Pour tous les autres services, ne définissez pas la variable d'environnement
OTEL_TRACES_SAMPLER
pour utiliser l'échantillonneur par défaut, à savoirparentbased_always_on
. Le paramètre par défaut signifie que la décision d'échantillonnage d'un segment est héritée de son segment parent, le cas échéant. Si aucun segment parent n'existe, il est échantillonné.
À moins que votre application n'échantillonne toujours pas tous les segments, il n'est généralement pas possible de forcer le traçage de bout en bout d'une requête, car chaque composant d'une requête de bout en bout prend sa propre décision d'échantillonnage. Toutefois, vous pouvez influencer la décision en ajoutant à l'en-tête de trace une option
sampled
, avec cette option définie surtrue
. Ce paramètre donne aux composants enfants une indication pour échantillonner la requête. Pour en savoir plus sur les en-têtes de trace, consultez la page Protocoles pour la propagation du contexte.
Message d'ID de segment manquant dans la trace
Votre trace contient le message "ID de segment manquant".
Dans les systèmes de traçage distribués, des traces incomplètes sont attendues. Une trace est incomplète lorsqu'un délai échantillonné contient une référence à un autre délai non reçu. La référence non résolue peut se produire pour les raisons suivantes:
- Le segment référencé n'a pas été échantillonné.
- Le délai référencé a été échantillonné, mais n'a pas encore été reçu par Cloud Trace, ou bien il a été reçu, mais n'a pas encore été stocké.
Lorsque vous consultez une trace incomplète, Cloud Trace affiche le message "ID de délai manquant" dans le volet des détails de la trace.
Si le message "ID de segment manquant" s'affiche systématiquement, procédez comme suit:
Pour les composants que vous gérez, assurez-vous qu'ils respectent et propagent l'indicateur
sampled
de l'en-tête lorsque ce champ est présent. Ce paramètre donne aux composants enfants une indication pour échantillonner la requête. Pour en savoir plus sur les en-têtes de trace, consultez la page Protocoles pour la propagation du contexte.Les services Google Cloud respectent généralement cet indice. Cependant, ils limitent également la vitesse à laquelle ils écrivent des données de trace.
Si vous utilisez Anthos Service Mesh, assurez-vous de suivre les instructions pour propager le contexte de trace pour ces configurations. Pour obtenir des conseils sur Anthos Service Mesh, consultez la section Propagation du contexte de trace.