Grafana Tempo (分散トレーシング・2020)(グラファナテンポ)
Grafana Labs 2020年公開の分散トレーシングシステム。「Loki for Traces」設計・Object Storage 圧縮・OTel / Jaeger / Zipkin Receiver、PLG/PLT Stack のTrace 担当。
概要
Grafana Tempo はGrafana Labs (Annanay Agarwal 等) が2020年10月にObservabilityCON で発表・公開した分散トレーシングシステム。「Loki for Traces」設計、OpenTelemetry / Jaeger / Zipkin Receiver 全対応・Object Storage (S3 / GCS / Azure Blob) 圧縮 (Cassandra / Elasticsearch 不要)・TraceQL クエリ言語・大幅Cost削減を実現、Loki / Mimir と並ぶPLT (Prometheus + Loki + Tempo) スタックの3 Pillars。Grafana Cloud Free Tier $0 / 50GB Traces・OSS自家ホスト両対応で、Datadog APM / Honeycomb 代替の Open Source 選択肢。
Tempo 主要マイルストーン
| 年月 | 出来事 |
|---|---|
| 2020-10 | Grafana ObservabilityCON 発表 |
| 2021-04 | Tempo 1.0 GA |
| 2021-12 | Tempo 1.4 (TraceQL) |
| 2022 | Tempo 2.0 |
| 2023-04 | TraceQL 2.0 (集計) |
| 2024-01 | Tempo 2.4 (Service Graph 改善) |
| 2024-08 | Tempo 2.5 (TraceQL Metrics Generator) |
Tempo 主要技術
| 項目 | 内容 |
|---|---|
| 構造 | Trace ID + Span Storage |
| インデックス | 最小限 (TraceID Lookup) |
| ストレージ | Object Storage (S3 / GCS / MinIO) |
| クエリ | TraceQL |
| Receiver | OTel / Jaeger / Zipkin / B3 |
| Multi-tenant | あり |
| Cost | 1/10-1/100 (Cassandra/ES 比) |
| Grafana 統合 | ◎ |
Loki / Mimir / Tempo 統合
Grafana Labs 「LGTM Stack」(Loki / Grafana / Tempo / Mimir):
| Pillar | 製品 | クエリ |
|---|---|---|
| Metrics | Mimir | PromQL |
| Logs | Loki | LogQL |
| Traces | Tempo | TraceQL |
| 可視化 | Grafana | - |
3つの共通アーキテクチャ (Object Storage ベース) でCost効率最大化。
TraceQL クエリ言語
Trace 検索DSL:
# 1. Service名でフィルタ
{ resource.service.name = "api" }
# 2. エラーTrace のみ
{ status = error }
# 3. レイテンシ > 1秒
{ duration > 1s }
# 4. 複雑条件
{ resource.service.name = "api" &&
span.http.status_code = 500 &&
duration > 500ms }
# 5. Service Graph
{ resource.service.name = "frontend" }
>> { resource.service.name = "backend" }
PromQL / LogQL と似た構文・Span Tag / Resource Attribute で検索。
Service Graph (Service 依存図)
Tempo 自動生成のService 依存可視化:
[Frontend (95ms)]
↓
[API Gateway (12ms)]
↓
├── [Auth Service (5ms)]
├── [User Service (15ms) → PostgreSQL]
└── [Order Service (20ms) → Payment Service → External API]
Trace データから自動構築・Service 通信頻度・Latency・Error率を1画面で確認。
Auto-Instrumentation
OpenTelemetry SDK / Auto-instrumentation 経由でTempo へ送信:
# OpenTelemetry Collector 設定
exporters:
otlp/tempo:
endpoint: tempo:4317
tls:
insecure: true
service:
pipelines:
traces:
receivers: [otlp, jaeger, zipkin]
processors: [batch]
exporters: [otlp/tempo]
既存Jaeger / Zipkin デプロイから移行容易。
Tempo vs Jaeger
| 項目 | Tempo | Jaeger |
|---|---|---|
| ストレージ | Object Storage | Cassandra / ES |
| Cost | 1/10-1/100 | 高 |
| TraceID 検索 | ◎ | ◎ |
| Tag検索 | ◎ (TraceQL) | △ (ES 必要) |
| Grafana 統合 | ◎ | ◎ |
| Multi-tenant | ◎ | ◎ |
| Service Map | ◎ | ◎ |
近年Tempo が新規採用増加・既存Jaeger は移行検討多。
TraceQL Metrics Generator (2024)
Tempo 2.5+ で Trace → Metrics 自動生成:
- Service-level Metrics (Latency / Error Rate / Throughput)
- Span Metrics from Trace data
- Prometheus 互換出力
- Grafana 統合Dashboard 自動生成
Trace を Metrics として活用、APM Vendor (Datadog 等) に近い体験。
主要採用先
| 企業 | 用途 |
|---|---|
| Grafana Cloud (Free / Pro / Enterprise) | 数万社 |
| 分散トレース | |
| Grafana Labs 内部 | Dogfooding |
| 多Kubernetes Native 企業 | OSS採用 |
Grafana Cloud Tempo
| プラン | 価格 |
|---|---|
| Free | 50GB Traces / 月 |
| Pro | $0.50 / GB |
| Enterprise | 法人 |
無料Tier 大きく・小規模スタートアップに最適。
関連用語との違い
- vs Jaeger: Object Storage / Cassandra
- vs Datadog APM: OSS / 商用
- vs Honeycomb: Object Storage / 専用 / 高度UI
FAQ
Q1: Jaeger から移行? A: 段階的移行可能。OTel Collector で「Jaeger Receiver → Tempo Exporter」設定で既存Jaeger Agent / Client 継続使用しつつTempo へ送信。
Q2: 全Service 計装必要? A: 任意Service だけでも有用。完全網羅で初めてEnd-to-End Trace 完成・段階導入が現実的。
Q3: Datadog APM と比較? A: 価格1/10-1/100・機能Datadog 優位 (AI / 自動異常検知 / Service Catalog)。Cost優先ならTempo・高機能ならDatadog。