Lewati ke konten utama
seratusribu.com
Semua artikel
DevOps & Shell

Cara Pasang Prometheus dan Grafana untuk Monitoring VPS

Oleh Anang H. Darmawan

4 menit baca
Laporkan
Cara Pasang Prometheus dan Grafana untuk Monitoring VPS

Foto: Domaintechnik / Unsplash

Kebanyakan pemilik VPS baru memasang monitoring setelah kejadian pertama: disk penuh jam 2 pagi, database berhenti, dan website mati sampai ada yang komplain. Prometheus dan Grafana adalah kombinasi yang paling sering dipakai untuk mencegah itu, dan memasangnya tidak serumit kelihatannya.

Pembagian perannya begini. Node Exporter membaca metrik mesin seperti CPU, RAM, disk, dan jaringan, lalu membukanya di port 9100. Prometheus mengambil metrik itu secara berkala dan menyimpannya. Grafana menampilkan grafiknya. Alertmanager mengirim notifikasi kalau ada ambang yang terlewati.

Pasang dengan Docker Compose

Cara paling rapi adalah Docker Compose, karena keempat komponen bisa dinyalakan, dihentikan, dan dipindah sebagai satu paket. Satu file docker-compose.yml berisi service prometheus, node-exporter, grafana, dan alertmanager, masing-masing dengan volume supaya data tidak hilang saat container dibuat ulang.

Node Exporter butuh akses ke informasi host. README resminya mencontohkan menjalankan container dengan network host dan pid host, serta me-mount root filesystem host secara read-only, supaya yang terbaca adalah metrik mesin, bukan metrik container. Ikuti contoh di README itu untuk opsi persisnya.

Scrape config

Prometheus membaca konfigurasi dari prometheus.yml. Bagian terpenting adalah scrape_configs, yaitu daftar target yang diambil metriknya. Untuk satu VPS, cukup satu job bernama node dengan target alamat Node Exporter di port 9100. Interval pengambilan diatur lewat scrape_interval di bagian global. Banyak contoh konfigurasi memakai 15 detik, sedangkan untuk VPS kecil 30 detik atau 1 menit sudah cukup dan lebih hemat.

Setelah Prometheus jalan di port 9090, buka halaman Targets di menu Status. Target node harus berstatus UP. Kalau DOWN, penyebab paling umum adalah alamat target yang salah. Ingat, localhost di dalam container Prometheus merujuk ke container itu sendiri, tidak ke host.

Perhatikan juga retensi data. Secara default Prometheus menyimpan data 15 hari. Untuk VPS dengan disk kecil, atur flag --storage.tsdb.retention.time atau batasi ukurannya dengan --storage.tsdb.retention.size, supaya monitoring tidak justru jadi penyebab disk penuh.

Dashboard Grafana dan keamanan

Grafana berjalan di port 3000. Login pertama memakai admin dan admin, lalu Grafana meminta password baru. Tambahkan Prometheus sebagai data source, kemudian import dashboard komunitas Node Exporter Full dengan ID 1860 dari grafana.com. Dalam beberapa menit kamu sudah punya grafik CPU, memori, disk, dan jaringan yang lengkap.

Jangan buka port 9090, 9093, dan 9100 ke internet. Prometheus dan Node Exporter tidak memakai autentikasi secara default, jadi siapa pun bisa membaca metrik servermu. Hati-hati, port yang di-publish Docker bisa melewati aturan ufw, jadi lebih aman bind port ke 127.0.0.1 di docker-compose.yml dan akses lewat SSH tunnel. Kalau Grafana perlu diakses dari luar, taruh di belakang reverse proxy dengan HTTPS.

Alert yang benar-benar berguna

Mulai dengan sedikit alert. Empat sudah cukup: CPU tinggi berkepanjangan, memori hampir habis, disk hampir penuh, dan target down. Contoh aturan disk: node_filesystem_avail_bytes dibagi node_filesystem_size_bytes untuk mountpoint /, dikali 100, kurang dari 10 selama 5 menit. Durasi itu penting supaya lonjakan sesaat tidak membuat ponselmu berbunyi terus.

Alertmanager bisa mengirim ke berbagai kanal, termasuk Telegram lewat receiver telegram_configs yang butuh bot token dan chat ID. Uji dulu dengan mematikan Node Exporter sebentar, lalu pastikan alert target down benar-benar sampai.

Kapan terlalu berat untuk VPS 1 GB

Pertanyaan yang sering muncul: layakkah stack ini dipasang di VPS 1 GB yang juga menjalankan aplikasi? Tergantung isi VPS-nya. Prometheus dan Grafana sendiri memakan memori, dan di VPS 1 GB yang sudah terisi web server dan database, sisa ruangnya tipis. Jangan menebak. Pasang, jalankan beberapa hari, lalu cek pemakaian memori tiap container dengan docker stats dan sisa RAM dengan free -m. Kalau aplikasi utama mulai sering memakai swap, stack monitoring harus pindah.

Ada dua jalan keluar. Pertama, jalankan hanya Node Exporter di VPS aplikasi, lalu taruh Prometheus dan Grafana di VPS lain yang memantau beberapa server sekaligus. Kedua, kalau yang kamu butuhkan hanya peringatan saat resource menipis, skrip monitoring server dengan alert Telegram mengecek CPU, RAM, dan disk berdasarkan ambang batas dan mengirim peringatan ke bot Telegram tanpa dashboard berat, seharga Rp150.000.

Kalau kamu ingin stack lengkap tanpa merakit dari nol, stack monitoring Prometheus dan Grafana berisi docker-compose.yml dengan lima service (Prometheus, Node Exporter, cAdvisor, Alertmanager, Grafana), empat alert dasar yang sudah dikonfigurasi, datasource Grafana yang otomatis ter-provision, dan panduan setup bot Telegram untuk alert. Harganya Rp275.000.

Langkah yang bisa kamu lakukan sekarang: login ke VPS, jalankan free -m dan df -h, lalu catat angkanya. Kalau RAM yang tersisa sudah tipis, pilih jalur skrip ringan atau server monitoring terpisah. Kalau masih longgar, stack lengkap layak dipasang.