Tracing distribuito
Tracci le richieste tra i servizi con Activity.
Tracing distribuito è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 4 lezioni in totale.
Che cos'è il tracing distribuito
Il tracing distribuito segue una richiesta mentre attraversa servizi e componenti. Ogni unità di lavoro diventa uno span e gli span collegati formano una trace, visualizzata come una sequenza temporale di operazioni annidate.
Span e trace
Uno span ha un nome, un'ora di inizio e una di fine, attributi e uno stato. Gli span sono annidati: uno span padre (la richiesta HTTP) contiene span figli (una query al database, una chiamata in uscita). Un intero albero condivide un trace id.
Activity è lo span di .NET
In .NET, la classe System.Diagnostics.Activity è l'implementazione di uno span OpenTelemetry. Le activity vengono create a partire da un ActivitySource.
using System.Diagnostics;
private static readonly ActivitySource Source =
new("Checkout.Orders");Avviare un'Activity
StartActivity avvia uno span. Lo racchiuda in un using, così terminerà (registrando la propria durata) quando il blocco verrà chiuso.
using Activity activity = Source.StartActivity("PlaceOrder");
// work happens here; span ends when disposedAggiungere tag a uno span
I tag (attributi) associano a uno span un contesto composto da chiavi e valori, come l'ID o l'importo di un ordine, rendendo le trace ricercabili e significative.
activity?.SetTag("order.id", orderId);
activity?.SetTag("order.amount", amount);Registrare eventi e stato
Usi AddEvent per le annotazioni relative a un preciso istante e SetStatus per indicare un esito positivo o negativo, così gli errori saranno evidenziati nel backend di tracing.
activity?.AddEvent(new ActivityEvent("inventory.reserved"));
activity?.SetStatus(ActivityStatusCode.Error, "Payment declined");Registrare ActivitySource
OTel raccoglie le activity solo dalle source registrate con AddSource, quindi comunichi al tracer il nome di ActivitySource.
builder.Services.AddOpenTelemetry()
.WithTracing(tracing => tracing
.AddSource("Checkout.Orders"));Strumentazione automatica
La strumentazione integrata crea automaticamente span per le richieste ASP.NET Core in entrata e le chiamate HttpClient in uscita, offrendo una trace di base senza dover scrivere codice.
tracing
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation();Propagazione del contesto
Perché una trace attraversi più servizi, il trace id deve viaggiare dall'uno all'altro. OTel lo inserisce negli header HTTP in uscita (traceparent W3C) e lo legge all'estremità ricevente, collegando automaticamente gli span in un'unica trace.
Relazioni padre-figlio
Quando avvia un'activity mentre un'altra è quella corrente, la nuova diventa figlia della precedente tramite Activity.Current. Questo annidamento costruisce l'albero della trace senza collegamenti manuali.
using var parent = Source.StartActivity("PlaceOrder");
using var child = Source.StartActivity("ChargeCard");
// child is nested under parent automaticallyCampionamento
Il tracing di ogni richiesta può essere costoso. Il campionamento registra solo una parte delle richieste (ad esempio il 10%), contenendo i costi e mantenendo dati rappresentativi.
Verifica rapida
Verifichi il tracing distribuito.
Riepilogo
Il tracing distribuito segue una richiesta attraverso span collegati che condividono un trace id. In .NET, Activity è lo span, creato da un ActivitySource registrato tramite StartActivity (usi using per terminarlo). Aggiunga il contesto con SetTag, AddEvent e SetStatus. La strumentazione automatica e la propagazione del contesto W3C collegano le trace tra i servizi; il campionamento consente di controllare i costi.
Domande Frequenti
La lezione «Tracing distribuito» è gratuita?
Sì — il testo completo di «Tracing distribuito» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 4 lezioni in totale.
Cosa imparerò in «Tracing distribuito»?
Tracci le richieste tra i servizi con Activity. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C# Academy?
Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Tracing distribuito»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C# Academy?
Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- I tre pilastri dell'osservabilità
- Tracing distribuito
- Raccolta delle metriche
- Esportazione verso i backend