−25%

untuk Windows tahunan, hingga 31 Okt. Lihat paket

EQVPS
Mulai

VPS untuk pemantauan server dengan Grafana + Prometheus

Kumpulkan metrik CPU, RAM, disk, dan layanan dari semua server Anda di satu tempat: Prometheus, node_exporter, dan Grafana di VPS, di balik HTTPS.

“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

Yang Anda perlukan

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

Siap deploy? Bayar dengan kripto, tanpa KYC — online dalam sekitar satu menit.

Deploy →

Pertanyaan umum

Apa bedanya dengan Uptime Kuma?

Uptime Kuma menjawab “apakah menyala?”. Prometheus dan Grafana menjawab “mengapa lambat, dan sejak kapan?”: metrik CPU, memori, disk, jaringan, dan aplikasi dari waktu ke waktu. Banyak orang menjalankan keduanya: Kuma untuk peringatan gangguan, Grafana untuk tren dan perencanaan kapasitas.

Berapa banyak disk yang dipakai Prometheus?

Kira-kira 1–2 byte per sampel setelah kompresi. Sepuluh server yang masing-masing mengekspor seribu seri, diambil setiap 15 detik, menghasilkan sekitar 60 juta sampel per hari: sekitar 100 MB. Dengan retensi default 15 hari, totalnya beberapa gigabita.

Bisakah saya memantau server di paket NAT?

Bisa, tetapi tidak dengan scrape: server NAT tidak menerima koneksi masuk ke exporter-nya. Jalankan Prometheus dalam mode agent di mesin NAT dan dorong metrik ke server pemantauan dengan remote_write. Server pemantauannya sendiri sebaiknya berada di paket dengan IP khusus.

Paket apa yang sebaiknya dipakai server pemantauan?

Micro-IP (2 GB RAM, $10/bln) dengan nyaman menangani satu hingga dua lusin host. Jika Anda menambahkan metrik aplikasi berkardinalitas tinggi atau menyimpan data berbulan-bulan, naik ke Small-IP. IP khusus memberi HTTPS untuk Grafana dan alamat tetap untuk dimasukkan ke daftar izin di target Anda.

Haruskah server pemantauan terpisah dari yang dipantaunya?

Ya. Jika Grafana berjalan di server yang baru saja kehabisan memori, Anda kehilangan pandangan atas masalah tepat saat Anda membutuhkannya. VPS kecil yang terpisah tetap berjalan ketika mesin produksi tumbang.

Komentar

Belum ada komentar. Jadilah yang pertama.

Tinggalkan komentar

Komentar dimoderasi sebelum muncul.