Aucune donnée dans l'interface Trace
Si vous ne pouvez afficher aucune trace dans votre projet Google Cloud alors que vous pensez que des données de trace sont présentes, 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, essayez ce qui suit:
Si la colonne intitulée Requêtes ne répertorie aucune information numérique, aucune donnée de trace n'est envoyée à votre projet Google Cloud.
Pour résoudre ce problème, vérifiez vos applications et proxys pour vous assurer qu'ils sont configurés pour envoyer les traces au bon projet.
Sélectionnez API Cloud Trace, sélectionnez l'onglet Métriques, puis recherchez le graphique intitulé Erreurs par méthode API:
Si les écritures échouent, accordez au compte de service qui fournit les identifiants d'authentification le rôle 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 de ce rôle, consultez la page Rôles IAM 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 les traces. Après la mise à jour de votre application pour qu'elle utilise OpenTelemetry, vous ne voyez plus les données Cloud Trace.
Étant donné que certaines bibliothèques clientes Google pour Go sont intégrées à OpenCensus, vous devez utiliser OpenCensus Bridge. Pour en savoir plus sur le problème résolu par le pont, consultez la section OpenCensus des ponts.
Pour en savoir plus sur la mise à jour de la bibliothèque cliente Google pour Go, consultez le problème 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, mais 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 les étapes de la section intitulée 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 compte de service dispose du rôle Agent Cloud Trace (
roles/cloudtrace.agent
).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 afin 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, laissez la variable d'environnement
OTEL_TRACES_SAMPLER
non définie afin d'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 délai parent, le cas échéant. Si aucun segment parent n'existe, il est échantillonné.
À moins que votre application n'échantillonne toujours chaque délai, il n'est généralement pas possible de forcer le traçage d'une requête de bout en bout, car chaque composant d'une requête de bout en bout prend sa propre décision concernant l'échantillonnage. Toutefois, vous pouvez influencer la décision en ajoutant à l'en-tête de trace une option
sampled
, que vous définissez surtrue
. Ce paramètre indique aux composants enfants comment échantillonner la requête. Pour en savoir plus sur les en-têtes de trace, consultez la section Protocoles pour la propagation contextuelle.
Message d'ID de segment manquant dans la trace
Votre trace contient le message "ID de délai 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 il a été reçu, mais pas stocké.
Lorsque vous affichez une trace incomplète, Cloud Trace affiche le message "ID de délai manquant" dans le volet "Détails de la trace".
Si le message "ID de délai manquant" s'affiche systématiquement, procédez comme suit:
Pour les composants que vous gérez, assurez-vous qu'ils respectent et propagent l'option
sampled
de l'en-tête, lorsque ce champ est présent. Ce paramètre indique aux composants enfants comment échantillonner la requête. Pour en savoir plus sur les en-têtes de trace, consultez la section Protocoles pour la propagation contextuelle.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 Cloud Service Mesh, veillez à suivre les instructions pour propager le contexte de trace pour ces configurations. Pour obtenir des conseils sur Cloud Service Mesh, consultez la page Propagation du contexte de trace.