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| Port | Usage |
|---|---|
| 16686 | Interface web et API de requête |
| 4317 / 4318 | Réception OTLP gRPC / HTTP |
| 5778 | Stratégies d'échantillonnage à distance |
| 13133 | Santé (healthcheck) |
| 8888 | Mé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_principaldocker run --rm -v $PWD/config.yaml:/jaeger/config.yaml -p 16686:16686 -p 4317:4317 -p 4318:4318 \
jaegertracing/jaeger:latest --config /jaeger/config.yamlLes 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 #
| Stockage | Usage | Remarque |
|---|---|---|
| memory | Démonstration, tests | Perdu au redémarrage |
| badger | Une instance, persistant | Disque local, pas de haute disponibilité |
| elasticsearch / opensearch | Production | Recherche riche, index par jour, rétention par suppression d'index |
| cassandra | Production, gros volume en écriture | Rétention par TTL |
| grpc (plugin distant) | Stockages tiers | Par 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.