Ce que vous allez apprendre dans ce TP
- Créer des spans avec le SDK
- Signaler erreurs, événements et liens
- Interroger avec TraceQL et échantillonner
Introduction #
Ce que vous allez apprendre dans cette section
- Créer des spans avec le SDK
- Signaler erreurs, événements et liens
- Interroger avec TraceQL et échantillonner
Contexte. Le service de commandes n'a aucune bibliothèque auto-instrumentée pour sa logique métier. Vous l'instrumentez à la main pour voir les étapes d'une commande, ses erreurs de paiement et ses traitements par lots.
Prérequis : Docker et Python 3.10 ou plus ; la pile grafana/otel-lgtm (Collector, Tempo, Loki, Prometheus, Pyroscope et Grafana dans un seul conteneur) · Durée estimée : 50 min
Mise en place #
Étapes guidées, avec leur correction.
1. Démarrer la pile d'observabilité
Pourquoi ? Une seule image fournit un Collector OTLP et tous les backends : on se concentre sur le signal.
Lancezgrafana/otel-lgtm, créez un environnement Python et pointez les exportateurs vers le port OTLP/HTTP 4318.2. Initialiser le SDK
Pourquoi ? Le TracerProvider porte la ressource et l'exportateur ; le BatchSpanProcessor envoie par lots.
Installez le SDK et l'exportateur OTLP/HTTP, puis écrivezotel_setup.pyqui configure la ressource (service.name,service.version,deployment.environment.name) et l'export.3. Créer une trace métier
Pourquoi ? Des spans nommés par étape, avec SpanKind et attributs conformes aux conventions, rendent la trace lisible par tous les outils.
Écrivezcommande.py: un span racinetraiter commandeet trois enfants (stock en CLIENT avec attributs de base de données, calcul, paiement), un événement, et une erreur de paiement une fois sur trois avecrecord_exceptionet statut ERROR.4. Explorer et interroger avec TraceQL
Pourquoi ? TraceQL filtre sur la structure et les attributs des spans : on trouve en une requête les traces qui comptent.
Dans Grafana, ouvrez Explore > Tempo. Exécutez les requêtes ci-dessous, ouvrez une trace en erreur et retrouvez l'événement et l'exception du spanpayer.5. Relier un traitement par lots avec des liens
Pourquoi ? Un lot qui traite des éléments venant de plusieurs traces ne peut pas avoir plusieurs parents : on utilise des liens.
Écrivezlot.py: trois traces « réception » indépendantes, puis un spanfacturer lotlié aux trois. Retrouvez les liens dans le détail du span.6. Échantillonner
Pourquoi ? L'échantillonnage par ratio réduit le volume ; parentbased garantit qu'une trace est gardée ou jetée en entier.
Relancezcommande.pyavec un échantillonnage à 20 % et comparez le nombre de traces reçues ; vérifiez qu'aucune trace n'est partielle. Expliquez pourquoi le tail sampling du Collector serait préférable pour garder toutes les erreurs.
Niveau de difficulté : ●●●○○ (3/5)
Mon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
Articles recommandés
RUM et Synthetic Monitoring avec Datadog : synthetic transaction monitoring et expérience utilisateur
Mesurer l'expérience utilisateur avec Datadog : RUM navigateur et mobile, Core Web Vitals, Sessio...
Infrastructure avancée avec Datadog : réseau, cloud, conteneurs et bases de données
Superviser l'infrastructure au-delà des hôtes : Network Performance Monitoring, intégrations AWS,...
Sécurité avec Datadog : Cloud SIEM, Cloud Security et protection des applications
Découvrir les produits de sécurité de Datadog : Cloud SIEM et règles de détection, Cloud Security...
Incidents et automatisation avec Datadog : On-Call, Incident Management et Workflow Automation
Gérer les incidents dans Datadog : monitors bien conçus, astreinte avec On-Call, déclaration et s...
Coûts et gouvernance Datadog : usage, attribution, RBAC et politiques de tags
Maîtriser la facture et gouverner Datadog : suivi de l'usage et de l'estimation, attribution des ...
ActiveGate et network zones : architecture, routage et haute disponibilité
Comprendre et déployer ActiveGate dans Dynatrace : rôles (routage, API, intégrations cloud, exten...
Dynatrace Operator sur Kubernetes : DynaKube, modes de supervision et dépannage
Superviser Kubernetes avec le Dynatrace Operator : installation Helm, ressource DynaKube, modes c...
OpenTelemetry et Dynatrace : OTLP, collecteur et instrumentation
Intégrer OpenTelemetry à Dynatrace : endpoint OTLP et jetons, Dynatrace OTel Collector, traces, m...
Logs avancés avec OpenPipeline : traitement, masquage, buckets et rétention
Gérer les logs dans Dynatrace avec OpenPipeline : ingestion, routage, traitement DQL (parsing, en...