Jaeger vs Grafana Tempo: どちらのトレーシングバックエンド?
Jaeger は豊富なトレースのインデックスとクエリを提供します。Grafana Tempo はトレースを object storage に安価に保存し、trace ID と logs/メトリクスの相関に依存します。
Jaeger はサービス、オペレーション、タグでの柔軟な検索のために span をインデックスし、検索可能なバックエンドを必要とします。Tempo は意図的に重いインデックスを省き、トレースを object storage に保存して trace ID で見つけ、その後 Grafana に頼って logs とメトリクスから相関させます。Jaeger は単体でのトレース検索で勝り、Tempo はコストと Grafana のメトリクス-logs-トレースのワークフローで勝ります。
| Jaeger | Tempo | |
|---|---|---|
| インデックス | 豊富な span インデックス | 最小限 (trace ID) |
| ストレージコスト | 高め | 低い (object store) |
| 検索 | タグ/サービス別 | ID + 相関 |
| エコシステムへの適合 | 単体 UI | Grafana ネイティブ |
| 最適な用途 | アドホックなトレース検索 | Grafana 上の安価なトレース |
ユースケースとコスト
Jaeger は、Grafana 中心のフローなしで属性によってトレースを直接検索する必要があるチームに適しています。Tempo は、すでに Grafana を使っていて安価でスケーラブルなトレースストレージが欲しく、メトリクスと logs からの exemplar 経由でトレースに到達したいチームに適しています。
運用と CI への適合
Tempo は object store のみのストレージのおかげで運用がよりシンプルです。Jaeger は Elasticsearch や Cassandra のような検索バックエンドを必要とします。どちらもコンテナ化され CI で統合テストされ、より高速なランナーが build とトレースパイプラインのテストを短縮します。
結論
単体で豊富なトレース検索が欲しいなら Jaeger。Grafana のメトリクス-logs-トレーススタックに組み込まれた安価な object store のトレースが欲しいなら Tempo。トレースを直接クエリするか、Grafana から相関させるかで選びましょう。