Paket 2 · Praktik LanjutanModul G — Monitoring, Logging & Observability

Observability & Monitoring Fundamentals

Memahami metrik, log, trace, SLI/SLO, golden signals, dan desain alert yang berguna.

Observability adalah kemampuan memahami kondisi sistem dari data yang dihasilkan. Monitoring menjawab “apakah sistem baik-baik saja?”, observability menjawab “mengapa ini terjadi?”.

Tiga pilar

PilarIsiMenjawab
MetricsAngka time-seriesApakah terjadi lonjakan/drop?
LogsEvent diskritApa yang terjadi pada request tertentu?
TracesAlur request lintas serviceDi mana waktu habis?

Monitoring vs observability

  • Monitoring — kumpulan dashboard dan alert yang sudah diketahui.
  • Observability — kemampuan menyelidiki masalah baru tanpa menebak.

Sistem yang baik memiliki keduanya.

Golden signals

SignalArtiContoh
LatencyWaktu requestp95, p99
TrafficBebanRPS, request count
ErrorsKegagalan5xx rate, exception
SaturationKepenuhan resourceCPU, memory, queue

Empat sinyal ini adalah titik awal dashboard dan alert.

SLI, SLO, SLA

IstilahArti
SLI (Indicator)Metrik yang diukur, mis. persentase request sukses
SLO (Objective)Target internal, mis. 99,9% sukses per 30 hari
SLA (Agreement)Janji ke pelanggan dengan konsekuensi

Contoh SLO:

99,9% request HTTP sukses (bukan 5xx) selama 30 hari
95% request selesai < 500 ms

Error budget

Jika SLO 99,9%, error budget adalah 0,1% dari total request.

  • Budget habis → prioritaskan stabilitas, tahan rilis berisiko.
  • Budget tersisa → boleh bereksperimen.

Instrumentasi

Aplikasi harus menghasilkan metrik dan log yang konsisten.

import { Counter, Histogram } from 'prom-client';

const httpRequests = new Counter({
  name: 'http_requests_total',
  help: 'Total HTTP requests',
  labelNames: ['method', 'route', 'status'],
});

const httpDuration = new Histogram({
  name: 'http_request_duration_seconds',
  help: 'HTTP request duration',
  labelNames: ['method', 'route'],
  buckets: [0.05, 0.1, 0.25, 0.5, 1, 2.5, 5],
});

Log terstruktur

Gunakan JSON agar mudah dicari:

{
  "level": "error",
  "time": "2026-10-20T10:00:00Z",
  "request_id": "abc123",
  "route": "/api/orders",
  "status": 500,
  "message": "database timeout"
}

Hindari log berisi password, token, atau data pribadi.

Trace dan correlation ID

Buat request_id di edge, teruskan ke service lain, dan sertakan di log.

const requestId = req.headers['x-request-id'] || crypto.randomUUID();
res.setHeader('x-request-id', requestId);

Dengan ID ini, Anda bisa menghubungkan log, trace, dan error.

Dashboard yang baik

  • Mulai dari SLO dan golden signals.
  • Tampilkan tren, bukan hanya angka saat ini.
  • Kelompokkan berdasarkan layanan.
  • Sertakan anotasi deploy.
  • Jangan membuat dashboard dengan 50 grafik tanpa fokus.

Desain alert

Alert harus actionable. Jika tidak ada tindakan, jangan alert.

BurukBaik
CPU > 80%Error rate > 1% selama 5 menit
Disk 70%Disk penuh < 10% atau 1 jam
Satu request lambatp95 latency > SLO selama 10 menit

Gunakan multi-window burn rate untuk SLO agar alert tidak berisik.

Alert fatigue

Terlalu banyak alert membuat tim mengabaikan semuanya. Prioritaskan gejala yang berdampak pada pengguna, bukan setiap fluktuasi resource.

Tools umum

KebutuhanTool
MetricsPrometheus, VictoriaMetrics
VisualisasiGrafana
LogsLoki, ELK, OpenSearch
TracesTempo, Jaeger, OpenTelemetry
AlertAlertmanager
UptimeBlackbox exporter, Uptime Kuma

Ringkasan

  • Observability dibangun dari metrik, log, dan trace.
  • Golden signals dan SLO memberi fokus.
  • Instrumentasi dan correlation ID menghubungkan data.
  • Alert harus actionable dan berbasis gejala.

Selanjutnya

Pasang stack metrik di Prometheus, Node Exporter & Grafana.

On this page