0Pricing
C# Academy · Lezione

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 disposed

Aggiungere 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 automatically

Campionamento

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

  1. I tre pilastri dell'osservabilità
  2. Tracing distribuito
  3. Raccolta delle metriche
  4. Esportazione verso i backend
← Torna a C# Academy