Traçage distribué
Suivez les requêtes entre les services avec Activity.
Traçage distribué est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.
Qu’est-ce que le traçage distribué ?
Le traçage distribué suit une requête lorsqu’elle traverse plusieurs services et composants. Chaque unité de travail devient une étendue, et les étendues reliées forment une trace, visualisée sous la forme d’une chronologie d’opérations imbriquées.
Étendues et traces
Une étendue possède un nom, une heure de début et de fin, des attributs et un état. Les étendues s’imbriquent : une étendue parent (la requête HTTP) contient des étendues child (une requête de base de données, un appel sortant). Un même identifiant de trace est partagé par tout l’arbre.
L’activité est l’étendue de .NET
Dans .NET, la classe System.Diagnostics.Activity implémente une étendue OpenTelemetry. Vous créez des activités à partir d’une ActivitySource.
using System.Diagnostics;
private static readonly ActivitySource Source =
new("Checkout.Orders");Démarrer une activité
StartActivity démarre une étendue. Entourez-le d’un using afin qu’elle se termine (et enregistre sa durée) à la sortie du bloc.
using Activity activity = Source.StartActivity("PlaceOrder");
// work happens here; span ends when disposedAjouter des étiquettes à une étendue
Les étiquettes (attributs) associent à une étendue un contexte clé-valeur, comme un identifiant de commande ou un montant, ce qui rend les traces faciles à rechercher et plus pertinentes.
activity?.SetTag("order.id", orderId);
activity?.SetTag("order.amount", amount);Enregistrer des événements et un état
Utilisez AddEvent pour les annotations ponctuelles et SetStatus pour indiquer une réussite ou un échec, ce qui fait apparaître les erreurs dans votre système de traçage.
activity?.AddEvent(new ActivityEvent("inventory.reserved"));
activity?.SetStatus(ActivityStatusCode.Error, "Payment declined");Enregistrer la source d’activité
OpenTelemetry ne collecte les activités que depuis les sources que vous enregistrez avec AddSource ; vous devez donc indiquer au traceur le nom de votre ActivitySource.
builder.Services.AddOpenTelemetry()
.WithTracing(tracing => tracing
.AddSource("Checkout.Orders"));Instrumentation automatique
L’instrumentation intégrée crée automatiquement des étendues pour les requêtes ASP.NET Core entrantes et les appels HttpClient sortants. Vous obtenez ainsi une trace de base sans écrire de code.
tracing
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation();Propagation du contexte
Pour qu’une trace s’étende sur plusieurs services, l’identifiant de trace doit circuler entre eux. OpenTelemetry l’insère dans les en-têtes HTTP sortants (W3C traceparent) et le lit à la réception, ce qui relie automatiquement les étendues au sein d’une même trace.
Relations parent et child
Lorsque vous démarrez une activité alors qu’une autre est active, la nouvelle devient son élément child via Activity.Current. Cette imbrication construit l’arbre de la trace sans câblage manuel.
using var parent = Source.StartActivity("PlaceOrder");
using var child = Source.StartActivity("ChargeCard");
// child is nested under parent automaticallyÉchantillonnage
Tracer chaque requête peut coûter cher. L’échantillonnage n’enregistre qu’une partie des requêtes (par exemple 10 %) afin de maîtriser les coûts tout en conservant des données représentatives.
Vérification rapide
Testez le traçage distribué.
Récapitulatif
Le traçage distribué suit une requête sous la forme d’étendues reliées qui partagent un identifiant de trace. Dans .NET, Activity représente l’étendue, créée à partir d’une ActivitySource enregistrée via StartActivity (utilisez using pour la terminer). Ajoutez du contexte avec SetTag, AddEvent et SetStatus. L’instrumentation automatique et la propagation du contexte W3C relient les traces entre les services ; l’échantillonnage maîtrise les coûts.
Questions Fréquemment Posées
La leçon « Traçage distribué » est-elle gratuite ?
Oui — le texte complet de « Traçage distribué » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Traçage distribué » ?
Suivez les requêtes entre les services avec Activity. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C# Academy ?
Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Traçage distribué » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?
Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Les trois piliers de l’observabilité
- Traçage distribué
- Collecter des métriques
- Exporter vers des systèmes principaux