Prometheus adalah open-source, sistem pemantauan berbasis metrik. Itu mengumpulkan data dari layanan dan host dengan mengirimkan permintaan HTTP pada titik akhir metrik. Itu kemudian menyimpan hasilnya dalam database deret waktu dan membuatnya tersedia untuk analisis dan peringatan.
Daftar isi
Mengapa memantau?
- Mengaktifkan peringatan saat terjadi kesalahan, sebaiknya sebelum terjadi kesalahan. Sehingga seseorang dapat melihatnya.
- Ini memberikan wawasan untuk mengaktifkan analisis, debugging, dan penyelesaian masalah.
- Ini memungkinkan Anda untuk melihat tren/perubahan dari waktu ke waktu. Misalnya, berapa banyak sesi aktif pada waktu tertentu. Ini membantu dalam keputusan desain dan perencanaan kapasitas.
Pemantauan biasanya berkaitan dengan peristiwa. Suatu peristiwa dapat mencakup menerima permintaan HTTP, mengirim respons, membaca dari disk, login pengguna. Pemantauan sistem dapat mencakup pembuatan profil, logging, pelacakan, metrik, peringatan & visualisasi.
Pemantauan Blackbox vs. Whitebox
Pemantauan termasuk dalam dua kategori utama:
Pemantauan kotak hitam
Dalam pemantauan Blackbox, pemantauan berada di tingkat aplikasi atau host seperti yang diamati dari luar. Ini bisa sangat membatasi.
Pemantauan kotak putih
Pemantauan whitebox berarti memantau internal layanan. Itu akan memaparkan data tentang keadaan dan kinerja komponen internal.
Empat sinyal emas
Menurut Googlejika Anda hanya dapat mengukur empat metrik sistem yang menghadap pengguna, fokuskan pada empat berikut, yang disebut Empat sinyal emas:
#1. Latensi
Waktu yang diperlukan untuk melayani permintaan-berhasil atau gagal. Penting untuk melacak tidak hanya permintaan yang berhasil tetapi juga permintaan yang gagal.
#2. Lalu lintas
Ukuran berapa banyak permintaan ditempatkan pada sistem Anda. Untuk layanan web, ini biasanya permintaan HTTP per detik.
#3. Kesalahan
Tingkat permintaan yang gagal.
#4. Kejenuhan
Seberapa lengkap layanan Anda. Peningkatan latensi sering kali merupakan indikator kejenuhan yang penting. Banyak sistem mengalami penurunan kinerja jauh sebelum mencapai pemanfaatan 100%.
Jenis metrik Prometheus
Metrik Prometheus terdiri dari empat jenis utama:
#1. Menangkal
Nilai counter akan selalu meningkat. Itu tidak pernah bisa berkurang, tetapi bisa diatur ulang ke nol. Jadi, jika scrape gagal, itu hanya berarti ada titik data yang terlewatkan. Peningkatan kumulatif akan tersedia pada pembacaan berikutnya. Contoh:
- Jumlah total permintaan HTTP yang diterima
- Jumlah pengecualian.
#2. Mengukur
Pengukur adalah snapshot pada titik waktu tertentu. Itu bisa meningkat atau menurun. Jika pengambilan data gagal, Anda kehilangan sampel; pengambilan berikutnya mungkin menampilkan nilai yang berbeda: contoh ruang disk, penggunaan memori.
#3. Histogram
Pengamatan sampel histogram dan menghitungnya dalam keranjang yang dapat dikonfigurasi. Mereka digunakan untuk hal-hal seperti durasi permintaan atau ukuran respons. Misalnya, Anda dapat mengukur durasi permintaan untuk permintaan HTTP tertentu. Histogram akan memiliki sekumpulan bucket, misalnya 1 md, 10 md, dan 25 md. Daripada menyimpan setiap durasi untuk setiap permintaan, Prometheus akan menyimpan frekuensi permintaan yang termasuk dalam keranjang tertentu.
#4. Ringkasan
Mirip dengan pengamatan sampel histogram, biasanya durasi permintaan atau ukuran respons. Ini akan memberikan jumlah total pengamatan dan jumlah semua nilai yang diamati, memungkinkan Anda untuk menghitung rata-rata nilai yang diamati. Misalnya, dalam satu menit, Anda memiliki tiga permintaan yang memerlukan waktu 2,3,4 detik. Jumlahnya adalah 9, dan hitungannya adalah 3. Latensinya adalah 3 detik.
Komponen ekosistem Prometheus
Server Prometheus
Mengumpulkan metrik, menyimpannya, dan menyediakannya untuk kueri, mengirimkan peringatan berdasarkan metrik yang dikumpulkan.
Menggores
Prometheus adalah sistem berbasis tarikan. Untuk mengambil metrik, Prometheus mengirimkan permintaan HTTP yang disebut scrape. Ini mengirimkan goresan ke target berdasarkan konfigurasinya.
Setiap target (ditentukan secara statis, atau ditemukan secara dinamis) dikikis pada interval reguler (interval gesekan). Setiap gesekan membaca titik akhir HTTP /metrics untuk mendapatkan status metrik klien saat ini dan mempertahankan nilai dalam basis data deret waktu Prometheus.
Ada lebih banyak database deret waktu untuk solusi pemantauan yang mungkin ingin Anda jelajahi.
Perpustakaan klien
Untuk memantau layanan, Anda perlu menambahkan instrumentasi ke kode Anda. Ada pustaka klien yang tersedia untuk semua bahasa dan runtime populer. Dengan menggunakan pustaka ini, setelah Anda menambahkan beberapa baris kode, kode Anda dapat mulai menampilkan metrik. Ini disebut instrumentasi langsung. Pustaka ini memungkinkan Anda untuk menentukan metrik internal dan juga memaparkannya melalui titik akhir HTTP. Saat Prometheus menghapus titik akhir HTTP metrik, pustaka klien mengirimkan metrik ke server.
Pustaka klien resmi ditawarkan oleh Prometheus untuk Go, Java, Python, dan Ruby. Prometheus memiliki ekosistem terbuka. Ada juga pustaka klien buatan komunitas yang tersedia untuk C, PHP, Node.js, C#/.NET, dan banyak lainnya.
Eksportir
Banyak aplikasi memaparkan metrik dalam format non-Prometheus. Untuk ini dan untuk aplikasi yang tidak Anda miliki atau yang Anda tidak memiliki akses ke kodenya, Anda tidak dapat menambahkan instrumentasi secara langsung. Misalnya server MySQL, Kafka, JMX, HAProxy, dan NGINX. Dalam skenario ini, Anda memanfaatkan eksportir.
Eksportir adalah alat yang Anda gunakan bersama dengan aplikasi yang Anda inginkan dari metrik. Eksportir bertindak seperti proxy antara aplikasi dan Prometheus. Ini akan menerima permintaan dari server Prometheus, mengumpulkan data dari log akses, log kesalahan aplikasi, mengubahnya menjadi format yang benar, dan akhirnya kembali ke server Prometheus.
Beberapa eksportir populer adalah:
- Windows – untuk metrik server Windows
- Node – untuk metrik server Linux
- Kotak hitam – untuk metrik kinerja DNS dan Situs Web
- JMX – untuk metrik aplikasi berbasis Java
Setelah aplikasi diinstrumentasi, atau pengekspor sudah ada, Anda perlu memberi tahu Prometheus, di mana mereka berada. Ini dapat dilakukan dengan menggunakan konfigurasi statis. Dalam kasus lingkungan yang dinamis, hal ini tidak dapat dilakukan; oleh karena itu penemuan layanan digunakan.
Memperingatkan
Peringatan dengan Prometheus terdiri dari dua bagian –
Aturan peringatan mengirim peringatan ke Alertmanager.
Alertmanager kemudian mengelola peringatan tersebut. Itu mengirimkan pemberitahuan menggunakan banyak integrasi out-of-the-box seperti email, Slack, Hipchat, dan PagerDuty. Alertmanager juga dapat melakukan pembungkaman atau agregasi untuk mengurangi jumlah notifikasi.
Berikut adalah panduan untuk memonitor server Linux menggunakan Prometheus dan Dashboard.
Memvisualisasikan dengan Dasbor
Prometheus memiliki sejumlah API yang dengannya kueri PromQL dapat menghasilkan data mentah untuk visualisasi.
Meskipun Prometheus menyertakan browser ekspresi yang dapat digunakan untuk kueri ad-hoc, alat terbaik yang tersedia adalah Grafana. Grafana sepenuhnya terintegrasi dengan Prometheus dan dapat menghasilkan berbagai macam dasbor.
Anda perlu mengonfigurasi Prometheus sebagai sumber data untuk Grafana.
Anda dapat menambahkan dasbor dengan:
- Mengimpor dasbor buatan komunitas
- Membangun milik Anda sendiri
- Menggunakan dasbor yang telah ditentukan sebelumnya.
Ini adalah tampilan dasbor pengekspor node yang telah ditentukan sebelumnya:
Grafana memiliki modul worldPing yang memungkinkan Anda memantau situs dan metrik kinerja DNS di seluruh dunia.
Ringkasan
Prometheus memiliki persyaratan yang sangat sedikit. Ini bisa sangat sederhana untuk dijalankan karena merupakan biner tunggal dengan file konfigurasi. Itu dapat menangani ribuan target dan menelan jutaan sampel per detik. Prometheus dirancang untuk melacak keseluruhan sistem, kesehatan, perilaku sistem.
Grafana adalah alat terbaik yang tersedia untuk visualisasi metrik dan terintegrasi dengan mulus Prometheus.