Trazabilidad distribuida
Siga las solicitudes entre servicios con Activity.
Trazabilidad distribuida es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 4 lecciones en total.
¿Qué es el rastreo distribuido?
El rastreo distribuido sigue una solicitud mientras atraviesa servicios y componentes. Cada unidad de trabajo se convierte en un span, y los spans conectados forman una traza, que se visualiza como una línea de tiempo de operaciones anidadas.
Spans y trazas
Un span tiene un nombre, una hora de inicio y otra de finalización, atributos y un estado. Los spans se anidan: un span principal (la solicitud HTTP) contiene spans secundarios (una consulta a la base de datos, una llamada saliente). Todo el árbol comparte un único identificador de traza.
Activity es el span de .NET
En .NET, la clase System.Diagnostics.Activity es la implementación de un span de OpenTelemetry. Las actividades se crean a partir de un ActivitySource.
using System.Diagnostics;
private static readonly ActivitySource Source =
new("Checkout.Orders");Iniciar una actividad
StartActivity inicia un span. Envuélvalo en un using para que finalice (y registre su duración) cuando termine el bloque.
using Activity activity = Source.StartActivity("PlaceOrder");
// work happens here; span ends when disposedAñadir etiquetas a un span
Las etiquetas (atributos) asocian contexto de clave-valor a un span, como el identificador o el importe de un pedido, para que las trazas se puedan buscar y resulten significativas.
activity?.SetTag("order.id", orderId);
activity?.SetTag("order.amount", amount);Registrar eventos y estados
Utilice AddEvent para las anotaciones puntuales y SetStatus para marcar el éxito o el fallo, lo que permite detectar los errores en su backend de trazas.
activity?.AddEvent(new ActivityEvent("inventory.reserved"));
activity?.SetStatus(ActivityStatusCode.Error, "Payment declined");Registrar ActivitySource
OTel solo recopila las actividades de los orígenes que registra con AddSource, por lo que debe indicar al rastreador el nombre de su ActivitySource.
builder.Services.AddOpenTelemetry()
.WithTracing(tracing => tracing
.AddSource("Checkout.Orders"));Instrumentación automática
La instrumentación integrada crea automáticamente spans para las solicitudes entrantes de ASP.NET Core y las llamadas salientes de HttpClient, de modo que obtiene una traza básica sin escribir código.
tracing
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation();Propagación de contexto
Para que una traza abarque varios servicios, el identificador de traza debe viajar entre ellos. OTel lo inyecta en las cabeceras HTTP salientes (traceparent de W3C) y lo lee en el extremo receptor, uniendo automáticamente los spans en una sola traza.
Relaciones entre elementos principales y secundarios
Cuando inicia una actividad mientras otra es la actual, la nueva se convierte en su elemento secundario mediante Activity.Current. Este anidamiento construye el árbol de la traza sin conexiones manuales.
using var parent = Source.StartActivity("PlaceOrder");
using var child = Source.StartActivity("ChargeCard");
// child is nested under parent automaticallyMuestreo
Rastrear cada solicitud puede resultar costoso. El muestreo registra solo una parte (por ejemplo, el 10 %) para controlar el coste y conservar datos representativos.
Comprobación rápida
Compruebe el rastreo distribuido.
Resumen
El rastreo distribuido sigue una solicitud mediante spans conectados que comparten un identificador de traza. En .NET, Activity es el span, creado a partir de un ActivitySource registrado mediante StartActivity (utilice using para finalizarlo). Añada contexto con SetTag, AddEvent y SetStatus. La instrumentación automática y la propagación de contexto de W3C unen las trazas entre servicios; el muestreo controla el coste.
Preguntas frecuentes
¿La lección «Trazabilidad distribuida» es gratis?
Sí — el texto completo de «Trazabilidad distribuida» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Trazabilidad distribuida»?
Siga las solicitudes entre servicios con Activity. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C# Academy?
No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Trazabilidad distribuida»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C# Academy?
Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Los tres pilares de la observabilidad
- Trazabilidad distribuida
- Recopilación de métricas
- Exportación a backends