Aucune donnée dans l'interface Trace
Si vous ne parvenez pas à afficher les traces dans votre projet Google Cloud alors que vous pensez qu'elles sont présentes, procédez comme suit:
-
Enable the Cloud Trace API.
Dans la console Google Cloud, accédez à la page API et services:
Une fois que vous avez trouvé la ligne intitulée API Cloud Trace, procédez comme suit:
Si la colonne Requêtes ne contient 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 vos proxys pour vous assurer qu'ils sont configurés pour envoyer les traces au bon projet.
Sélectionnez API Cloud Trace, l'onglet Métriques, puis le graphique intitulé Erreurs par méthode API:
Si les écritures échouent, attribuez 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 span dans un projet Google Cloud.Pour en savoir plus, consultez la section Rôles IAM 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 associées à 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 des traces. Après avoir mis à jour 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 un pont OpenCensus. Pour en savoir plus sur le problème résolu par le pont, consultez la page OpenCensus Bridge.
Pour en savoir plus sur la mise à jour de la bibliothèque cliente Google pour Go, consultez l'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 Trace de la console Google Cloud, suivez les étapes décrites 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 compte de service a reçu le rôle d'agent Cloud Trace (
roles/cloudtrace.agent
).Ce rôle inclut l'autorisation
cloudtrace.traces.patch
, qui permet aux applications d'écrire des données span 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 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 intervalle est héritée de son intervalle parent, le cas échéant. Si une étendue parente n'existe pas, l'étendue est échantillonnée.
Sauf si votre application échantillonne toujours chaque étendue, 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 d'échantillonnage. Toutefois, vous pouvez influencer la décision en ajoutant à l'en-tête de trace un indicateur
sampled
, avec cet indicateur défini surtrue
. Ce paramètre est un indice pour les composants enfants d'échantillonner la requête. Pour en savoir plus sur les en-têtes de trace, consultez la section Protocoles de propagation du contexte.
Message d'ID de span manquant dans la trace
Votre trace contient un message "ID de span manquant".
Dans les systèmes de traçage distribué, des traces incomplètes sont attendues. Une trace est incomplète lorsqu'une étendue échantillonnée contient une référence à une autre étendue qui n'a pas été reçue. La référence non résolue peut se produire pour les raisons suivantes:
- L'intervalle 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 span manquant" dans le volet "Détails de la trace".
Si le message "ID de span manquant" s'affiche de manière récurrente, 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 est un indice pour les composants enfants d'échantillonner la requête. Pour en savoir plus sur les en-têtes de trace, consultez la section Protocoles de propagation du contexte.Les services Google Cloud respectent généralement cette indication. Toutefois, ils limitent également la fréquence à laquelle ils écrivent des données de trace.
Si vous utilisez Cloud Service Mesh, veillez à suivre les conseils de propagation du contexte de trace pour ces configurations. Pour obtenir des conseils sur Cloud Service Mesh, consultez la section Propagation du contexte de trace.