Membedah arsitektur OpenTelemetry Collector dengan pipeline receivers, processors, dan exporters, membandingkan pola deployment agent (sidecar/DaemonSet) vs gateway, serta perbedaan distribusi otelcol core dan contrib beserta cara memverifikasi versi

Sejauh ini telemetry kalian dikirim langsung dari SDK ke Jaeger. Di episode 9 kita memperkenalkan komponen yang mengubah game: OpenTelemetry Collector — daemon yang berdiri di antara aplikasi dan backend. Collector adalah jantung deployment OTel skala nyata, dan kegagalan memahami arsitekturnya adalah penyebab paling umum observability mahal dan tidak terkelola.
Mengapa perlu collector? Karena aplikasi tidak seharusnya tahu ke mana data pergi. SDK hanya tahu "kirim ke collector"; collector yang tahu topology backend, redaksi PII, sampling, dan buffering. Ini memisahkan produksi telemetry dari konsumsi telemetry — dan membuat backend bisa diganti tanpa menyentuh aplikasi.
Collector bekerja dengan pipeline sederhana: receivers → processors → exporters.
Config menentukan pipeline mana yang menghubungkan receiver → processor → exporter mana. Konsep ini adalah episode 10; di sini kita fokus pada dua pola deployment.
Collector berjalan di dekat aplikasi — satu per pod (sidecar) atau satu per node (DaemonSet di Kubernetes). Keunggulannya:
Satu atau beberapa collector terpusat menerima data dari banyak agent. Keunggulannya:
Produksi ideal memakai dua tingkat: agent di tiap node melakukan batch + redaksi awal, gateway terpusat melakukan tail sampling dan routing ke backend. Aplikasi hanya bicara ke agent lokal; agent bicara ke gateway; gateway bicara ke backend.
Tip
Untuk lab series ini, satu collector saja (seperti di episode 0) sudah cukup. Dua tingkat baru wajib saat scale sudah puluhan node atau kalian butuh tail sampling terpusat. Jangan membangun dua tingkat sebelum memahami kebutuhan aktual — kompleksitas harus membayar sendiri.
Collector hadir dalam dua distribusi resmi:
otlp, processor batch, exporter otlp/debug. Ringan dan aman untuk kebutuhan dasar.filelog, hostmetrics, prometheus, kafka, tailsampling, redaction, dan ratusan lainnya.Image resminya otel/opentelemetry-collector (core) dan otel/opentelemetry-collector-contrib. Sepanjang series ini kita memakai contrib karena kaya fitur untuk eksperimen.
docker run --rm otel/opentelemetry-collector-contrib:0.156.0 --versionOutput menunjukkan versi modul inti (core module v1.64.0 untuk collector 0.156.x) dan versi distribusi:
otelcol-contrib version 0.156.0 (buildinfo: ... core v1.64.0 ...)Status stabilitas komponen collector tidak seragam:
Karena itu: pin versi collector (0.156.0, bukan :latest) dan periksa status tiap komponen di registry opentelemetry.io/ecosystem/registry/ sebelum memakainya di produksi. Collector rilis sangat sering; update perlu dilakukan terkontrol, bukan pasif mengikuti tag terbaru.
Empat alasan collector wajib ada di deployment nyata:
:latest — perubahan perilaku mendadak; selalu pin versi.Pada episode 9 ini, kalian telah menguasai arsitektur collector dan pola deployment-nya.
Inti yang harus dibawa pulang:
otelcol version memverifikasi versi modul inti dan distribusi.Di episode 10 selanjutnya, kita akan membahas collector configuration (YAML) — mendefinisikan receivers, processors, exporters, dan service: pipelines, lalu menyusun full pipeline OTLP in → batch → export yang siap dipakai. Sampai jumpa di episode 10!