OpenTelemetry vs Prometheus: Anda tidak dapat memperbaiki masalah yang tidak dapat Anda lihat
29 Maret 2024
Bacaan 7 menit

Memantau dan mengoptimalkan kinerja aplikasi penting bagi pengembang perangkat lunak dan perusahaan pada umumnya. Semakin banyak aplikasi yang digunakan perusahaan, maka semakin banyak data yang bisa dikumpulkan dan dianalisis. Namun, data ini tidak terlalu berarti tanpa alat yang tepat untuk memantau, mengoptimalkan, menyimpan, dan yang paling penting, menafsirkannya sesuai konteks.

Organisasi dapat memanfaatkan data aplikasi sebaik-baiknya dengan menerapkan solusi pemantauan dan observabilitas yang membantu meningkatkan kesehatan aplikasi dengan mengidentifikasi masalah sebelum muncul, menandai kemacetan, mendistribusikan lalu lintas jaringan, dan banyak lagi. Fitur-fitur ini membantu mengurangi waktu henti aplikasi, memberikan kinerja aplikasi yang lebih andal, dan meningkatkan pengalaman pengguna.

OpenTelemetry dan Prometheus adalah dua proyek sumber terbuka di bawah Cloud Native Computing Foundation (CNCF) yang menawarkan alat observabilitas untuk pemantauan aplikasi. Jenis data dan operasi yang berbeda memerlukan solusi yang berbeda, serta bergantung pada tujuan organisasi dan spesifikasi aplikasi. Memahami perbedaan utama antara platform seperti OpenTelemetry dan Prometheus serta penawaran masing-masing solusi, penting sebelum Anda memilih salah satu untuk diimplementasikan.

Penting juga untuk dicatat bahwa OpenTelemetry dan Prometheus berintegrasi dan dapat bekerja sama sebagai duo aplikasi pemantauan yang hebat. OpenTelemetry dan Prometheus memungkinkan pengumpulan dan transformasi metrik, yang mendukung tim DevOps dan TI untuk membuat dan bertindak berdasarkan insight terkait kinerja.

Apa itu OpenTelemetry?

OpenTelemetry atau oTel, adalah platform yang dirancang untuk membuat lokasi terpusat guna menghasilkan, mengumpulkan, mengekspor, dan mengelola data telemetri, termasuk log, metrik, serta jejak. OTel dibuat dari penggabungan OpenCensus dan OpenTracing dengan tujuan untuk menyediakan API, SDK, perpustakaan, dan integrasi yang membakukan pengumpulan data yang berbeda-beda. Dengan OTel, hasil pemantauan yang diinginkan dapat diimplementasikan dalam kode Anda untuk menyederhanakan pemrosesan data dan memastikan bahwa data diekspor ke back end yang sesuai.

Menganalisis data telemetri adalah kunci dalam memahami kinerja dan kesehatan sistem. Jenis observabilitas yang dioptimalkan ini memungkinkan organisasi untuk memecahkan masalah lebih cepat, meningkatkan keandalan sistem, mengatasi masalah latensi, dan mengurangi waktu henti aplikasi.

Berikut uraian singkat aspek-aspek utama ekosistem OpenTelemetry:

API: API OpenTelemetry(antarmuka pemrograman aplikasi) menerjemahkan bahasa pemrograman secara universal. Kemampuan ini memungkinkan API untuk mengumpulkan data telemetri. API ini memiliki peran penting dalam standardisasi pengumpulan metrik OpenTelemetry.

SDK: Kit pengembangan perangkat lunak adalah alat untuk membangun perangkat lunak. Ini termasuk kerangka kerja, perpustakaan kode, dan debugger yang merupakan blok bangunan pengembangan perangkat lunak. SDK OTel mengimplementasikan OpenTelemetry API dan menawarkan alat yang diperlukan untuk membuat dan mengumpulkan data telemetri.

Pengumpul OpenTelemetri: Pengumpul OTel menerima, memproses, dan mengekspor data telemetri. Pengumpul OTel dapat dikonfigurasi untuk memfilter tipe data tertentu ke back end yang ditentukan.

Perpustakaan instrumentasi: OTel menyediakan model instrumentasi yang dapat digunakan di semua platform. Perpustakaan instrumentasi memungkinkan oTel untuk berintegrasi dengan bahasa pemrograman apa pun.

