Prometheus adalah perangkat open source untuk mengelola pemantauan dan pemberitahuan, yang semakin populer seiring dengan pertumbuhan Kubernetes. Prometheus yang awalnya dibangun di SoundCloud ini berasal dari project sistem pemantauan di Google yang disebut Borgmon.
Prometheus adalah model terdepan dalam penggunaan pendekatan berbasis pull untuk mengumpulkan metrik dari aplikasi dan infrastruktur. Artinya, Prometheus akan secara berkala mengirimkan permintaan ke target dan metrik yang dikumpulkan kemudian disimpan dalam database deret waktu. Dalam instance Prometheus yang dikelola sendiri, Anda menyediakan infrastruktur untuk mengumpulkan, menyimpan, dan membuat kueri metrik. Dalam Prometheus versi terkelola, vendor menyediakan semua infrastruktur dan Perjanjian Tingkat Layanan (SLA) untuk waktu beroperasi layanan.
Prometheus menyediakan bahasa kueri yang disebut PromQL untuk mengkueri data deret waktu. Ada banyak project yang memanfaatkan PromQL, termasuk Grafana dan Alertmanager, untuk membantu tugas analisis dan operasional seperti membuat visualisasi data, membuat pemberitahuan, serta menskalakan infrastruktur pemantauan.
Prometheus digunakan untuk mengumpulkan metrik dari aplikasi dan infrastruktur Anda. Metrik ini dapat digunakan untuk melacak kondisi sistem, mengidentifikasi potensi masalah, dan memecahkan masalah.
Berikut ini beberapa manfaat khusus menggunakan Prometheus:
Prometheus menggunakan model pull untuk mengumpulkan metrik, yang berarti bahwa server Prometheus melakukan polling pada sistem atau aplikasi yang dipantau untuk pengumpulan metrik. Hal ini berbeda dengan model push, yang digunakan oleh banyak sistem pemantauan lainnya, yang memungkinkan Anda mengubah kode aplikasi untuk mengirimkan metrik ke server secara berkala.
Model pull tidak mengharuskan sistem atau aplikasi yang dipantau untuk mengetahui server Prometheus, sehingga dapat ditambahkan ke sistem pemantauan tanpa membuat perubahan pada kode aplikasi. Model pull hanya mengumpulkan metrik saat dibutuhkan, sehingga Prometheus tidak memboroskan resource dengan mengumpulkan metrik yang tidak digunakan.
Selain itu, Prometheus dapat menemukan sumber data secara otomatis melalui cara berikut:
Setelah menemukan resource, Prometheus akan melakukan scraping pada resource secara berkala untuk mengumpulkan metrik. Metrik tersebut kemudian disimpan dalam database Prometheus, yang memfasilitasi pembuatan kueri dan visualisasi metrik.
PromQL adalah bahasa kueri yang canggih dan fleksibel untuk metrik yang dikumpulkan oleh Prometheus yang dapat digunakan untuk membuat grafik, tabel, dan pemberitahuan ad-hoc.
PromQL menggunakan bahasa kueri fungsional yang memungkinkan pengguna memilih dan menggabungkan data deret waktu secara real time. Hasil ekspresi dapat ditampilkan sebagai grafik, dilihat sebagai data tabulasi di browser ekspresi Prometheus, atau digunakan oleh sistem eksternal melalui HTTP API.
Berikut adalah beberapa fungsi utama Prometheus dan PromQL:
Berikut adalah beberapa contoh kueri PromQL:
Untuk mendapatkan penggunaan CPU rata-rata per detik untuk aplikasi tertentu, Anda dapat menggunakan kueri berikut:
Untuk mendapatkan jumlah permintaan yang telah dibuat ke endpoint tertentu, Anda dapat menggunakan kueri berikut:
Untuk mendapatkan jumlah total error yang ditampilkan dari endpoint tertentu, Anda dapat menggunakan kueri berikut: