Monitoring Server dengan Prometheus dan Grafana: Panduan Pemula
Pengantar
Monitoring server adalah aspek penting dalam administrasi sistem dan DevOps. Memantau sumber daya dan performa server Anda memungkinkan Anda mendeteksi masalah sebelum memengaruhi pengguna, mengoptimalkan kinerja, dan merencanakan peningkatan kapasitas di masa mendatang. Prometheus dan Grafana adalah kombinasi ampuh untuk monitoring server. Prometheus adalah sistem monitoring dan alerting sumber terbuka yang mengumpulkan metrik dari target yang dikonfigurasi, menyimpannya sebagai data deret waktu, dan menyediakan bahasa kueri yang fleksibel. Grafana adalah platform visualisasi dan analisis data yang memungkinkan Anda membuat dasbor yang indah dan informatif dari data yang dikumpulkan oleh Prometheus.
Panduan ini akan memandu Anda melalui langkah-langkah dasar untuk menyiapkan Prometheus dan Grafana untuk memantau server Anda. Kami akan membahas instalasi, konfigurasi, dan cara membuat dasbor sederhana.
Mengapa Memilih Prometheus dan Grafana?
Sebelum kita masuk ke detail teknis, mari kita pahami mengapa Prometheus dan Grafana menjadi pilihan populer untuk monitoring:
- Sumber Terbuka dan Gratis: Keduanya adalah proyek sumber terbuka dengan komunitas yang besar dan aktif. Ini berarti Anda dapat menggunakannya secara gratis dan mendapatkan dukungan dari komunitas jika Anda menghadapi masalah.
- Skalabilitas: Prometheus dirancang untuk menangani ribuan server dan jutaan metrik. Ia dapat diskalakan secara horizontal dengan mudah untuk memenuhi kebutuhan Anda.
- Fleksibilitas: Prometheus menyediakan bahasa kueri yang kuat (PromQL) yang memungkinkan Anda mengekstrak wawasan berharga dari data monitoring Anda. Grafana mendukung berbagai sumber data, termasuk Prometheus, dan memungkinkan Anda membuat dasbor yang disesuaikan.
- Integrasi: Prometheus dan Grafana terintegrasi dengan banyak alat dan teknologi lain dalam ekosistem DevOps.
- Visualisasi: Grafana menyediakan visualisasi data yang kaya, termasuk grafik, histogram, dan peta panas, yang memudahkan untuk memahami tren dan mengidentifikasi anomali.
Prasyarat
Sebelum Anda mulai, pastikan Anda memiliki hal berikut:
- Akses ke server yang ingin Anda pantau.
- Akses ke server atau mesin virtual untuk menjalankan Prometheus dan Grafana.
- Akses SSH ke server-server tersebut.
- Pengetahuan dasar tentang baris perintah Linux.
Langkah 1: Instalasi Prometheus
Langkah pertama adalah menginstal Prometheus. Instruksi ini akan fokus pada instalasi di Linux, tetapi prosesnya serupa di sistem operasi lain.
Unduh Prometheus
Buka browser web Anda dan navigasikan ke halaman unduh Prometheus. Unduh versi terbaru dari Prometheus untuk sistem operasi Anda.
Sebagai alternatif, Anda dapat menggunakan perintah `wget` untuk mengunduh Prometheus langsung dari baris perintah:
wget https://github.com/prometheus/prometheus/releases/download/v[VERSION]/prometheus-[VERSION].linux-amd64.tar.gz
Ganti `[VERSION]` dengan versi terbaru Prometheus.
Ekstrak Prometheus
Setelah mengunduh Prometheus, ekstrak arsip menggunakan perintah berikut:
tar xvf prometheus-[VERSION].linux-amd64.tar.gz
Pindahkan Biner Prometheus
Pindahkan biner Prometheus dan `promtool` ke direktori `/usr/local/bin/`:
cd prometheus-[VERSION].linux-amd64
sudo cp prometheus promtool /usr/local/bin/
Buat Direktori untuk Konfigurasi dan Data
Buat direktori untuk menyimpan file konfigurasi dan data Prometheus:
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
Pindahkan File Konfigurasi
Pindahkan file konfigurasi `prometheus.yml` ke direktori `/etc/prometheus/`:
sudo cp prometheus.yml /etc/prometheus/
Atur Kepemilikan Direktori
Atur kepemilikan direktori `/etc/prometheus/` dan `/var/lib/prometheus/` ke pengguna yang akan menjalankan Prometheus:
sudo chown -R [USER]:[USER] /etc/prometheus/ /var/lib/prometheus/
Ganti `[USER]` dengan nama pengguna yang akan menjalankan Prometheus.
Buat File Layanan Systemd
Untuk menjalankan Prometheus sebagai layanan systemd, buat file layanan bernama `prometheus.service` di direktori `/etc/systemd/system/`:
sudo nano /etc/systemd/system/prometheus.service
Tambahkan konten berikut ke file:
[Unit]
Description=Prometheus Monitoring System
Wants=network-online.target
After=network-online.target
[Service]
User=[USER]
Group=[USER]
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus/ \
--web.console.path=/usr/local/share/prometheus/consoles \
--web.console.templates=/usr/local/share/prometheus/consoles_templates
[Install]
WantedBy=multi-user.target
Ganti `[USER]` dengan nama pengguna yang akan menjalankan Prometheus.
Aktifkan dan Mulai Prometheus
Aktifkan dan mulai layanan Prometheus menggunakan perintah berikut:
sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus
Verifikasi Status Prometheus
Verifikasi bahwa Prometheus berjalan dengan benar menggunakan perintah berikut:
sudo systemctl status prometheus
Anda juga dapat mengakses antarmuka web Prometheus dengan membuka browser web Anda dan navigasikan ke `http://[SERVER_IP]:9090`. Ganti `[SERVER_IP]` dengan alamat IP server Anda.
Langkah 2: Instalasi Node Exporter
Prometheus sendiri tidak dapat mengumpulkan metrik dari server Anda. Kita memerlukan alat yang disebut *exporter* untuk mengekspos metrik dalam format yang dapat dibaca oleh Prometheus. Node Exporter adalah exporter resmi untuk metrik terkait sistem (CPU, memori, disk, jaringan, dll.) di sistem Linux.
Unduh Node Exporter
Buka browser web Anda dan navigasikan ke halaman unduh Prometheus. Unduh versi terbaru dari Node Exporter untuk sistem operasi Anda.
Sebagai alternatif, Anda dapat menggunakan perintah `wget` untuk mengunduh Node Exporter langsung dari baris perintah:
wget https://github.com/prometheus/node_exporter/releases/download/v[VERSION]/node_exporter-[VERSION].linux-amd64.tar.gz
Ganti `[VERSION]` dengan versi terbaru Node Exporter.
Ekstrak Node Exporter
Setelah mengunduh Node Exporter, ekstrak arsip menggunakan perintah berikut:
tar xvf node_exporter-[VERSION].linux-amd64.tar.gz
Pindahkan Biner Node Exporter
Pindahkan biner `node_exporter` ke direktori `/usr/local/bin/`:
cd node_exporter-[VERSION].linux-amd64
sudo cp node_exporter /usr/local/bin/
Buat File Layanan Systemd
Untuk menjalankan Node Exporter sebagai layanan systemd, buat file layanan bernama `node_exporter.service` di direktori `/etc/systemd/system/`:
sudo nano /etc/systemd/system/node_exporter.service
Tambahkan konten berikut ke file:
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=[USER]
Group=[USER]
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
Ganti `[USER]` dengan nama pengguna yang akan menjalankan Node Exporter.
Aktifkan dan Mulai Node Exporter
Aktifkan dan mulai layanan Node Exporter menggunakan perintah berikut:
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
Verifikasi Status Node Exporter
Verifikasi bahwa Node Exporter berjalan dengan benar menggunakan perintah berikut:
sudo systemctl status node_exporter
Anda juga dapat mengakses antarmuka web Node Exporter dengan membuka browser web Anda dan navigasikan ke `http://[SERVER_IP]:9100/metrics`. Ganti `[SERVER_IP]` dengan alamat IP server Anda. Anda akan melihat serangkaian metrik dalam format teks.
Langkah 3: Konfigurasi Prometheus untuk Memantau Node Exporter
Sekarang kita perlu mengkonfigurasi Prometheus untuk mengambil metrik dari Node Exporter. Edit file konfigurasi `prometheus.yml` di direktori `/etc/prometheus/`:
sudo nano /etc/prometheus/prometheus.yml
Tambahkan konfigurasi berikut ke bagian `scrape_configs`:
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['[SERVER_IP]:9100']
Ganti `[SERVER_IP]` dengan alamat IP server tempat Node Exporter berjalan. Jika Node Exporter berjalan di server yang sama dengan Prometheus, Anda dapat menggunakan `localhost`.
Muat Ulang Konfigurasi Prometheus
Muat ulang konfigurasi Prometheus agar perubahan diterapkan menggunakan perintah berikut:
sudo systemctl reload prometheus
Verifikasi di Antarmuka Web Prometheus
Buka antarmuka web Prometheus di `http://[SERVER_IP]:9090` dan navigasikan ke bagian “Status” -> “Targets”. Anda akan melihat target `node_exporter` dengan status “UP”.
Anda juga dapat menguji kueri PromQL di antarmuka web Prometheus. Misalnya, coba kueri `node_cpu_seconds_total` untuk melihat metrik penggunaan CPU dari Node Exporter.
Langkah 4: Instalasi Grafana
Sekarang kita memiliki Prometheus yang mengumpulkan metrik, kita dapat menggunakan Grafana untuk memvisualisasikan data. Instruksi ini akan fokus pada instalasi di Linux menggunakan APT (untuk sistem berbasis Debian/Ubuntu).
Tambahkan Repository Grafana
Tambahkan repository Grafana ke sistem Anda:
sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
Instal Grafana
Instal Grafana menggunakan perintah berikut:
sudo apt-get update
sudo apt-get install grafana
Mulai dan Aktifkan Grafana
Mulai dan aktifkan layanan Grafana menggunakan perintah berikut:
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
Verifikasi Status Grafana
Verifikasi bahwa Grafana berjalan dengan benar menggunakan perintah berikut:
sudo systemctl status grafana-server
Anda dapat mengakses antarmuka web Grafana dengan membuka browser web Anda dan navigasikan ke `http://[SERVER_IP]:3000`. Ganti `[SERVER_IP]` dengan alamat IP server Anda. Default username dan password adalah `admin`.
Langkah 5: Konfigurasi Sumber Data Prometheus di Grafana
Setelah Anda masuk ke Grafana, Anda perlu mengkonfigurasi Prometheus sebagai sumber data.
- Klik ikon roda gigi di menu samping kiri untuk membuka “Connections”.
- Klik “Add data source”.
- Cari dan pilih “Prometheus”.
- Di bagian “HTTP”, masukkan URL Prometheus Anda di kolom “URL” (misalnya, `http://[SERVER_IP]:9090`). Ganti `[SERVER_IP]` dengan alamat IP server tempat Prometheus berjalan.
- Gulir ke bawah dan klik tombol “Save & test”.
- Grafana akan mencoba terhubung ke Prometheus dan menampilkan pesan sukses jika berhasil.
Langkah 6: Membuat Dasbor Grafana
Sekarang kita memiliki Prometheus yang terhubung ke Grafana, kita dapat membuat dasbor untuk memvisualisasikan metrik server kita.
- Klik ikon “+” di menu samping kiri dan pilih “Dashboard”.
- Klik “Add new panel”.
- Pilih sumber data Prometheus Anda dari dropdown “Data source”.
- Di bagian “Query”, masukkan kueri PromQL yang ingin Anda visualisasikan. Misalnya, untuk menampilkan penggunaan CPU, Anda dapat menggunakan kueri `100 – (avg by (instance) (irate(node_cpu_seconds_total{mode=”idle”}[5m])) * 100)`.
- Pilih visualisasi yang Anda inginkan dari dropdown “Visualization”. Grafik deret waktu adalah pilihan umum untuk sebagian besar metrik.
- Konfigurasi opsi visualisasi lainnya sesuai kebutuhan, seperti judul, sumbu, dan warna.
- Klik “Apply” untuk menyimpan panel.
- Tambahkan lebih banyak panel ke dasbor Anda untuk memvisualisasikan metrik lain, seperti penggunaan memori, penggunaan disk, dan lalu lintas jaringan.
- Klik tombol “Save” di sudut kanan atas untuk menyimpan dasbor Anda. Beri dasbor Anda nama yang deskriptif.
Contoh Kueri PromQL untuk Dasbor
Berikut adalah beberapa contoh kueri PromQL yang dapat Anda gunakan untuk membuat dasbor monitoring server:
- Penggunaan CPU: `100 – (avg by (instance) (irate(node_cpu_seconds_total{mode=”idle”}[5m])) * 100)`
- Penggunaan Memori: `(node_memory_MemTotal_bytes – node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100`
- Penggunaan Disk: `(node_filesystem_size_bytes{fstype!=”rootfs”} – node_filesystem_free_bytes{fstype!=”rootfs”}) / node_filesystem_size_bytes{fstype!=”rootfs”} * 100`
- Lalu Lintas Jaringan (Masuk): `irate(node_network_receive_bytes_total[5m])`
- Lalu Lintas Jaringan (Keluar): `irate(node_network_transmit_bytes_total[5m])`
- Uptime Server: `time() – node_boot_time_seconds`
Dasbor yang Sudah Dibuat Sebelumnya
Jika Anda tidak ingin membuat dasbor dari awal, Anda dapat mengimpor dasbor yang sudah dibuat sebelumnya dari Grafana Labs. Ada banyak dasbor yang tersedia untuk Node Exporter dan aplikasi lain.
- Cari dasbor yang ingin Anda impor di Grafana Labs.
- Salin ID dasbor.
- Di Grafana, klik ikon “+” di menu samping kiri dan pilih “Import”.
- Masukkan ID dasbor dan klik “Load”.
- Pilih sumber data Prometheus Anda dari dropdown dan klik “Import”.
Alerting dengan Prometheus
Prometheus juga dapat dikonfigurasi untuk mengirimkan notifikasi (alerts) ketika metrik tertentu mencapai ambang batas yang ditentukan. Ini memungkinkan Anda untuk merespons masalah secara proaktif sebelum memengaruhi pengguna.
Konfigurasi Alertmanager
Alertmanager adalah alat yang menangani alerting di Prometheus. Pertama, Anda perlu mengunduh dan menginstal Alertmanager (mirip dengan cara Anda menginstal Prometheus dan Node Exporter).
Buat File Aturan Alert
Buat file bernama `rules.yml` di direktori `/etc/prometheus/` untuk menentukan aturan alert Anda:
sudo nano /etc/prometheus/rules.yml
Tambahkan aturan berikut ke file (contoh: peringatan jika penggunaan CPU tinggi):
groups:
- name: ExampleAlerts
rules:
- alert: HighCPUUsage
expr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: critical
annotations:
summary: "High CPU usage detected on {{ $labels.instance }}"
description: "CPU usage is above 80% for more than 5 minutes. Value: {{ $value }}"
Dalam contoh ini, alert `HighCPUUsage` akan dipicu jika penggunaan CPU lebih dari 80% selama 5 menit. `expr` berisi kueri PromQL yang mengevaluasi kondisi alert. `for` menentukan durasi kondisi harus benar sebelum alert dipicu. `labels` memungkinkan Anda menambahkan label ke alert, seperti `severity`. `annotations` menyediakan informasi tambahan tentang alert, seperti `summary` dan `description`.
Konfigurasi Prometheus untuk Menggunakan File Aturan
Edit file konfigurasi `prometheus.yml` dan tambahkan konfigurasi berikut di bagian paling atas untuk menentukan lokasi file aturan:
rule_files:
- "/etc/prometheus/rules.yml"
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['[SERVER_IP]:9100']
Muat Ulang Konfigurasi Prometheus
Muat ulang konfigurasi Prometheus:
sudo systemctl reload prometheus
Konfigurasi Alertmanager (Contoh Sederhana)
Konfigurasi dasar Alertmanager melibatkan mengunduh dan menginstal biner Alertmanager, membuat file konfigurasi Alertmanager ( `alertmanager.yml`), dan memulainya. Detail konfigurasi spesifik (seperti routing alert ke email, Slack, dll.) berada di luar cakupan panduan pemula ini, tetapi ada banyak dokumentasi yang tersedia online. Untuk pengujian awal, Alertmanager dapat dijalankan dengan konfigurasi minimal. Perhatikan bahwa ini HANYA untuk pengujian dan bukan untuk digunakan di lingkungan produksi.
Memverifikasi Alert di Antarmuka Web Prometheus
Buka antarmuka web Prometheus dan navigasikan ke bagian “Alerts”. Anda akan melihat alert `HighCPUUsage` jika kondisi terpenuhi.
Praktik Terbaik
Berikut adalah beberapa praktik terbaik untuk monitoring server dengan Prometheus dan Grafana:
- Pantau metrik yang relevan: Fokus pada metrik yang paling penting untuk kesehatan dan kinerja server Anda. Jangan mencoba memantau semuanya, karena ini dapat membebani sistem dan membuat sulit untuk mengidentifikasi masalah.
- Gunakan ambang batas yang wajar: Atur ambang batas yang realistis untuk alert Anda. Jangan terlalu sensitif, karena ini dapat menyebabkan terlalu banyak peringatan palsu.
- Buat dasbor yang jelas dan informatif: Desain dasbor Anda agar mudah dibaca dan dipahami. Gunakan visualisasi yang tepat untuk setiap metrik.
- Dokumentasikan konfigurasi Anda: Pastikan Anda mendokumentasikan konfigurasi Prometheus, Grafana, dan Alertmanager Anda. Ini akan memudahkan untuk memecahkan masalah dan memelihara sistem monitoring Anda.
- Tinjau dasbor dan alert Anda secara teratur: Pastikan dasbor dan alert Anda masih relevan dan efektif. Sesuaikan jika perlu.
- Amankan Prometheus dan Grafana: Gunakan otentikasi dan otorisasi untuk membatasi akses ke Prometheus dan Grafana. Pertimbangkan untuk menggunakan HTTPS untuk mengenkripsi lalu lintas.
- Pertimbangkan Skala: Saat infrastruktur Anda tumbuh, rencanakan cara Anda akan menskalakan Prometheus dan Grafana. Pertimbangkan untuk menggunakan solusi seperti Thanos atau Cortex untuk monitoring terdistribusi.
Kesimpulan
Monitoring server adalah aspek penting dalam administrasi sistem dan DevOps. Prometheus dan Grafana adalah kombinasi ampuh untuk monitoring server yang memungkinkan Anda mengumpulkan, menyimpan, dan memvisualisasikan metrik dari server Anda. Dengan mengikuti panduan ini, Anda dapat menyiapkan Prometheus dan Grafana untuk memantau server Anda dan mendapatkan wawasan berharga tentang kinerjanya. Ingatlah untuk terus belajar dan bereksperimen untuk memaksimalkan potensi alat-alat ini dan menjaga sistem Anda berjalan lancar.
“`