Sistem Pemantauan Prometheus
Seiring dengan meningkatnya kompleksitas sistem dan aplikasi, pemantauan menjadi sangat penting untuk memastikan kinerja, keandalan, dan skalabilitas yang optimal. Prometheus, perangkat pemantauan dan peringatan sumber terbuka, telah menjadi salah satu solusi paling populer untuk mengelola dan memvisualisasikan metrik dari berbagai sistem. Awalnya dikembangkan oleh SoundCloud, Prometheus kini menjadi proyek Cloud Native Computing Foundation (CNCF) dan telah digunakan secara luas di berbagai industri.
Dalam artikel ini, kita akan menjelajahi fitur-fitur utama Prometheus, cara kerjanya, dan langkah-langkah yang diperlukan untuk menyiapkannya untuk memantau infrastruktur dan aplikasi Anda.
Apa itu Prometheus?
Prometheus adalah sistem pemantauan canggih yang dirancang untuk mengumpulkan, menyimpan, dan menanyakan data deret waktu, yaitu pengukuran atau peristiwa yang dilacak dari waktu ke waktu. Data yang dikumpulkan oleh Prometheus dapat divisualisasikan, dianalisis, dan digunakan untuk memicu peringatan, sehingga membantu tim untuk tetap mengetahui kesehatan dan kinerja infrastruktur mereka.
Prometheus dikenal dengan beberapa fitur utama:
- Model Data Deret Waktu: Prometheus menyimpan data sebagai deret waktu, yang berarti metrik dicatat dalam interval waktu tertentu.
- Pemantauan Berbasis Tarik: Alih-alih sistem yang dipantau mendorong metrik ke server, Prometheus menggunakan model berbasis tarikan untuk mengikis metrik dari titik akhir.
- Bahasa Kueri yang Kuat (PromQL): Prometheus menyediakan bahasa kueri yang kuat, PromQL, yang memungkinkan pengguna untuk memfilter dan mengumpulkan metrik secara real-time.
- Peringatan: Prometheus terintegrasi dengan Alertmanager untuk mendefinisikan aturan dan mengirimkan pemberitahuan ketika kondisi tertentu terpenuhi.
- Penemuan Layanan: Prometheus dapat secara otomatis menemukan dan mengikis metrik dari lingkungan yang berubah secara dinamis, seperti Kubernetes.
Bagaimana Prometheus Bekerja
Prometheus mengikuti arsitektur yang sederhana namun kuat yang dirancang untuk memantau data deret waktu. Begini cara kerjanya:
- Pengumpulan Metrik (Scraping): Prometheus secara berkala mengikis metrik dari titik akhir HTTP (disebut sebagai eksportir) yang diekspos oleh aplikasi atau sistem.
- Penyimpanan Data Deret Waktu: Setelah dikumpulkan, Prometheus menyimpan metrik dalam basis data deret waktu, di mana setiap titik data dikaitkan dengan stempel waktu dan sekumpulan label.
- Melakukan kueri dengan PromQL: Pengguna dapat melakukan kueri terhadap metrik yang tersimpan menggunakan bahasa kueri Prometheus, PromQL, untuk menghasilkan grafik, dasbor, atau peringatan.
- Peringatan: Berdasarkan kondisi yang telah ditentukan, Prometheus dapat memicu peringatan menggunakan Alertmanager, yang dapat mengirimkan pemberitahuan melalui email, Slack, PagerDuty, atau layanan lainnya.
Prometheus mendukung model berbasis tarikan di mana ia secara berkala mengikis metrik dari titik akhir yang mengekspos metrik dalam format yang dapat dipahami oleh Prometheus. Hal ini membuatnya ideal untuk memantau sistem terdistribusi dan layanan mikro di mana penskalaan dan lingkungan dinamis adalah hal yang umum.
Komponen Prometheus
Prometheus terdiri dari beberapa komponen inti, masing-masing memiliki tujuan yang berbeda:
- Server Prometheus: Komponen pusat yang bertanggung jawab untuk mengumpulkan, menyimpan, dan menanyakan metrik. Komponen ini mengikis titik akhir target dan menyimpan metrik dalam basis data deret waktu.
- Eksportir: Ini adalah aplikasi atau layanan yang mengekspos metrik dalam format yang kompatibel dengan Prometheus. Pengekspor yang umum meliputi:
- Eksportir Node: Mengumpulkan metrik tingkat perangkat keras dan OS.
- Eksportir Blackbox: Untuk menyelidiki titik akhir melalui HTTP, DNS, TCP, dll.
- Eksportir khusus aplikasi: Banyak basis data (seperti PostgreSQL, MySQL) dan layanan memiliki eksportir sendiri.
- Alertmanager: Prometheus menggunakan Alertmanager untuk menangani peringatan. Alertmanager dapat merutekan peringatan ke penerima yang berbeda seperti Slack, email, atau SMS, dan mengelola aturan pembungkaman dan penghambatan.
- PromQL (Bahasa Kueri Prometheus): Bahasa kueri yang kuat yang digunakan untuk mengambil dan memanipulasi data deret waktu.
- Pushgateway: Komponen yang digunakan untuk pekerjaan yang bersifat sementara atau berumur pendek yang tidak dapat mengekspos metrik melalui pengikisan langsung (misalnya, pekerjaan batch). Pushgateway memungkinkan pekerjaan ini untuk mendorong metrik mereka ke Prometheus.
- Grafana: Meskipun bukan bagian dari Prometheus itu sendiri, Grafana adalah alat sumber terbuka yang populer yang digunakan untuk memvisualisasikan data Prometheus dan membuat dasbor interaktif.
Pengaturan Langkah-demi-Langkah Prometheus
Berikut ini adalah cara Anda dapat menyiapkan Prometheus pada server Linux dan mulai memantau metrik sistem:
Langkah 1: Instal Prometheus
- Unduh Prometheus: Kunjungi halaman unduhan Prometheus untuk mendapatkan versi terbaru Prometheus. Jalankan perintah berikut untuk mengunduh dan mengekstrak Prometheus:
wget https://github.com/prometheus/prometheus/releases/download/v2.32.1/prometheus-2.32.1.linux-amd64.tar.gz tar -xvf prometheus-2.32.1.linux-amd64.tar.gz cd prometheus-2.32.1.linux-amd64
- Mulai Prometheus: Jalankan perintah berikut untuk memulai Prometheus:
./prometheus --config.file=prometheus.yml
Secara default, Prometheus berjalan pada port 9090, dan Anda dapat mengakses antarmuka webnya dengan menavigasi ke http://localhost:9090 pada peramban Anda.
Langkah 2: Mengonfigurasi Prometheus
Konfigurasi utama untuk Prometheus dilakukan melalui berkas prometheus.yml. File ini memberi tahu Prometheus target (eksportir) mana yang akan di-scrape dan seberapa sering.
Berikut ini adalah konfigurasi dasar prometheus.yml:
global: scrape_interval: 15s # How often to scrape metrics scrape_configs: - job_name: "prometheus" static_configs: - targets: ["localhost:9090"] # Scraping Prometheus itself
Anda dapat menambahkan lebih banyak target atau eksportir sesuai kebutuhan, dan Prometheus akan secara otomatis mulai mengikisnya.
Langkah 3: Instal Pengekspor Node (untuk Metrik Sistem)
Untuk memantau metrik sistem seperti CPU, memori, disk, dan penggunaan jaringan, Anda dapat menginstal Node Exporter.
- Unduh Node Exporter:
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz cd node_exporter-1.3.1.linux-amd64
- Mulai Node Exporter: Jalankan perintah berikut untuk memulai Node Exporter:./node_exporter
Secara default, Node Exporter berjalan pada port 9100, dan menampilkan metrik seperti penggunaan CPU, statistik memori, I/O disk, dan metrik jaringan.
- Konfigurasikan Prometheus untuk mengikis Node Exporter: Tambahkan pekerjaan berikut ini ke file konfigurasi prometheus.yml:
scrape_configs: - job_name: 'node_exporter' static_configs: - targets: ['localhost:9100']
- Mulai ulang Prometheus: Setelah melakukan perubahan pada file konfigurasi, mulai ulang Prometheus untuk mulai mengikis metrik dari Node Exporter.
Langkah 4: Memvisualisasikan Metrik dengan Grafana
Untuk memvisualisasikan metrik Prometheus, Grafana adalah alat yang sangat baik. Grafana terintegrasi secara mulus dengan Prometheus dan memungkinkan Anda untuk membuat dasbor interaktif.
- Instal Grafana: Di Linux, Anda dapat menginstal Grafana dengan mengikuti petunjuk di situs web Grafana.
- Konfigurasikan Prometheus sebagai Sumber Data: Setelah menginstal Grafana:
- Masuk ke Grafana (http://localhost:3000).
- Masuk ke Konfigurasi > Sumber Data dan tambahkan Prometheus sebagai sumber data (http://localhost:9090).
- Membuat Dasbor: Sekarang Anda dapat membuat dasbor khusus Anda sendiri atau mengimpor dasbor yang sudah dibuat sebelumnya dari marketplace Grafana untuk memvisualisasikan metrik seperti penggunaan CPU, penggunaan memori, kinerja disk, dan banyak lagi.
Langkah 5: Mengatur Peringatan
Prometheus memungkinkan Anda mengonfigurasi peringatan berdasarkan kondisi tertentu, seperti penggunaan CPU yang tinggi, ruang disk yang rendah, atau kegagalan aplikasi.
- Tentukan Aturan Peringatan: Peringatan ditentukan dalam file rules.yml terpisah. Berikut ini contoh aturan peringatan yang dipicu ketika penggunaan CPU lebih tinggi dari 80%:
groups: - name: example_alerts rules: - alert: HighCPUUsage expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80 for: 5m labels: severity: warning annotations: summary: "High CPU usage detected on {{ $labels.instance }}" description: "CPU usage is above 80% for more than 5 minutes."
- Mengkonfigurasi Alertmanager: Instal dan konfigurasikan Alertmanager untuk mengirim notifikasi melalui email, Slack, atau saluran lain saat peringatan dipicu.
Kasus Penggunaan untuk Prometheus
Prometheus digunakan dalam berbagai skenario untuk memantau berbagai jenis sistem, termasuk:
- Pemantauan Infrastruktur: Mengumpulkan metrik dari server, database, dan perangkat jaringan untuk memastikan bahwa infrastruktur Anda berjalan dengan lancar.
- Pemantauan Aplikasi: Melacak metrik kinerja seperti latensi, tingkat permintaan, tingkat kesalahan, dan konsumsi sumber daya untuk aplikasi, terutama dalam arsitektur layanan mikro.
- Pemantauan Kubernetes: Prometheus terintegrasi secara native dengan Kubernetes dan dapat secara otomatis menemukan dan mengikis metrik dari pod dan layanan dalam cluster Kubernetes.
- Metrik Khusus: Prometheus memungkinkan Anda untuk membuat instrumen aplikasi Anda sendiri untuk mengekspos metrik khusus, memberikan wawasan mendalam tentang perilaku khusus aplikasi.
Kesimpulan
Prometheus adalah solusi pemantauan yang tangguh dan fleksibel yang memungkinkan pengumpulan, kueri, dan peringatan secara real-time berdasarkan data deret waktu. Baik Anda memantau metrik tingkat sistem atau performa aplikasi dalam arsitektur layanan mikro, Prometheus merupakan alat yang berharga untuk memastikan kesehatan dan stabilitas infrastruktur Anda.
Dengan mengikuti langkah-langkah yang diuraikan dalam artikel ini, Anda dapat memulai dengan Prometheus, mengumpulkan metrik dari sistem Anda, dan memvisualisasikan metrik tersebut menggunakan Grafana. Seiring berjalannya waktu, Prometheus dapat membantu Anda mendapatkan wawasan tentang tren kinerja, mendeteksi anomali, dan merespons insiden dengan cepat, sehingga meningkatkan waktu kerja dan keandalan sistem.