Seorang engineer DevOps solo atau tim yang sangat kecil biasanya tidak mampu membayar tim SRE khusus atau alat APM enterprise. Yang terjangkau adalah stack monitoring self-hosted yang biaya operasinya kecil dan memberi tahu Anda tentang masalah sebelum klien menyadarinya. Kombinasi yang berjalan baik adalah Prometheus + Grafana untuk metrik infrastruktur, Uptime Kuma untuk pemantauan ketersediaan eksternal, dan Telegram untuk alert.
Pemisahan Monitoring Inside vs Outside
Monitoring efektif memerlukan dua perspektif. Monitoring inside (Prometheus + Grafana) memberi tahu Anda apa yang terjadi di server Anda: lonjakan CPU, tekanan memori, saturasi disk, latensi query, dan metrik tingkat aplikasi. Monitoring outside (Uptime Kuma) memberi tahu Anda apa yang dialami pengguna: apakah situs memuat, apakah API merespons, apakah sertifikat TLS valid.
Prometheus + Grafana untuk Metrik Infrastruktur
Jalankan Prometheus, Node Exporter, dan Grafana sebagai container Docker di VPS ringan khusus. Prometheus mengikis Node Exporter setiap 15 detik untuk 1000+ metrik host. Impor dashboard Grafana ID 1860 (Node Exporter Full) segera setelah menghubungkan Prometheus — ini memberi Anda 30+ panel yang mencakup CPU, memori, disk, dan jaringan.
Uptime Kuma untuk Pemeriksaan Eksternal
Uptime Kuma adalah alat monitoring self-hosted dengan UI yang bersih dan notifikasi Telegram/Slack/Discord bawaan. Deploy melalui Docker dan siapkan monitor untuk setiap endpoint publik: pemeriksaan HTTP(S) untuk aplikasi web dan API, pemeriksaan DNS untuk domain Anda, pemeriksaan kedaluwarsa sertifikat untuk sertifikat TLS (alert pada 14 hari tersisa).
┌─────────────────────────────────────────────────────┐
│ SOLO DEVOPS MONITORING STACK │
└─────────────────────────────────────────────────────┘
INSIDE VIEW OUTSIDE VIEW
─────────────── ─────────────────
Node Exporter Uptime Kuma
│ │
▼ ▼
Prometheus ─────────────────► HTTP checks
│ TLS expiry
▼ DNS checks
Grafana │
(Dashboard 1860) │
│ │
└──────────────────────────────┘
│
▼
Telegram Bot
(Alert Channel)Saat menjalankan DevOps sendirian, siapkan bot dan channel Telegram khusus untuk alert produksi — terpisah dari obrolan kerja utama. Alert produksi di obrolan utama diabaikan; channel alert khusus dengan suara notifikasi yang berbeda melatih otak Anda untuk merespons segera.
Kelelahan Alert: Musuh Sebenarnya
Kelelahan alert membunuh monitoring. Jika alert Anda terus berbunyi untuk kondisi yang tidak mendesak, Anda mulai mengabaikannya — termasuk yang penting. Rancang alert Anda dengan tiga prinsip: dapat ditindaklanjuti (setiap alert harus memiliki tindakan respons yang jelas), pemisahan urgensi (alert P1 membangunkan Anda pukul 3 pagi, alert P3 diperiksa di pagi hari), dan penindasan (hindari alert duplikat untuk penyebab root yang sama).
Metrik Tingkat Aplikasi dengan Prometheus Client
Node Exporter mencakup metrik host. Untuk observabilitas tingkat aplikasi, tambahkan paket npm prom-client ke aplikasi NestJS Anda dan ekspos endpoint /metrics. Lacak: durasi permintaan HTTP (histogram), jumlah permintaan berdasarkan rute dan kode status, durasi query database, rasio hit/miss cache.
# docker-compose.yml — Prometheus + Grafana + Node Exporter
services:
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.retention.time=30d'
node-exporter:
image: prom/node-exporter:latest
pid: host
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
volumes:
- grafana_data:/var/lib/grafana
uptime-kuma:
image: louislam/uptime-kuma:1
ports:
- "3001:3001"
volumes:
- uptime-kuma:/app/data
volumes:
prometheus_data:
grafana_data:
uptime-kuma:Agregasi Log dengan Anggaran Terbatas
Agregasi log penuh (stack ELK, Loki) menambahkan overhead sumber daya yang signifikan. Untuk operator solo, pendekatan pragmatis: gunakan journalctl -u <service> -f untuk tailing log real-time, kirim kesalahan aplikasi kritis ke instance Sentry gratis, dan gunakan Loki hanya jika Anda perlu mencari log historis di beberapa server.
Di awal perjalanan monitoring, sangat menggoda untuk menambahkan puluhan panel Grafana dan banyak aturan alert agar terasa komprehensif. Hasilnya adalah kelumpuhan dashboard dan kelelahan alert. Aturan yang lebih baik: jika Anda tidak dapat mendeskripsikan tindakan tepat yang akan Anda ambil saat alert berbunyi, jangan membuat alert tersebut.
Stack Monitoring Produksi Saya
Stack yang ramping terlihat seperti ini: Prometheus yang mengikis Node Exporter di setiap server, Grafana dengan dua dashboard, Uptime Kuma yang memeriksa endpoint HTTP dan sertifikat TLS, Sentry untuk pelacakan kesalahan aplikasi, dan Telegram untuk semua pengiriman alert. Satu Droplet monitoring kecil yang khusus menjaga biaya tetap rendah.
Memulai dalam 30 Menit
Jalur tercepat menuju monitoring yang berguna: deploy Uptime Kuma terlebih dahulu (10 menit), tambahkan monitor HTTP untuk semua endpoint produksi Anda, konfigurasikan notifikasi Telegram. Kemudian deploy Prometheus + Node Exporter melalui Docker Compose di server terbesar Anda (15 menit), hubungkan ke Grafana Cloud tingkat gratis, impor dashboard 1860, dan atur satu alert untuk penggunaan disk >85%.