Manfaat OpenTelemetry

Protokol OpenTelemetry (OTLP) menyederhanakan observabilitas dengan mengumpulkan data telemetri, seperti metrik, log, dan jejak, tanpa mengubah kode atau metadata.

Metrik: Metrik mendefinisikan gambaran umum tingkat tinggi tentang kinerja dan kesehatan sistem. Tim pengembang, TI, dan manajemen bisnis menentukan metrik apa yang paling berguna untuk dilacak demi mempertahankan tingkat kinerja aplikasi yang memenuhi tujuan bisnis. Metrik dapat bervariasi, bergantung pada data yang dianggap penting oleh tim dan dapat mencakup lalu lintas jaringan, latensi, dan penyimpanan CPU. Metrik juga dapat digunakan untuk melacak pola dan tren dalam kinerja aplikasi.

Log: Log adalah catatan peristiwa yang terjadi dalam komponen perangkat lunak atau aplikasi. Log dapat dibuat berdasarkan aspek tertentu dari suatu komponen yang ingin dipantau oleh tim DevOps . Fungsinya adalah sebagai data historis yang dapat menyajikan informasi kinerja umum, menunjukkan saat ambang batas yang ditetapkan terlampaui, atau menampilkan kesalahan. Log membantu memantau kesehatan keseluruhan ekosistem aplikasi.

Jejak: Jejak memberikan tampilan kinerja aplikasi yang lebih luas dibandingkan log dan membantu pengoptimalan. Jejak juga lebih fokus daripada log dan mengikuti perjalanan menyeluruh dari satu permintaan saat bergerak melalui tumpukan aplikasi. Jejak memungkinkan pengembang untuk menemukan waktu terjadinya kesalahan atau kemacetan secara tepat, berapa lama kesalahan atau kemacetan itu berlangsung, dan bagaimana hal itu memengaruhi perjalanan pengguna. Informasi ini membantu pengelolaan layanan mikro dan meningkatkan kinerja aplikasi secara keseluruhan.

OTel dapat mengambil tiga jenis data telemetri yang berbeda ini dan mengekspornya ke berbagai back end, termasuk Prometheus. Kemampuan ini mencegah vendor atau back-end lock-in dan memungkinkan pengembang untuk memilih alat analisis pilihan mereka. OpenTelemetry mendukung berbagai integrasi dengan platform lain, termasuk Prometheus, yang memberikan peluang lebih besar untuk observabilitas. OTel mendukung Java, Python, JavaScript, dan Go, menjadikannya solusi yang semakin fleksibel. Hal ini juga memungkinkan pengembang dan tim TI untuk memantau kinerja dari browser web atau lokasi mana pun.

Kelebihan utama dari OpenTelemetry berasal dari kemampuannya untuk secara konsisten mengumpulkan dan mengekspor data di banyak aplikasi dan standardisasi proses pengumpulan. OTel adalah alat yang andal untuk observabilitas ke dalam sistem terdistribusi dan layanan mikro.

Apa itu Prometheus?

Prometheus adalah toolkit untuk pemantauan dan peringatan yang dibuat untuk mengumpulkan dan mengatur metrik aplikasi. Server Prometheus awalnya dikembangkan di SoundCloud sebelum menjadi alat sumber terbuka.

Prometheus adalah time-series database untuk pemantauan data deret waktu ujung ke ujung. Metrik time-series (deret waktu) adalah kumpulan data yang diambil secara berkala, misalnya data penjualan bulanan, atau lalu lintas aplikasi harian. Visibilitas yang jelas ke dalam jenis data ini memberikan insight tentang pola, tren, dan prediksi untuk perencanaan bisnis. Setelah terintegrasi dengan host, Prometheus mengumpulkan metrik aplikasi yang terkait dengan fungsi khusus yang ingin dipantau oleh tim DevOps.

Metrik Prometheus menyediakan titik data yang terdiri dari nama metrik, label, stempel waktu, dan nilai dengan menggunakan bahasa kueri yang disebut PromQL. PromQL memungkinkan pengembang dan departemen TI untuk menggabungkan metrik data dan mengubahnya menjadi histogram–grafik dan dasbor untuk visualisasi yang lebih baik. Prometheus dapat mengakses data dari basis dataperusahaan atau milik aplikasi pengekspor. Aplikasi pengekspor adalah perangkat lunak yang terkait dengan aplikasi yang berfungsi untuk menarik metrik dari berbagai aplikasi dan titik akhir.

