RousselTMLEARNING

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

Les concepts fondamentaux d'OpenTelemetry

1. Une seule norme pour la télémétrie #

D'où vient OpenTelemetry et ce qu'il standardise.

Origines #

OpenTelemetry (OTel) naît en 2019 de la fusion de deux projets concurrents, OpenTracing et OpenCensus. Hébergé par la CNCF, il est devenu le deuxième projet le plus actif de la fondation après Kubernetes. Il ne stocke ni n'affiche rien : il standardise la production et le transport de la télémétrie, que l'on envoie ensuite vers le backend de son choix.

OpenTelemetry fournitOpenTelemetry ne fournit pas
une spécification, des API et des SDK pour une dizaine de langagesune base de données de télémétrie
le protocole OTLPdes tableaux de bord ou un moteur d'alertes
le Collector (réception, traitement, export)un outil d'analyse : c'est le rôle de Grafana, Jaeger, Elastic, Datadog, Dynatrace…
les conventions sémantiques (noms communs des attributs)

Les quatre signaux #

Les signaux OpenTelemetry
Tous les signaux d'un même service portent la même ressource, ce qui permet de les relier.
SignalRépond àStatut de la spécification
Tracespar où est passée cette requête et où a-t-elle perdu du temps ?stable
Métriquescombien, à quelle vitesse, est-ce normal ?stable
Logsque s'est-il passé exactement à cet instant ?stable (modèle de données et SDK)
Profilsquelle fonction consomme le CPU ou la mémoire ?en développement (alpha)

Le baggage complète ces signaux : des paires clé-valeur propagées d'un service à l'autre (identifiant de client, de locataire) que chaque service peut lire et ajouter à sa télémétrie.

2. Les briques #

API, SDK, ressource, scope et contexte.

API et SDK #

API, SDK et exportateurs
Une bibliothèque instrumentée avec l'API ne coûte rien tant que l'application n'installe pas de SDK.

Cette séparation permet aux auteurs de bibliothèques (frameworks web, clients HTTP, pilotes de bases) d'instrumenter leur code une fois pour toutes, sans imposer de backend ni de dépendance lourde à leurs utilisateurs.

Ressource et instrumentation scope #

NotionDécritExemples
Ressourcel'entité qui produit la télémétrie : identique pour tous les signaux d'un processusservice.name, service.version, deployment.environment.name, host.name, k8s.pod.name
Instrumentation scopela bibliothèque qui a produit une donnéeopentelemetry.instrumentation.flask 0.48b0, ou le nom de votre module
Attributsle contexte propre à une donnéehttp.request.method, http.response.status_code, db.system.name
Erreur Courante : Sans service.name, les SDK utilisent unknown_service : vos données deviennent introuvables. C'est le premier attribut à définir.

Contexte et propagation #

Le contexte transporte l'identifiant de trace et de span actifs à l'intérieur d'un processus ; la propagation le transmet d'un processus à l'autre (en-tête HTTP traceparent, métadonnées gRPC, en-têtes de messages Kafka). C'est ce qui permet d'assembler une trace distribuée et de relier les logs et les métriques à la trace qui les a produits.

3. Configurer #

Variables d'environnement et configuration déclarative.

Variables OTEL_* #

Tous les SDK partagent les mêmes variables d'environnement : une application se configure de la même façon quel que soit son langage.

export OTEL_SERVICE_NAME=checkout
export OTEL_RESOURCE_ATTRIBUTES=service.version=1.4.0,deployment.environment.name=production
export OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4318
export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
export OTEL_TRACES_EXPORTER=otlp OTEL_METRICS_EXPORTER=otlp OTEL_LOGS_EXPORTER=otlp
export OTEL_TRACES_SAMPLER=parentbased_traceidratio OTEL_TRACES_SAMPLER_ARG=0.2
export OTEL_PROPAGATORS=tracecontext,baggage
Bonne Pratique : En développement, OTEL_TRACES_EXPORTER=console affiche les spans dans le terminal : le moyen le plus rapide de vérifier une instrumentation.

Configuration déclarative #

Pour les cas complexes (plusieurs exportateurs, vues de métriques, échantillonneurs composés), OpenTelemetry définit un fichier de configuration YAML commun à tous les SDK, désigné par une variable d'environnement (OTEL_CONFIG_FILE, anciennement OTEL_EXPERIMENTAL_CONFIG_FILE). Sa prise en charge varie selon les langages : vérifiez la documentation de votre SDK.

4. Lire la maturité #

Ne pas confondre stable et expérimental.

Niveaux de stabilité #

NiveauSignificationEn production
Development / Experimentalpeut changer ou disparaître sans préavisà éviter, ou isoler
Alphafonctionnel, API encore susceptible de changerpour les pionniers
Betaproche de la stabilité, changements raresavec prudence
Stablecompatibilité garantieoui

La maturité se lit par signal, par langage et par composant : les traces Java sont stables depuis longtemps, les logs d'un autre langage peuvent être encore en bêta, un receiver du Collector peut être en alpha. Les pages « Status » de opentelemetry.io et le fichier metadata.yaml de chaque composant du Collector font foi.

À savoir : Les numéros de version des paquets d'instrumentation se terminant par b0 (Python) ou -alpha (Java) signalent des conventions sémantiques encore non stables pour cette bibliothèque.

📄 Les concepts fondamentaux d'OpenTelemetry : signaux, ressources, contexte et maturité →

Mon suivi

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

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

✉️ Poser une question

Articles recommandés

OpenTelemetry : Instrumentation Automatique vs Manuelle

Comprenez les différences entre l'instrumentation automatique et manuelle avec OpenTelemetry, leu...

Envoyer des traces vers Tempo : instrumentation OpenTelemetry et Alloy

Produire et acheminer des traces vers Tempo : auto-instrumentation Python/Java/Node, SDK manuel, ...

OpenTelemetry sur Kubernetes : Operator, auto-instrumentation et Collector

Déployer OpenTelemetry sur Kubernetes : modes de déploiement du Collector (DaemonSet, Deployment,...

Projet fil rouge : les quatre signaux de l'OpenTelemetry Demo dans la stack Grafana

Un projet fil rouge qui traverse les formations d'observabilité : déployer l'OpenTelemetry Demo, ...

Le tracing distribué avec Jaeger : concepts et architecture

Les concepts du tracing distribué (trace, span, contexte, propagation) et Jaeger : son histoire, ...

Instrumenter ses applications pour Jaeger avec OpenTelemetry

Envoyer des traces à Jaeger avec OpenTelemetry : auto-instrumentation (Java, Python, Node.js), SD...

Corréler traces, métriques, logs et profils avec OpenTelemetry

Relier les quatre signaux pour diagnostiquer vite : ressource commune, trace_id dans les logs, ex...

OTLP expliqué : comprendre le protocole OpenTelemetry

Découvrez le protocole OTLP expliqué simplement. Comprendre les différences entre gRPC et HTTP po...

Les profils, le quatrième signal d'OpenTelemetry : profilage continu et corrélation avec les traces

Comprendre le nouveau signal profile d'OpenTelemetry : profilage continu, flame graphs, modèle de...

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !