RousselTMLEARNING

TP · Opentelemetry : de la découverte à l'expertise

TP : Instrumenter des traces à la main (spans, événements, erreurs, liens, échantillonnage)

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

Des traces riches et interrogeables, et un échantillonnage maîtrisé.

Mise en place #

Étapes guidées, avec leur correction.

  1. 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.

    Lancez grafana/otel-lgtm, créez un environnement Python et pointez les exportateurs vers le port OTLP/HTTP 4318.
  2. 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 écrivez otel_setup.py qui configure la ressource (service.name, service.version, deployment.environment.name) et l'export.
  3. 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.

    Écrivez commande.py : un span racine traiter commande et 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 avec record_exception et statut ERROR.
  4. 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 span payer.
  5. 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.

    Écrivez lot.py : trois traces « réception » indépendantes, puis un span facturer lot lié aux trois. Retrouvez les liens dans le détail du span.
  6. 6. Échantillonner

    Pourquoi ? L'échantillonnage par ratio réduit le volume ; parentbased garantit qu'une trace est gardée ou jetée en entier.

    Relancez commande.py avec 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

  • ⏱ Durée estimée : ≈ 50 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

✉️ Poser une question

Articles recommandés

Dynatrace SaaS vs Managed : choisir, organiser cluster et environnements

Choisir entre Dynatrace SaaS et Managed, organiser cluster et environnements, prendre en main l'i...

OneAgent : méthodes de collecte, installation, Kubernetes et santé

Les méthodes de collecte de Dynatrace (OneAgent, OpenTelemetry, Prometheus, API), l'installation ...

Configuration as Code avec Monaco : tokens, OAuth, projets et CI/CD

Gérer la configuration Dynatrace comme du code avec Monaco : jetons d'API et clients OAuth, manif...

Release monitoring dans Dynatrace : versions, événements de déploiement et suivi des incidents

Suivre les versions déployées dans Dynatrace : variables DT_RELEASE, labels Kubernetes, événement...

Real User Monitoring Dynatrace : injection, applications web et vérification

Mettre en place la surveillance des utilisateurs réels dans Dynatrace : injection automatique par...

Analyser l'expérience utilisateur dans Dynatrace : sessions, traces, analyses et USQL

Exploiter les données d'expérience utilisateur (DEM) : Apdex et Core Web Vitals, sessions utilisa...

Métriques Dynatrace : Data Explorer, sélecteurs de métriques, API et tableaux de bord

Exploiter les métriques dans Dynatrace : métriques intégrées et personnalisées, Data Explorer, sy...

Gestion des problèmes dans Dynatrace : Davis, page problème, notifications et auto-remédiation

Comprendre les problèmes détectés par Davis, lire une page problème (cause racine, impact, chrono...

Paramètres essentiels de Dynatrace : propriétaires, maintenances, nommage, requêtes clés et tags

Configurer les paramètres transverses de Dynatrace : propriétaires des entités (ownership), fenêt...