Prometheus mengumpulkan empat jenis metrik:

Penghitung: Penghitung mengukur nilai numerik kumulatif yang hanya bertambah. Penghitung digunakan untuk mengukur tugas yang telah diselesaikan, jumlah kesalahan yang terjadi selama periode tertentu, atau jumlah proses atau layanan mikro yang sedang berjalan.

Pengukur: Pengukur memonitor nilai numerik yang naik dan turun, tergantung faktor eksternal. Mereka dapat memantau penggunaan CPU dan memori, suhu, atau ukuran antrean.

Histogram: Histogram mengukur durasi peristiwa tertentu seperti durasi permintaan atau ukuran respons. Histogram kemudian membagi rentang pengukuran ini ke dalam interval yang disebut bucket dan menentukan berapa banyak dari pengukuran ini yang masuk ke dalam masing-masing bucket.

Ringkasan: Seperti histogram, ringkasan juga mengukur durasi permintaan dan ukuran respons, tetapi juga memberikan jumlah total semua pengamatan dan total semua nilai yang diamati.

Aspek lain yang berharga dari Prometheus adalah kemampuan membuat dasbor dan grafik yang dapat diakses berdasarkan data yang dikumpulkan.

Manfaat Prometheus

Prometheus memungkinkan pemantauan aplikasi secara real-time yang memberi Anda insight akurat dan memfasilitasi pemecahan masalah dengan cepat. Sistem ini juga memungkinkan pembuatan ambang batas yang terkait dengan fungsi tertentu. Ketika ambang batas ini terpenuhi atau dilampaui, sistem ini memicu pemberitahuan yang dapat mengurangi waktu yang diperlukan untuk menyelesaikan masalah. Prometheus dapat menangani dan menyimpan data metrik dalam jumlah besar dan membuat data tersedia untuk tim analitik sesuai kebutuhan. Sistem ini tidak dimaksudkan untuk menjadi solusi penyimpanan jangka panjang tetapi sebagai alat untuk menyimpan data yang diperlukan untuk analisis segera. Periode standar untuk penyimpanan data dengan Prometheus adalah antara dua jam hingga lima belas hari.

Prometheus terintegrasi secara mulus dengan Kubernetes, platform orkestrasi kontainer sumber terbuka untuk menjadwalkan dan mengotomatiskan penerapan, pengelolaan, dan penskalaan aplikasi kontainer. Kubernetes memungkinkan perusahaan untuk membangun lingkungan hybrid dan multicloud yang kompleks yang menerapkan berbagai layanan dan layanan mikro. Mengintegrasikan Prometheus dengan Kubernetes menghadirkan observabilitas dan pengawasan keseluruhan lapisan ke dalam sistem yang kompleks ini.

Prometheus juga kompatibel dengan Grafana, alat visualisasi canggih yang membantu mengubah data menjadi dasbor, bagan, grafik, dan peringatan. Saat dipasangkan dengan Prometheus, Grafana dapat mengambil metrik dan membuat visualisasi yang jelas. Kompatibilitas antara kedua platform ini membuat data yang kompleks lebih mudah diakses dan dibagikan di antara tim yang berbeda.

Perbedaan utama antara OpenTelemetry dan Prometheus

Prometheus menawarkan alat untuk pemantauan, penyimpanan, dan visualisasi metrik, tetapi tidak melacak log atau jejak dukungan, yang digunakan untuk analisis akar masalah. Secara keseluruhan, Prometheus memiliki contoh penggunaan yang lebih terbatas daripada OpenTelemetry.

OpenTelemetry dapat memproses dan melacak metrik yang lebih kompleks daripada Prometheus melalui integrasi yang tidak bergantung pada bahasa pemrograman. OTel dapat diskalakan dengan mudah dan memiliki ekstensibilitas yang lebih besar daripada Prometheus dengan menawarkan model instrumentasi otomatis. Tidak seperti Prometheus, OpenTelemetry tidak menawarkan solusi penyimpanan dan harus dipasangkan dengan sistem back-end terpisah.

