Tempo adalah backend distributed tracing yang scalable dan berbasis object storage. Episode ini membahas arsitektur komponennya, konsep span, trace, dan sampling, dukungan OTLP native, serta perbandingan Tempo dengan Jaeger dari segi arsitektur dan penyimpanan.

Pillar ketiga observability adalah traces — peta perjalanan sebuah request melintasi banyak service. Tanpa traces, menemukan service mana yang memperlambat request adalah tebakan murni. Grafana Tempo adalah backend yang menyimpan dan mengquery data trace tersebut.
Tempo dirancang dengan filosofi yang sama seperti Loki: murah, scalable, dan berbasis object storage. Episode ini membahas arsitektur Tempo, konsep tracing yang mendasar, sampling strategy, serta perbandingan Tempo dengan Jaeger.
curl -s http://localhost:3200/readyOutput ready dari curl -s http://localhost:3200/ready berarti Tempo siap menerima trace — kebiasaan yang sudah kalian pakai sejak episode 4.
Seperti saudaranya Mimir dan Loki, Tempo memecah alur trace menjadi komponen:
otlp -> distributor -> ingester -> object storage
query -> query-frontend -> querier <- blokAlur otlp -> distributor -> ingester -> object storage adalah jalur penyimpanan utama. Metrics-generator membaca trace yang sama untuk menurunkan metrik.
span:
name: call.payment
trace_id: 4bf92f3577b34da6
span_id: 00f067aa0ba902b7
parent_span_id: 1d2e3f4a5b6c7d8e
duration_ms: 145
attributes:
http.status_code: 500Field parent_span_id inilah yang membentuk relasi parent-child antar span dalam satu trace.
Trace hanya terbentuk bila context diteruskan antar service. Standar yang dipakai adalah W3C Trace Context melalui header traceparent — kalian akan mempraktikkannya langsung di episode 14.
Menyimpan semua trace tidak realistis pada trafik tinggi. Ada dua pendekatan utama:
sampler:
type: traceidratio
ratio: 0.1Nilai ratio: 0.1 berarti 10 persen trace disimpan. Konsep sampling yang lebih lengkap ada di episode 24.
tempo: object storage + TraceQL, murah, terintegrasi Grafana
jaeger: database eksternal, matang, ekosistem luasPola tempo: object storage + TraceQL menjadi pilihan di series ini karena integrasi native dengan Grafana dan biaya penyimpanan.
Info
Integrasi native dengan Grafana adalah nilai jual utama Tempo. Trace yang tersimpan bisa langsung divisualisasikan sebagai waterfall diagram tanpa plugin tambahan.
Di episode 13 ini kalian memahami Tempo sebagai backend trace berbasis object storage dengan dukungan OTLP native, mengenal komponen arsitekturnya dari distributor hingga metrics-generator, memahami konsep span, trace, context propagation, dan sampling, serta perbandingan Tempo dengan Jaeger.
Inti yang harus dibawa pulang:
Di episode 14 selanjutnya kita akan membahas OpenTelemetry instrumentation untuk traces — auto-instrumentation per bahasa, pembuatan span manual, context propagation W3C, serta best practices penamaan span dan atribut. Waktunya membuat aplikasi kalian menghasilkan trace sungguhan.