RousselTMLEARNING

Observabilité

Installer Jaeger v2 : all-in-one, configuration et stockages

Lancer Jaeger v2 en all-in-one, comprendre son fichier de configuration (extensions jaeger_storage et jaeger_query, pipelines OTLP), les ports et les stockages disponibles.

1. All-in-one #

Pour apprendre et pour les tests.

Lancement #

docker run --rm --name jaeger \
  -p 16686:16686 -p 4317:4317 -p 4318:4318 \
  jaegertracing/jaeger:latest
# Interface : http://localhost:16686
PortUsage
16686Interface web et API de requête
4317 / 4318Réception OTLP gRPC / HTTP
5778Stratégies d'échantillonnage à distance
13133Santé (healthcheck)
8888Métriques internes (format Prometheus)
Erreur Courante : L'all-in-one stocke les traces en mémoire : tout disparaît au redémarrage. Utilisez Badger (disque local) pour un environnement de test persistant, et un stockage distribué en production.

2. Le fichier de configuration #

La syntaxe de l'OpenTelemetry Collector.

Structure #

service:
  extensions: [jaeger_storage, jaeger_query, healthcheckv2]
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [jaeger_storage_exporter]

extensions:
  healthcheckv2:
    use_v2: true
    http:
  jaeger_query:
    storage:
      traces: stockage_principal
  jaeger_storage:
    backends:
      stockage_principal:
        memory:
          max_traces: 100000

receivers:
  otlp:
    protocols:
      grpc: { endpoint: 0.0.0.0:4317 }
      http: { endpoint: 0.0.0.0:4318 }

processors:
  batch:

exporters:
  jaeger_storage_exporter:
    trace_storage: stockage_principal
docker run --rm -v $PWD/config.yaml:/jaeger/config.yaml -p 16686:16686 -p 4317:4317 -p 4318:4318 \
  jaegertracing/jaeger:latest --config /jaeger/config.yaml

Les extensions déclarent les stockages (jaeger_storage) et l'interface (jaeger_query) ; le pipeline reçoit en OTLP et écrit via jaeger_storage_exporter. Tout processeur du Collector (filtre, attributs, échantillonnage) peut s'insérer dans le pipeline.

À savoir : Les noms des clés évoluent entre versions de Jaeger v2 : partez des fichiers d'exemple du dépôt (cmd/jaeger/*.yaml) correspondant à votre version.

3. Les stockages #

Choisir selon le volume.

Options #

StockageUsageRemarque
memoryDémonstration, testsPerdu au redémarrage
badgerUne instance, persistantDisque local, pas de haute disponibilité
elasticsearch / opensearchProductionRecherche riche, index par jour, rétention par suppression d'index
cassandraProduction, gros volume en écritureRétention par TTL
grpc (plugin distant)Stockages tiersPar exemple ClickHouse via un plugin
extensions:
  jaeger_storage:
    backends:
      es_traces:
        elasticsearch:
          server_urls: [http://elasticsearch:9200]
          indices:
            index_prefix: jaeger
            spans: { date_layout: "2006-01-02", rollover_frequency: day }
Bonne Pratique : Avec Elasticsearch ou OpenSearch, la rétention se gère par suppression des index anciens : Index Lifecycle Management (ILM) ou le job jaeger-es-index-cleaner.

Articles liés

Le tracing distribué avec Jaeger : concepts et architecture

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

Instrumenter ses applications pour Jaeger avec OpenTelemetry

Envoyer des traces à Jaeger avec OpenTelemetry : auto-instrumentation (Java, Python, Node.js), SDK et spans m…

Analyser des traces dans l'interface de Jaeger

Rechercher des traces, lire une chronologie, repérer le chemin critique, comparer deux traces, utiliser le gr…

Pour aller plus loin