Uraian singkat:

  • Prometheus dapat mengukur metrik kumulatif, memberi Anda jumlah, sedangkan OpenTelemetry dapat mewakili metrik sebagai delta.
  • Prometheus menyediakan penyimpanan data dan metrik jangka pendek, sementara OTel tidak mendukung penyimpanan secara native, tetapi dapat dipasangkan dengan solusi penyimpanan terpisah.
  • OpenTelemetry mengumpulkan metrik, log, dan jejak menggunakan API terkonsolidasi melalui push atau pull, dan menerjemahkannya ke dalam bahasa yang sama, yang tidak dapat dilakukan oleh Prometheus. Prometheus mengumpulkan metrik dengan menarik data dari host dan terutama berfokus pada pengumpulan dan penyimpanan metrik deret waktu.
  • oTel bersifat tidak tergantung pada bahasa pemrograman dan dapat menerjemahkan metrik, sehingga memberi pengembang lebih banyak fleksibilitas. Prometheus menggunakan PromQL untuk mengumpulkan data dan metrik.
  • Prometheus menyediakan visualisasi web untuk memantau metrik yang disertai peringatan yang dapat disesuaikan. OpenTelemetry harus diintegrasikan dengan alat terpisah untuk visualisasi.
  • OTel memungkinkan nilai metrik dinyatakan sebagai bilangan bulat daripada angka floating-point, yang memberikan representasi nilai yang lebih akurat dan mudah dipahami. Prometheus tidak dapat menyatakan metrik sebagai bilangan bulat.

Kebutuhan organisasi Anda akan menentukan solusi mana yang tepat untuk Anda. Jika Anda membutuhkan pemahaman yang lebih menyeluruh tentang data Anda, bekerja di lingkungan yang kompleks dengan sistem terdistribusi, dan menginginkan fleksibilitas yang lebih tinggi, OpenTelemetry mungkin merupakan solusi yang lebih tepat. Begitu juga jika Anda perlu memantau log dan jejak.

Jika Anda perlu memonitor sistem atau operasi individual, serta mencari model peringatan, penyimpanan, dan visualisasi, Prometheus bisa jadi pilihan yang tepat.

Integrasi OpenTelemetry dan Prometheus

Kabar baiknya adalah Anda tidak harus memilih salah satu; OpenTelemetry dan Prometheus adalah platform yang kompatibel satu sama lain. SDK OTel dapat mengumpulkan metrik dari model data Prometheus dan Prometheus mendukung metrik OpenTelemetry. Menggunakan platform ini bersama-sama memberi Anda manfaat terbaik dari keduanya dan opsi pemantauan lanjutan. Sebagai contoh:

  • Ketika digunakan bersama-sama, OTel dan Prometheus menyediakan pemantauan ke dalam sistem yang kompleks dengan insight real time terhadap lingkungan aplikasi Anda.
  • Anda dapat memasangkan alat pelacakan dan pemantauan OTel dengan kemampuan peringatan Prometheus.
  • Prometheus dapat menangani data dalam jumlah besar. Fitur ini, digabungkan dengan kemampuan OTel untuk mengkonsolidasikan metrik, jejak, dan log ke dalam satu antarmuka, memberikan efisiensi yang lebih tinggi ketika menskalakan sistem dan aplikasi.
  • PromQL dapat menganalisis data yang dikumpulkan dari tangkapan data OpenTelemetry dan menggunakannya untuk membuat model visualisasi.

Selain itu, OpenTelemetry dan Prometheus berintegrasi dengan IBM Instana dan IBM Turbonomic untuk menawarkan alat pemantauan tambahan. Dengan peta dependensi Instana yang hebat, korelasi layanan hulu/hilir, dan visibilitas keseluruhan lapisan, kemampuan OTel dioptimalkan untuk memastikan bahwa semua layanan terinstrumentasi. Instana memberikan pengalaman hebat yang sama dengan data OTel seperti yang disediakannya untuk setiap sumber data lainnya, memberi Anda konteks yang dibutuhkan untuk menemukan dan memperbaiki masalah aplikasi dengan cepat. Dengan Turbonomic, Anda dapatmenggunakan alat pemantauan data Prometheus untuk mengotomatiskan keputusan sumber daya berdasarkan pengumpulan data real-time. Integrasi ini merupakan cara yang dioptimalkan untuk meningkatkan kesehatan ekosistem aplikasi Anda dan meningkatkan kinerja secara keseluruhan.

 
Penulis
Camilo Quiroz-Vázquez IBM Staff Writer