Aller au contenu

TechniquePratique

Explorateur de traces

Pour : ingénieurs et SREPrérequis : Notions de base sur les traces distribuées.

Mode de lecture

Un tableau de bord dit qu’une requête est lente ou en erreur ; une trace dit où et pourquoi. Elle découpe une requête en spans imbriqués, chacun avec sa durée, son statut et ses attributs. Les trois traces ci-dessous sont construites à la main selon les conventions sémantiques OpenTelemetry, dans leur état du 2 octobre 2026 (conventions GenAI du dépôt semantic-conventions-genai, encore au statut Development et conventions MCP pour la version de protocole 2025-06-18). La version 2026-07-28 de MCP supprime les sessions ; ces traces gardent 2025-06-18, version de l’exemple de la convention. Une exception, assumée : les spans evaluate sont un choix applicatif hors convention ; les scores, eux, sont portés par l’événement gen_ai.evaluation.result que prévoit la convention. Deux traces concernent un agent RAG, la troisième une validation de commande classique, pour montrer que la méthode de lecture est la même avec ou sans IA.

Durée totale
Spans
Erreurs, scores faibles
Jetons LLM
Cascade des spansCliquez sur un span ou appuyez sur Entrée pour afficher son détail ; flèches haut et bas pour passer d’un span à l’autre.
Racine, agentModèle (LLM, embeddings)Recherche, rerankingOutil, MCPÉvaluationHTTPBase de données

Contour rouge : span en erreur. Contour ambre : évaluation sous son seuil. Repère « clé » dans le détail : attribut à regarder.

    Ce que cette trace raconte

    Traces construites à la main pour l'exemple, au format simplifié (temps en millisecondes relatives au début de la trace). Les attributs suivent les conventions sémantiques OpenTelemetry ; celles de l'IA générative, de MCP et de l'évaluation sont encore en développement et peuvent évoluer. Les attributs préfixés app. sont propres à l'application. Les spans « evaluate » sont un choix applicatif hors convention : la convention ne définit pas de span d'évaluation, elle porte les scores dans l'événement gen_ai.evaluation.result, à rattacher de préférence au span de l'opération évaluée, sinon par gen_ai.response.id ; ici, il est placé dans le span applicatif.

    1. Lire la référence : sur la trace nominale, repérez les deux appels chat au modèle. Ils représentent l’essentiel de la durée ; comparez leurs gen_ai.usage.input_tokens à ceux de l’appel d’embeddings.
    2. Trouver l’échec silencieux : passez à la trace « échec silencieux ». Aucune erreur, statut HTTP 200, requête plus rapide. Seule l’évaluation de fidélité est marquée « score faible » : ouvrez-la, son événement gen_ai.evaluation.result porte le score de 0,34. Cliquez ensuite sur query kb_support_fr puis sur invoke_agent : app.retrieval.top_k vaut 1 et l’événement app.config.loaded donne la version de configuration fautive.
    3. Comparer les jetons : la tuile « Jetons LLM » passe d’environ 9 000 à 2 600. Sur un tableau de bord de coût, l’incident ressemble à une optimisation réussie.
    4. Sortir de l’IA : sur la trace e-commerce, naviguez au clavier (flèches haut et bas) jusqu’au span en erreur. Le délai d’attente de 3 s, puis la nouvelle tentative (http.request.resend_count), expliquent les 4,3 s ressenties par le client.
    • La durée se lit de haut en bas, la cause dans les attributs. La cascade montre où passe le temps ; les attributs et les événements disent pourquoi. Une trace sans attributs métier (version de configuration, top_k, clé d’idempotence) ne permet pas de conclure.
    • Un statut OK ne veut pas dire une bonne réponse. Pour un système génératif, l’évaluation doit être rattachée à la trace : sinon l’échec silencieux reste invisible. La convention prévoit pour cela l’événement gen_ai.evaluation.result, rattaché à l’opération évaluée ou, à défaut, à sa réponse par gen_ai.response.id ; ici, chaque événement est placé dans un span d’évaluation applicatif, ce qui rend la durée de l’évaluation visible dans la cascade.
    • Attention aux homonymes. gen_ai.request.top_k désigne l’échantillonnage du modèle, pas le nombre de passages récupérés : c’est pourquoi la trace utilise un attribut applicatif app.retrieval.top_k.

    Pour aller plus loin : les conventions GenAI dans la formation observabilité des LLM, les trois dérives d’un système RAG dans le module dédié, les SLO de qualité dans la méthode GenAI et la pile qui transporte ces traces dans l’architecture cliquable.

    Révisé le 2 octobre 2026 : les scores d’évaluation passent dans l’événement gen_ai.evaluation.result de la convention, les spans d’évaluation sont signalés comme un choix applicatif et chaque trace indique sa date de construction et la version des conventions suivies.