Lo que vas a aprender en este TP
- Crear spans con el SDK
- Señalar errores, eventos y enlaces
- Consultar con TraceQL y muestrear
Introducción #
Lo que vas a aprender en esta sección
- Crear spans con el SDK
- Señalar errores, eventos y enlaces
- Consultar con TraceQL y muestrear
Contexto. El servicio de pedidos no tiene ninguna biblioteca auto-instrumentada para su lógica de negocio. Lo instrumentas a mano para ver las etapas de un pedido, sus errores de pago y sus procesos por lotes.
Requisitos previos: Docker y Python 3.10 o superior; la pila grafana/otel-lgtm (Collector, Tempo, Loki, Prometheus, Pyroscope y Grafana en un solo contenedor) · Duración estimada: 50 min
Puesta en práctica #
Pasos guiados, con su corrección.
1. Arrancar la pila de observabilidad
¿Por qué? Una sola imagen proporciona un Collector OTLP y todos los backends: nos centramos en la señal.
Lanzagrafana/otel-lgtm, crea un entorno Python y apunta los exportadores al puerto OTLP/HTTP 4318.2. Inicializar el SDK
¿Por qué? El TracerProvider lleva el recurso y el exportador; el BatchSpanProcessor envía por lotes.
Instala el SDK y el exportador OTLP/HTTP y escribeotel_setup.py, que configura el recurso (service.name,service.version,deployment.environment.name) y la exportación.3. Crear una traza de negocio
¿Por qué? Spans con el nombre de cada etapa, con SpanKind y atributos conformes a las convenciones, hacen la traza legible por todas las herramientas.
Escribecommande.py: un span raíztraiter commandey tres hijos (stock como CLIENT con atributos de base de datos, cálculo, pago), un evento y un error de pago una vez de cada tres conrecord_exceptiony estado ERROR.4. Explorar y consultar con TraceQL
¿Por qué? TraceQL filtra por la estructura y los atributos de los spans: una consulta encuentra las trazas importantes.
En Grafana, abre Explore > Tempo. Ejecuta las consultas siguientes, abre una traza con error y encuentra el evento y la excepción del spanpayer.5. Vincular un proceso por lotes con enlaces
¿Por qué? Un lote que procesa elementos de varias trazas no puede tener varios padres: se usan enlaces.
Escribelot.py: tres trazas «recepción» independientes y luego un spanfacturer lotenlazado a las tres. Encuentra los enlaces en el detalle del span.6. Muestrear
¿Por qué? El muestreo por ratio reduce el volumen; parentbased garantiza que una traza se conserve o se descarte entera.
Vuelve a lanzarcommande.pycon un muestreo del 20 % y compara el número de trazas recibidas; comprueba que ninguna traza está incompleta. Explica por qué el tail sampling del Collector sería preferible para conservar todos los errores.
Nivel de dificultad : ●●●○○ (3/5)
Mi seguimiento
Inicia sesión para seguir tu progreso y tomar notas. Iniciar sesión
Artículos recomendados
Les traces OpenTelemetry en profondeur : spans, statuts, événements, liens et échantillonnage
Maîtriser le signal trace : anatomie d'une trace distribuée, span et SpanKind, attributs, statut ...
Tracing distribué : la propagation du contexte (W3C Trace Context et baggage)
Comprendre et mettre en œuvre la propagation de contexte OpenTelemetry : en-tête traceparent, tra...
Grafana Alloy: Perfilado Continuo con Pyroscope
Descubra cómo configurar el perfilado continuo (Continuous Profiling) en sus entornos utilizando ...