Grafana Tempo(グラファナテンポ)
Grafana Labs が 2020 年公開した分散トレースバックエンド。Jaeger / Zipkin / OpenTelemetry 互換 + オブジェクトストレージ(S3 / GCS / Azure)で大規模ログ集約、Loki + Prometheus と LGTM スタックを構成。
概要
Grafana Tempo(グラファナ テンポ)は、Grafana Labs が 2020 年 10 月に公開、後年 Grafana Labs プロジェクトとして開発継続している分散トレースバックエンド + 高スケール分散トレース集約システムです。「Tempo」の名称は音楽用語「tempo(テンポ、速度)」由来で、高速 + リズミカルな分散トレース処理を表現しています。
「Grafana LGTM スタック」の構成は、(1)L = Loki(2018、ログ)・(2)G = Grafana(2014、可視化)・(3)T = Tempo(2020、分散トレース)・(4)M = Mimir(2022、Prometheus 互換メトリクス時系列 DB)、で完全な統合観測スタックを提供します。Tempo はその T(トレース)を担う重要コンポーネントとして、Jaeger / Zipkin / OpenTelemetry / OpenCensus / AWS X-Ray / Google Cloud Trace 等の主要分散トレースシステムと完全互換で実装されました。
技術アーキテクチャは、(1)入力: Jaeger / Zipkin / OpenTelemetry(OTLP)/ OpenCensus 形式の分散トレース受信・(2)Distributor: トレースデータ受信 + 検証 + Ingester への配信・(3)Ingester: トレースデータ書込 + チャンク管理(短期保持メモリ + 長期保持オブジェクトストレージ)・(4)Backend Storage: AWS S3 / GCP GCS / Azure Blob / 互換オブジェクトストレージ(直接保存、フルマネージド DB 不要)・(5)Querier: TraceQL クエリ実行 + Span 検索・(6)Query Frontend: クエリパフォーマンス最適化 + キャッシュ、です。
最大の特徴は、(1)オブジェクトストレージ直接保存(AWS S3 / GCP GCS / Azure Blob、Elasticsearch + Cassandra 等の DB バックエンド不要)で超低コスト + 大規模スケール対応・(2)TraceID ベース検索のみで全文検索インデックス不要のシンプル設計(Tempo 1.x、TraceQL は Tempo 2.0+ 2023 年で追加)・(3)Grafana 統合 + ログ(Loki)+ メトリクス(Prometheus / Mimir)+ トレース(Tempo)の Cross-correlation で根本原因分析の生産性向上、です。
TraceQL(Trace Query Language)は Tempo 2.0(2023)で導入されたクエリ言語で、PromQL / LogQL に類似した文法で複雑な分散トレース検索が可能になりました。例: {service.name="frontend" && duration > 100ms && span.http.status_code=500} で「frontend サービスの 100ms 超過 + HTTP 500 エラーの span を検索」等のクエリを表現できます。
主な採用は、(1)Grafana Cloud(SaaS、無料 50GB/月 + 有料拡張)・(2)Grafana Enterprise(オンプレ + サポート)・(3)自前ホスティング(Apache 2.0 ライセンス、無料、Helm Chart デプロイ)・(4)主要 Kubernetes 環境(EKS / GKE / AKS / OpenShift / Rancher)・(5)マイクロサービス + クラウドネイティブアプリ + Service Mesh(Istio / Linkerd / Cilium 統合)、で 2020-2026 年に急速に普及しています。
Jaeger / Zipkin との比較で Tempo の利点は、(1)Object Storage コスト 1/10-1/100・(2)Grafana LGTM 統合・(3)シンプルな TraceID + TraceQL 検索、Jaeger / Zipkin の利点は、(1)歴史 + コミュニティ規模・(2)CNCF プロジェクトとしての安定性、というトレードオフです。
主な特徴・仕組み
- 公開: Grafana Labs 2020 年 10 月、Apache 2.0 ライセンス。
- LGTM スタック: Loki + Grafana + Tempo + Mimir。
- 入力: Jaeger / Zipkin / OpenTelemetry(OTLP)/ OpenCensus。
- バックエンド: AWS S3 / GCP GCS / Azure Blob / 互換 Object Storage。
- 検索: TraceID ベース(Tempo 1.x)+ TraceQL(Tempo 2.0+ 2023)。
- TraceQL: PromQL 風文法、Span 属性 + 持続時間 + サービス名フィルタ。
- コスト: Object Storage 直接保存で Jaeger + Cassandra の 1/10-1/100。
- Grafana 統合: ログ(Loki)+ メトリクス(Prometheus)+ トレース(Tempo)Cross-correlation。
- 主要採用: Grafana Cloud / Enterprise / 自前 / EKS / GKE / AKS。
- Service Mesh: Istio / Linkerd / Cilium 等と統合。
- 主要競合: Jaeger / Zipkin / AWS X-Ray / Google Cloud Trace / Datadog APM / New Relic。
- バージョン: 現在 v2.4+(2024-2026)。
Tempo / 競合分散トレースバックエンド比較
| バックエンド | 提供 | バックエンド DB | コスト |
|---|---|---|---|
| Grafana Tempo | Grafana Labs | Object Storage(S3 / GCS) | 低 |
| Jaeger | Uber / CNCF | Cassandra / Elasticsearch | 中 |
| Zipkin | MySQL / Cassandra / Elasticsearch | 中 | |
| AWS X-Ray | AWS | クラウドネイティブ | 中 |
| Google Cloud Trace | クラウドネイティブ | 中 | |
| Datadog APM | Datadog | SaaS | 高 |
| New Relic Distributed Tracing | New Relic | SaaS | 高 |
自作PCユーザー向けの注意点
Grafana Tempo は通常のコンシューマ自作 PC で必要になる技術ではありませんが、ホビーホームラボ + 自宅 Kubernetes 環境 + マイクロサービス + 観測性開発の上級者には極めて有用です。Docker Compose + Tempo + Grafana + OpenTelemetry Collector の組合せで、自宅サーバの統合観測基盤(LGTM スタック)を構築できます。
OpenTelemetry SDK(Java / Python / Go / Node.js / .NET / Rust)を使ってアプリケーションに分散トレース計装 + Tempo に送信 + Grafana で可視化する一連のフローは、現代マイクロサービス + クラウドネイティブ開発の必須スキルです。Grafana Cloud Free Tier(無料 50GB/月 トレース)も提供されており、低コストで業務級観測スタック学習が可能です。
関連用語との違い
- Jaeger: CNCF Graduated 分散トレース、Tempo 主要競合。
- Zipkin: Twitter 系古典分散トレース、Tempo 互換可能。
- OpenTelemetry: 分散トレース標準仕様、Tempo 主要入力フォーマット。
- Loki: Grafana Labs ログ集約、LGTM の L。
- Mimir: Grafana Labs メトリクス時系列 DB、LGTM の M。
よくある質問(FAQ)
Q1: Tempo と Jaeger どちらを選ぶべきですか? A: Object Storage + コスト重視 + Grafana 統合 → Tempo、CNCF + 歴史 + 安定性 + 既存 Jaeger エコシステム → Jaeger です。新規プロジェクト + Grafana ユーザー + マルチクラウド環境では Tempo が増加傾向、企業 + レガシー Jaeger 移行困難な環境では Jaeger 継続が一般的です。
Q2: TraceQL は何が便利ですか?
A: Tempo 2.0(2023)で導入された Trace Query Language で、PromQL / LogQL 風の文法で複雑な分散トレース検索が可能です。例えば、{ service.name="checkout" && duration > 1s && span.http.status_code >= 500 } で「checkout サービスの 1 秒超過 + HTTP 500+ エラー」を検索可能で、Cross-correlation 根本原因分析が大幅に効率化されます。
Q3: 自宅で Tempo を試す方法は?
A: Docker Compose + Tempo + Grafana + OpenTelemetry Collector のサンプル構成が GitHub で多数公開されており、docker-compose up で 5 分で起動可能です。OpenTelemetry SDK でローカル Java/Python アプリに計装 + Tempo に送信 + Grafana で可視化、業務級観測スタックの学習が低コストで実現できます。
まとめ
- Grafana Labs 2020 公開の分散トレースバックエンド
- Object Storage 直接保存で超低コスト + 大規模スケール
- Jaeger/Zipkin/OpenTelemetry 完全互換 + TraceQL
- LGTM スタック(Loki+Grafana+Tempo+Mimir)の T