“Servernya lambat” adalah laporan bug yang tidak berguna, kecuali Anda bisa membuka grafik dan melihat memori naik selama tiga hari sebelum crash. Itulah yang diberikan Prometheus dan Grafana: CPU, RAM, disk, dan jaringan setiap server, direkam setiap 15 detik dan digambar sebagai grafik yang bisa Anda gulir ke belakang. Taruh mereka di VPS kecil tersendiri, dan mereka tetap mengawasi bahkan ketika mesin produksi tumbang.
Komponennya
- node_exporter di setiap server yang ingin Anda pantau: menyediakan metrik sistem di port 9100.
- Prometheus di VPS pemantauan: mengambil (scrape) metrik tersebut dan menyimpannya.
- Grafana: dasbornya, di balik HTTPS.
- Opsional Alertmanager atau peringatan Grafana untuk mengabari Anda saat sesuatu melewati batas.
Yang Anda perlukan
- Micro-IP ($10/bln, 2 vCPU, 2 GB RAM, 25 GB) memantau satu hingga dua lusin server. Lebih banyak host, metrik aplikasi kustom, atau retensi berbulan-bulan: Small-IP.
- IPv4 khusus untuk server pemantauan: Grafana disajikan lewat HTTPS, dan target Anda bisa memasukkan satu alamat tetap ke daftar izin untuk port 9100.
1. node_exporter di setiap target
apt install -y prometheus-node-exporter
# allow only the monitoring server to scrape it
ufw allow from 203.0.113.10 to any port 9100 proto tcp
Ganti 203.0.113.10 dengan alamat VPS pemantauan Anda. Jangan pernah membiarkan 9100 terbuka untuk dunia: port itu membocorkan banyak hal tentang server Anda.
2. Prometheus dan Grafana di VPS pemantauan
apt update && apt install -y docker.io docker-compose-v2 caddy
mkdir -p /opt/monitoring && cd /opt/monitoring
cat > prometheus.yml <<'EOF'
global:
scrape_interval: 15s
scrape_configs:
- job_name: nodes
static_configs:
- targets: ['198.51.100.21:9100', '198.51.100.22:9100']
EOF
cat > compose.yml <<'EOF'
services:
prometheus:
image: prom/prometheus
volumes: [ "./prometheus.yml:/etc/prometheus/prometheus.yml:ro", "prom:/prometheus" ]
command: [ "--config.file=/etc/prometheus/prometheus.yml", "--storage.tsdb.retention.time=15d", "--web.enable-remote-write-receiver" ]
ports: [ "127.0.0.1:9090:9090" ]
restart: unless-stopped
grafana:
image: grafana/grafana
volumes: [ "grafana:/var/lib/grafana" ]
ports: [ "127.0.0.1:3000:3000" ]
restart: unless-stopped
volumes: { prom: {}, grafana: {} }
EOF
docker compose up -d
HTTPS di depan Grafana:
echo 'grafana.example.com {
reverse_proxy 127.0.0.1:3000
}' > /etc/caddy/Caddyfile && systemctl reload caddy
Masuk (admin / admin, lalu ganti), tambahkan Prometheus sebagai sumber data di http://prometheus:9090, dan impor dasbor komunitas “Node Exporter Full” (ID 1860). Dalam sekitar satu menit Anda punya dasbor sistem lengkap.
Server di paket NAT
Server NAT hanya menerima koneksi masuk di port SSH pribadinya, jadi Prometheus tidak bisa mengambil data dari exporter-nya. Balik arahnya: jalankan Prometheus dalam mode agent di mesin NAT dan dorong data ke server pemantauan, yang sudah menerima penulisan jarak jauh (flag --web.enable-remote-write-receiver di atas).
# /etc/prometheus/agent.yml on the NAT server
scrape_configs:
- job_name: self
static_configs: [ { targets: ['127.0.0.1:9100'] } ]
remote_write:
- url: https://prom-push.example.com/api/v1/write
Ekspos endpoint penerima itu melalui Caddy dengan basic auth, alih-alih membuka port 9090 begitu saja.
Catatan jujur
Prometheus bekerja dengan model pull: bagus untuk armada yang Anda kendalikan dan merepotkan untuk apa pun di balik NAT, itulah sebabnya ada trik agent. Penyimpanan lokalnya tidak dirancang untuk riwayat bertahun-tahun; untuk retensi panjang Anda bisa menambahkan penyimpanan jarak jauh nanti. Dan dasbor hanyalah separuh nilainya: siapkan setidaknya tiga peringatan di hari pertama (disk di atas 85%, tekanan memori, target mati), atau Anda baru akan melihat grafik setelah sesuatu rusak.
Terkait
- VPS untuk pemantauan uptime (Uptime Kuma): peringatan gangguan dan halaman status
- Cara mengonfigurasi firewall UFW
- Berapa RAM yang dibutuhkan VPS?
Komentar
Belum ada komentar. Jadilah yang pertama.