RousselTMLEARNING

Observabilité

Grafana Tempo ou Jaeger : quel backend de traces choisir ?

Comparatif détaillé de Grafana Tempo et Jaeger : architecture, stockage, recherche, langage de requête, échantillonnage, intégration avec les autres signaux, coûts et cas d'usage.

1. Deux approches du stockage #

Index ou pas d'index.

Principe #

Jaeger indexe les spans dans une base de recherche (Elasticsearch, OpenSearch, Cassandra) : recherches rapides par tags, mais un stockage coûteux à grande échelle. Tempo écrit les traces dans un stockage objet en format colonne (Parquet) sans index classique : très économique, avec une recherche par TraceQL qui parcourt les blocs.

2. Comparatif détaillé #

Critère par critère.

Tableau #

CritèreJaegerGrafana Tempo
StockageElasticsearch, OpenSearch, Cassandra, BadgerStockage objet (S3, GCS, Azure)
Coût à grand volumeÉlevé (index)Faible
RecherchePar service, opération, tags, duréeTraceQL : conditions sur spans, structure, agrégats
InterfaceInterface Jaeger dédiéeGrafana (Explore, Traces Drilldown)
Corrélation logs / métriques / profilsLimitéeNative dans Grafana (exemplars, liens vers Loki et Pyroscope)
Métriques dérivéesSPM via spanmetricsMetrics generator (RED, service graph)
Échantillonnage adaptatifOuiVia Collector ou Alloy
BaseOpenTelemetry Collector (v2)Architecture distribuée type Mimir/Loki
GouvernanceCNCF graduatedGrafana Labs (AGPLv3)

3. Recommandations #

Selon le contexte.

Choisir #

ContexteChoix
Stack Grafana (Prometheus, Loki, Mimir)Tempo : corrélation native et coût faible
Elasticsearch déjà exploité, volume modéréJaeger sur Elasticsearch, ou Elastic APM
Besoin d'une interface de tracing autonome et neutreJaeger
Très gros volume de traces, rétention longueTempo
Bonne Pratique : Avec OpenTelemetry, le choix n'est pas définitif : un Collector peut envoyer les mêmes traces aux deux pendant une période d'essai.

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…

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_…

Instrumenter ses applications pour Jaeger avec OpenTelemetry

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

Pour aller plus loin