Dépannage

Cette page contient des informations de dépannage pour Trace.

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:

  1. Activez l'API requise.

    Activer l'API

  2. Dans la console Google Cloud, accédez à la page API et services:

    Accéder à 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'autorisation cloudtrace.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 de 0.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, à savoir parentbased_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 sur true. 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.