OpenTelemetry, atau OTel, adalah kerangka kerja observabilitas sumber terbuka yang mencakup kumpulan kit pengembangan perangkat lunak (SDK), API vendor-agnostik, dan alat lain untuk aplikasi, sistem, dan instrumentasi perangkat.
OTel menyederhanakan bagaimana data telemetri dikumpulkan, terlepas dari bahasa pemrograman, infrastruktur, atau waktu proses, dan memungkinkan pengembang untuk menghasilkan, mengumpulkan, dan mengekspor data telemetri terstandardisasi untuk backend pengamatan apa pun. Kerangka kerja standar ini memperkuat dan memperluas kemampuan pengamatan, dan memberikan fleksibilitas yang lebih besar bagi tim TI dan DevOps.
OTel diimplementasikan antara aplikasi, sistem dan perangkat, dan solusi backend — penyimpanan dan visualisasi sengaja diserahkan kepada alat lain, memberikan organisasi kebebasan untuk memilih alat yang paling sesuai dengan mereka.
Observabilitas adalah kemampuan untuk mendapatkan insight tentang cara kerja internal suatu sistem dengan menganalisis outputnya. Dalam operasi TI (ITOps) dan komputasi cloud, data telemetri (seperti log, metrik, dan jejak) digunakan untuk menilai kinerja dan kesehatan sistem. Para profesional DevOps mengandalkan instrumentasi-menambahkan kode ke aplikasi dan sistem untuk menghasilkan dan menangkap data telemetri-untuk menciptakan sistem yang dapat diamati.
Instrumentasi ini sering kali merupakan pekerjaan yang rumit ketika bekerja di lingkungan modern, dengan lingkungan hybrid cloud dan multicloud, aplikasi berbasis layanan mikro, kontainer Kubernetes, dan fitur lain dari lingkungan komputasi masa kini. Sistem terdistribusi ini, dan berbagai bahasa pemrograman dan waktu proses yang mereka gabungkan, menyajikan array yang rumit untuk instrumen, mengumpulkan, dan mengekspor untuk penyimpanan backend, visualisasi, dan analisis.
Untuk mendapatkan pemahaman komprehensif tentang layanan jaringan dan kinerja aplikasi, insinyur harus mengkonfigurasi instrumentasi khusus untuk aplikasi dan sistem di seluruh infrastruktur. OpenTelemetry membantu memecahkan masalah ini.
OTel menyediakan metode standar untuk mengumpulkan dan mengirimkan data pengamatan, yang membantu menyederhanakan pemantauan dalam sistem terdistribusi. Ini menggunakan pustaka dan API yang terpadu dan netral vendor untuk mengumpulkan dan mengirim data telemetri ke platform backend. Dengan mengadopsi OpenTelemetry, tim dapat mengumpulkan dan memproses telemetri secara seragam di seluruh sistem yang kompleks, terlepas dari aplikasi mana yang mereka kelola atau alat pengamatan yang mereka gunakan.
Kode instrumentasi digunakan untuk sangat bervariasi. Dan karena tidak ada satu pun penyedia komersial yang menawarkan alat yang mampu mengumpulkan data dari setiap aplikasi dan layanan di jaringan, maka sulit bagi perusahaan untuk mengumpulkan data dalam berbagai bahasa dan format atau mengubah backend.
Jika, misalnya, tim pengembangan ingin mengganti alat backend, mereka harus sepenuhnya menginstruksikan ulang kode mereka dan mengonfigurasi agen baru untuk mengirim data telemetri ke server baru. Selain itu, pendekatan terfragmentasi ini menciptakan silo data dan kebingungan, sehingga sulit untuk memecahkan masalah dan menyelesaikan masalah kinerja secara efektif.
OpenTelemetry merupakan kemajuan yang signifikan dalam alat observabilitas karena alat ini menstandardisasikan cara data telemetri dikumpulkan, dianalisis, dan dikirim ke platform backend. Alat ini memberikan solusi sumber terbuka—berdasarkan standar berbasis komunitas—untuk mengumpulkan data tentang perilaku dan keamanan sistem, membantu tim merampingkan pemantauan dan observabilitas dalam ekosistem terdistribusi. Dengan demikian, OTel menawarkan pendekatan yang terbuka dan konsisten kepada bisnis untuk mengumpulkan data penting dari aplikasi dan layanan jaringan.
OpenTelemetry dibuat dengan menggabungkan kemampuan pelacakan terdistribusi dari OpenTracing dan OpenCensus menjadi satu alat. OpenTracing adalah proyek sumber terbuka yang dirancang oleh Cloud Native Computing Foundation (CNCF) untuk menyediakan para insinyur dengan API netral vendor untuk menambahkan instrumentasi pelacakan terdistribusi ke aplikasi. Ini menetapkan serangkaian konvensi semantik untuk membantu memastikan konsistensi dalam data telemetri
Namun, tidak seperti OpenTelemetry, OpenTracing itu sendiri bukan implementasi pelacakan. Sebaliknya, ia menyediakan antarmuka yang dapat diterapkan sistem pelacakan untuk memaksimalkan kompatibilitas lintas platform. OpenTracing adalah proyek yang tidak berfungsi (yang sekarang mendorong pengguna untuk bermigrasi ke OpenTelemetry), tetapi berbagai perangkat lunak dan solusi pelacakan masih bergantung pada API-nya.
OpenCensus adalah seperangkat pustaka instrumentasi —dikembangkan oleh Google, untuk mengumpulkan metrik aplikasi dan jejak terdistribusi —yang dapat mengekspor data ke backend yang berbeda secara real time. Pustaka ini mengumpulkan data menggunakan tag propagasi dan metadata yang konsisten—sebuah konsep yang sekarang ada di OpenTelemetry sebagai "sumber daya".
Dengan OpenCensus, aplikasi dapat mengimpor dan mengekspor data berdasarkan persyaratan spesifiknya, memastikan fleksibilitas dalam bagaimana metrik dan jejak dikirim ke backend observabilitas. OpenCensus belum secara resmi dihentikan seperti OpenTracing; OpenCensus masih menerima pemeliharaan rutin dan pembaruan keamanan. Namun, pengembangan aktif sebagian besar telah bergeser ke OpenTelemetry.
Kedua proyek tersebut bertujuan untuk mengatasi masalah yang sama. Pada saat itu, tim pengembang tidak memiliki cara standar untuk membuat kode instrumen dan mengirimkan data telemetri ke alat pengamatan backend.
Namun, tidak ada proyek yang dapat menyelesaikan masalah ini sendiri. Jadi, CNCF mensponsori proyek OpenTelemetry, menggabungkan fitur terbaik dari setiap solusi. OpenTelemetry menyatukan standardisasi API OpenTracing dan kemampuan pengumpulan data OpenCensus untuk menyediakan satu platform terpadu untuk mengirim, mengumpulkan, dan mentransfer data telemetri ke platform observabilitas backend.
Bagian penting dari menjalankan jaringan dan aplikasi yang cepat dan ketersediaan tinggi adalah mencapai full stack observability (atau visibilitas), yang memerlukan akses ke data telemetri. Solusi pengamatan mengumpulkan, memantau, dan menganalisis data telemetri untuk menentukan kesehatan sistem dan kemudian memberi tim TI wawasan yang dapat ditindaklanjuti untuk perbaikan dan pengoptimalan.
Untuk mendapatkan pemahaman yang lebih dalam tentang OpenTelemetry, mari selami apa itu data telemetri dan bagaimana organisasi menggunakannya. OpenTelemetry mendukung tipe data tertentu, yaitu output yang dikumpulkan dari log, metrik dan jejak (sering disebut “tiga pilar observabilitas”).
Metrik adalah penilaian numerik kinerja sistem dan penggunaan sumber daya. Mereka memberikan gambaran umum tingkat tinggi tentang kesehatan jaringan dengan menangkap indikator kinerja utama (KPI) seperti latensi, kehilangan paket, pemanfaatan bandwidth, dan penggunaan CPU perangkat.
Metrik biasanya diringkas menggunakan dasbor dan visualisasi lainnya. Mereka sering memberi tim indikasi pertama dari masalah kinerja sistem atau aplikasi.
Log adalah catatan terperinci dari setiap peristiwa atau tindakan yang terjadi dalam lingkungan. Log memberikan informasi terperinci tentang apa yang terjadi, kapan itu terjadi dan di mana di jaringan itu terjadi, memberi tim konteks yang berharga untuk pemecahan masalah, debugging, dan analisis forensik.
Log mengungkapkan penyebab utama masalah dengan merinci peristiwa sistem seperti perubahan konfigurasi perangkat, autentikasi yang gagal, dan koneksi yang terputus.
Jejak menangkap aliran data di seluruh jaringan, memberikan insight tentang jalur dan perilaku paket saat melintasi beberapa perangkat dan sistem. Mereka penting untuk memahami sistem terdistribusi dan mendiagnosis masalah latensi.
Penelusuran data memungkinkan tim TI untuk melihat perjalanan transaksi secara menyeluruh, dari ujung ke ujung, sehingga membantu menunjukkan dengan tepat penundaan dan kegagalan yang terjadi di lingkungan yang kompleks dan berlapis-lapis.
OpenTelemetry mengandalkan beberapa komponen dan proses untuk membuat pengumpulan data berhasil, termasuk:
API adalah seperangkat aturan atau protokol yang memungkinkan aplikasi perangkat lunak berkomunikasi satu sama lain untuk bertukar data, fitur, dan fungsi.
OpenTelemetry menyediakan API khusus bahasa—untuk Java, Ruby, JavaScript, Python, dan bahasa lainnya—yang dapat digunakan pengembang untuk instrumen aplikasi mereka untuk pengumpulan data telemetri. OpenTelemetry API memisahkan aplikasi dari infrastruktur jaringan, memberi tim fleksibilitas untuk menggunakan titik akhir mana pun yang cocok dengan kode instrumentasi mereka.
OpenTelemetry SDK memungkinkan teknisi untuk mengonfigurasi dan menyesuaikan perilaku API. SDK membentuk jembatan antara API dan kolektor dan memungkinkan untuk menghubungkan instrumentasi manual untuk perpustakaan umum ke instrumentasi aplikasi manual.
OTel menawarkan SDK untuk berbagai bahasa pemrograman, sehingga pengembang dapat menggunakan API OTel untuk menghasilkan dan mengekspor data telemetri yang spesifik untuk bahasa dan backend yang mereka pilih. OTel SDK juga mendukung instrumentasi kustom untuk kerangka kerja internal yang belum dicakup oleh komunitas OpenTelemetry.
Kolektor adalah agen yang mengumpulkan data telemetri dari aplikasi yang diinstrumentasi dengan OpenTelemetry. Terdiri dari penerima, pemroses, agregator, dan pengekspor, pengumpul bertindak sebagai perantara yang netral terhadap vendor, menerima data dari aplikasi dan meneruskannya ke platform pengamatan atau tujuan lain untuk dianalisis.
Kolektor OpenTelemetry mendukung paket contrib yang memungkinkannya untuk menyerap data dalam berbagai format—termasuk OpenTelemetry Protocol (OTLP), Prometheus dan Jaeger—dan mengekspornya ke berbagai backend, terkadang secara bersamaan (untuk redundansi). Paket Contrib adalah ekstensi pihak ketiga yang menyediakan instrumentasi, sampel, propagator, dan pendeteksi sumber daya bagi tim pengembang dalam format submodul.
Pengumpul juga dapat memproses dan memfilter data telemetri sebelum mengekspornya untuk memprioritaskan pengiriman data yang paling penting dan mempercepat proses pemecahan masalah dan debugging.
Eksportir adalah bagian dari pengumpul dan bertanggung jawab untuk mengirimkan data telemetri aplikasi ke satu atau beberapa backend observabilitas yang ditentukan. Sementara pengumpul mengelola aliran data secara keseluruhan, eksportir memprioritaskan transmisi data ke luar ke tujuannya.
Eksportir data OpenTelemetry memisahkan instrumentasi dari konfigurasi backend dan mengubah data ke dalam format yang sesuai untuk setiap platform observabilitas (mengubah jejak ke protokol Zipkin, misalnya). Dinamika ini memungkinkan pengumpul untuk mengirim data telemetri yang sama ke beberapa backend, sehingga memudahkan perubahan tujuan tanpa mengubah logika instrumentasi kode.
Instrumentasi otomatis menyediakan perpustakaan dan kerangka kerja yang memungkinkan aplikasi menghasilkan data telemetri secara otomatis dengan perubahan kode minimal atau no-code. Proses ini menyederhanakan instrumentasi untuk pengembang, mengurangi—dan terkadang menghilangkan—tugas pengodean manual.
Namun, autoinstrumentasi mungkin menawarkan kontrol yang lebih kecil terhadap jenis pengumpulan data tertentu dibandingkan dengan instrumentasi manual. Luasnya instrumentasi otomatis juga dapat bervariasi berdasarkan waktu proses bahasa, lingkungan komputasi, dan tingkat dukungan komunitas untuk kerangka kerja observabilitas.
OpenTelemetry bekerja dengan menggabungkan API, SDK, kolektor dan proses instrumentasi otomatis untuk menarik data dan mengirimkannya ke sistem target.
Pertama, tim DevOps menginstrumentasikan kode aplikasi dengan API OTel, menentukan metrik, jejak, dan log mana yang akan dikumpulkan dan bagaimana mengumpulkannya. Pengumpul OTel SDK mengumpulkan data dan menyiapkannya untuk diproses dan diekspor, lalu mengambil sampel, menyaring, dan menghubungkan data dengan dependensi dan sumber data lainnya.
Saat data yang diproses diformat dengan benar, SDK mengelompokkannya ke dalam batch berbasis waktu (di mana data tersebut mengalami lebih banyak pemfilteran, jika perlu) dan mengirimkannya ke sistem backend yang ditentukan.
Tujuan utama OpenTelemetry adalah mengumpulkan dan mengekspor data telemetri dan meningkatkan kemampuan pengamatan, menyediakan alat bagi organisasi untuk memfasilitasi netralitas vendor, serta integrasi platform dan alat. Ini membantu tim DevOps dan insinyur keandalan situs (SRE) mengelola dan men-debug aplikasi dan sistem, sehingga mereka dapat membuat keputusan yang lebih tepat dan tetap tangkas saat kebutuhan bisnis berubah.
Manfaat OTel meliputi: