Observability stack murah: Grafana + Loki + Tempo di VPS $5
Setup observability lengkap (metrics + logs + traces) untuk side project, tanpa tagihan SaaS yang bikin deg-degan.
On this page5 sections
Tagihan Datadog buat side project bisa melampaui biaya infrastruktur itu sendiri. Kalau kamu sekedar pengen tau “kenapa endpoint ini lambat” atau “apakah ada error yang lolos”, kamu nggak butuh platform seharga mobil.
Setup yang aku pakai di VPS $5/bulan — Grafana + Loki + Tempo + Prometheus — cukup buat semua pertanyaan operasional harian.
Komponen
- Grafana — UI untuk visualisasi semuanya.
- Prometheus — metrics (CPU, memory, request rate, latency).
- Loki — logs (lightweight, indeks lewat labels saja).
- Tempo — distributed tracing (OTel-compatible).
- Promtail / Alloy — agent yang push logs dari app ke Loki.
Semua Grafana Labs, semua open source, dan yang paling penting: semua jalan nyaman di 2 GB RAM.
docker-compose
services: grafana: image: grafana/grafana-oss:latest ports: ["3000:3000"] volumes: - grafana-data:/var/lib/grafana - ./provisioning:/etc/grafana/provisioning:ro environment: GF_SECURITY_ADMIN_PASSWORD: __file:/run/secrets/grafana_admin secrets: [grafana_admin]
prometheus: image: prom/prometheus:latest volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro - prom-data:/prometheus command: - "--config.file=/etc/prometheus/prometheus.yml" - "--storage.tsdb.retention.time=15d"
loki: image: grafana/loki:latest volumes: - ./loki-config.yml:/etc/loki/config.yml:ro - loki-data:/loki command: -config.file=/etc/loki/config.yml
tempo: image: grafana/tempo:latest volumes: - ./tempo-config.yml:/etc/tempo.yml:ro - tempo-data:/var/tempo command: -config.file=/etc/tempo.yml
volumes: grafana-data: {} prom-data: {} loki-data: {} tempo-data: {}
secrets: grafana_admin: file: ./secrets/grafana_admin.txtRetention yang realistis
Kebanyakan setup hancur di retention. Default banyak tool punya retention kelewat panjang. Untuk single-node:
| Signal | Retention | Alasan |
|---|---|---|
| Metrics | 15–30 hari | Cukup buat grafik weekly & investigasi |
| Logs | 7–14 hari | Paling boros disk, paling jarang dibutuhkan |
| Traces | 3–7 hari | Hampir selalu kamu butuh yang kemarin |
Kalau butuh data lama, export ke object storage (Cloudflare R2, Backblaze B2).
Alerting tanpa Datadog
Prometheus Alertmanager → Slack / Discord / Telegram webhook. Tiga alert yang aku selalu mulai dari sini:
- alert: HighErrorRate expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.05 for: 5m labels: { severity: page }
- alert: DiskSpaceLow expr: (node_filesystem_avail_bytes / node_filesystem_size_bytes) < 0.1 for: 10m
- alert: EndpointDown expr: probe_success == 0 for: 2mDari tiga ini aja udah ketangkep 90% masalah yang bakal bikin ke-wake malam.
Kesimpulan
Platform SaaS keren, tapi kamu nggak butuh mereka cuma buat bilang “service ini down”. Untuk blog, side project, atau homelab, stack di atas cukup. Dan yang paling penting: kamu tau apa yang berjalan di bawahnya.