OpenTelemetry adalah standard open-source untuk menghasilkan dan mengumpulkan telemetry tanpa terikat vendor. Episode ini membahas sejarah merger OpenTracing dan OpenCensus, komponen API, SDK, dan Collector, serta alasan mengapa OTel menjadi fondasi instrumentasi modern.

Di episode 2 kalian mengenal tiga pillars observability. Namun ada pertanyaan praktis yang belum terjawab: bagaimana aplikasi kalian menghasilkan telemetry tersebut dengan cara yang konsisten dan tidak terkunci pada satu vendor? Jawabannya adalah OpenTelemetry, atau disingkat OTel.
Episode ini membahas sejarah OpenTelemetry, struktur komponen utamanya, berbagai jenis sinyal yang didukung, serta alasan mengapa ia menjadi standard de facto instrumentasi modern. OTel akan menemani hampir setiap episode berikutnya, karena seluruh sample application di series ini diinstrumentasi memakai OTel SDK.
Sebelum OTel ada, ekosistem instrumentasi terpecah. OpenTracing mengusung standard API tracing yang vendor-agnostic, sementara OpenCensus yang digagas Google membawa library untuk traces dan metrics dengan pengumpulan data terpadu. Kedua project tersebut memiliki kelebihan masing-masing namun terbelah dua arah.
Pada tahun 2019, keduanya diumumkan merger menjadi OpenTelemetry. Project ini kemudian diakui sebagai CNCF (Cloud Native Computing Foundation) project dan tumbuh menjadi project kedua paling aktif di CNCF setelah Kubernetes. Tujuan utamanya sederhana: satu standard terbuka untuk menghasilkan, memproses, dan mengekspor telemetry.
OpenTelemetry secara konseptual dibagi menjadi dua lapisan:
Pemisahan ini memastikan konsistensi perilaku antar bahasa. SDK resmi tersedia untuk Go, Java, Python, JavaScript, .NET, Ruby, PHP, Rust, dan lainnya — kalian bisa menginstrumentasi aplikasi dengan bahasa apa pun.
pip show opentelemetry-sdkPerintah pip show opentelemetry-sdk akan menampilkan metadata SDK yang terinstall. Nama paket semacam ini akan kalian kenali saat praktik di episode 8 dan 14.
OpenTelemetry Collector adalah komponen yang menerima, memproses, dan mengekspor telemetry dari banyak sumber ke banyak tujuan. Kalian akan mendalaminya di episode 16. Sedangkan exporters adalah plugin yang mengirim data ke backend tujuan:
app -> OTel SDK -> OTLP -> Collector -> Tempo
-> Mimir
-> LokiAlur di atas adalah pola standar: satu Collector melayani tiga backend sekaligus. Perhatikan bahwa Collector -> Tempo terjadi lewat OTLP, sedangkan menuju Mimir dan Loki bisa lewat remote write atau exporter khusus.
OpenTelemetry mendefinisikan beberapa jenis sinyal telemetry:
traces | metrics | logs | baggageBaggage dibedakan dari trace context karena ia membawa data bisnis, bukan hanya identitas request. Ingat pola traces | metrics | logs | baggage sebagai daftar sinyal yang selalu dipakai.
Tip
Jangan bingung antara sinyal OTel dan pillars observability. Pillars adalah kategori telemetry; OTel adalah cara teknis menghasilkan, mengumpulkan, dan mengirimkannya. Episode 16 akan menjelaskan peran Collector yang memisahkan keduanya.
Dengan OTel, kalian menulis instrumentasi sekali dan mengekspor ke backend mana pun — Prometheus, Jaeger, Datadog, atau LGTM Stack. Jika suatu hari kalian pindah backend, kode aplikasi tidak perlu diubah.
Info
Prinsip penting yang akan dipakai sepanjang series: aplikasi kalian hanya bicara OTLP ke Collector, dan Collector yang memutuskan ke mana data diteruskan. Pemisahan ini menjaga fleksibilitas arsitektur.
Di episode 3 ini kalian memahami bahwa OpenTelemetry adalah standard open-source untuk telemetry yang lahir dari merger OpenTracing dan OpenCensus, mengenal pemisahan specification dan SDK, komponen API, SDK, Collector, dan exporters, serta sinyal yang didukung mulai dari traces hingga baggage.
Inti yang harus dibawa pulang:
Di episode 4 selanjutnya kita mulai praktik: setting up development environment — menjalankan seluruh LGTM Stack beserta OpenTelemetry Collector dan Grafana Alloy lewat Docker Compose, menghubungkan data source, dan mengirim telemetry pertama dari aplikasi sample. Siapkan terminal kalian, karena mulai sekarang kita banyak mengetik perintah.