Salah Pilih Tipe = Data Tidak Bisa Diselamatkan
Tipe metrik menentukan operasi PromQL apa yang masuk akal. Memilih Gauge padahal seharusnya Counter berarti Anda kehilangan kemampuan menghitung laju — selamanya, untuk data yang sudah terlanjur tersimpan.
1. Counter — Angka yang Hanya Naik
Untuk menghitung kejadian: jumlah request, jumlah error, jumlah byte terkirim, jumlah pesanan.
http_requests_total{status="200"} 1523 → 1547 → 1571 → 0 → 24
↑ restart aplikasiGrafik http_requests_total hanya akan menampilkan garis naik terus. Yang bermakna adalah lajunya:
rate(http_requests_total[5m]) # request per detik, rata-rata 5 menit terakhirFungsi rate() juga otomatis menangani counter reset saat aplikasi restart — inilah alasan kenapa memakai tipe Counter itu penting.
2. Gauge — Angka yang Bisa Naik dan Turun
Untuk keadaan saat ini: penggunaan memori, jumlah koneksi aktif, suhu, panjang antrean, jumlah pod berjalan.
node_memory_MemAvailable_bytes 3.2e9 → 2.8e9 → 3.5e9 → 1.1e9
# Operasi yang masuk akal untuk gauge:
avg_over_time(node_memory_MemAvailable_bytes[1h])
max_over_time(node_memory_MemAvailable_bytes[24h])
delta(node_memory_MemAvailable_bytes[1h]) # perubahan dalam 1 jam
predict_linear(node_filesystem_avail_bytes[6h], 4*3600) # prediksi 4 jam ke depan3. Histogram — Distribusi Nilai
Untuk mengukur sebaran: durasi request, ukuran payload. Histogram adalah cara Prometheus menjawab "berapa p95 latency?".
Satu histogram menghasilkan tiga jenis time series:
http_request_duration_seconds_bucket{le="0.1"} 1892 ← kumulatif: ≤ 0,1 detik
http_request_duration_seconds_bucket{le="0.5"} 2401 ← kumulatif: ≤ 0,5 detik
http_request_duration_seconds_bucket{le="+Inf"} 2451 ← semua
http_request_duration_seconds_sum 412.83 ← total detik
http_request_duration_seconds_count 2451 ← jumlah observasi# p95 latency dari histogram
histogram_quantile(0.95,
sum by (le) (rate(http_request_duration_seconds_bucket[5m]))
)
# rata-rata latency (sum dibagi count)
rate(http_request_duration_seconds_sum[5m])
/
rate(http_request_duration_seconds_count[5m])Bucket default klien Prometheus (.005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10) dirancang untuk API web yang cepat. Bila layanan Anda umumnya membalas dalam 3–8 detik, hampir semua observasi jatuh di bucket 5 dan 10, sehingga histogram_quantile hanya bisa menebak kasar di antara keduanya.
Sesuaikan bucket dengan SLO Anda. Bila SLO adalah p95 < 500 ms, pastikan ada bucket rapat di sekitar 0,5 detik. Data lama tidak bisa dihitung ulang dengan bucket baru.
4. Summary — Persentil Dihitung di Sisi Klien
rpc_duration_seconds{quantile="0.5"} 0.032
rpc_duration_seconds{quantile="0.9"} 0.121
rpc_duration_seconds{quantile="0.99"} 0.483
rpc_duration_seconds_sum 8231.4
rpc_duration_seconds_count 24193| Aspek | Histogram | Summary |
|---|---|---|
| Persentil dihitung di | Server (saat query) | Klien (saat observasi) |
| Bisa diagregasi antar-instance | YA | TIDAK |
| Beban CPU di aplikasi | Sangat ringan | Lebih berat |
| Fleksibilitas persentil | Bebas, kapan saja | Terkunci saat kompilasi |
| Akurasi | Tergantung bucket | Lebih akurat per instance |
Rata-rata dari p95 sepuluh instance bukan p95 keseluruhan sistem. Secara matematis itu tidak bermakna. Bila Anda punya lebih dari satu instance dan butuh persentil global — dan itu hampir selalu terjadi — gunakan Histogram.
- Menghitung kejadian yang tidak pernah berkurang → Counter (akhiri dengan
_total). - Nilai saat ini yang bisa naik-turun → Gauge.
- Butuh persentil atau distribusi → Histogram.
- Summary → hanya bila satu instance dan butuh akurasi tinggi. Umumnya, pilih Histogram.