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
Bonnes pratiques de collecte de logs avec Fluent Bit et Vector
Check-list de production pour la collecte de logs : structure, filtrage à la source, masquage, ta...
Kibana : rôle, installation et premiers pas
Ce qu'est Kibana dans la suite Elastic, comment l'installer avec Elasticsearch (start-local, Dock...
Explorer ses données dans Discover : KQL, Lucene et ES|QL
Rechercher et analyser des logs dans Kibana Discover : filtres, KQL, syntaxe Lucene, et le langag...
Visualiser dans Kibana : Lens, dashboards et objets enregistrés
Construire des visualisations avec Lens, assembler des dashboards interactifs (filtres, contrôles...
Elastic Observability : logs, infrastructure, APM et synthétiques
Les fonctions d'Elastic Observability : exploration des logs, inventaire d'infrastructure avec El...
Alertes, connecteurs et SLO dans Kibana
Créer des règles d'alerte dans Kibana (requête Elasticsearch, ES|QL, seuil personnalisé, logs), c...
Administrer Kibana : espaces, rôles, utilisateurs et supervision
Organiser Kibana pour plusieurs équipes : espaces, rôles et privilèges sur les index et les fonct...
Bonnes pratiques Kibana et Elastic Observability
Check-list pour exploiter Kibana en production : versions, sécurité, espaces et rôles, dashboards...
VictoriaMetrics : pourquoi et comment, du nœud unique au cluster
Ce qu'apporte VictoriaMetrics par rapport à Prometheus seul, ses composants (single-node, vmagent...