Kodeloka
  1. Kodeloka
  2. Kelas Grafana
  3. Materi

Modul 6 · Modul 6 dari 15

Memilih Visualisasi: Time Series, Stat, Table, Heatmap, dan Kawan-kawan

Menghubungkan bentuk pertanyaan dengan bentuk grafik, dan mengetahui kapan sebuah visualisasi justru menyesatkan pembacanya.

Aturan Pemilihan yang Sederhana

Pilih visualisasi berdasarkan pertanyaan yang ingin dijawab, bukan berdasarkan yang terlihat paling menarik. Dashboard yang bagus terlihat membosankan dan bisa dibaca dalam tiga detik.

PertanyaanPanelBentuk data
"Bagaimana perubahannya dari waktu ke waktu?"Time seriesDeret waktu
"Berapa angkanya sekarang?"StatSatu nilai
"Seberapa dekat ke batas?"GaugeSatu nilai + threshold
"Siapa yang terbesar?"Bar gauge / Bar chartKategori + nilai
"Tunjukkan semua baris datanya"TableTabel
"Bagaimana sebaran nilainya?"Heatmap / HistogramDistribusi
"Kapan statusnya berubah?"State timelineDeret status diskret
"Berapa lama tiap kondisi berlangsung?"Status historyDeret status
"Bagaimana alur/proporsinya?"Pie chartBagian dari total
"Bagaimana hubungan dua metrik?"XY chartDua nilai numerik

Time Series — Panel yang Akan Anda Pakai 70% Waktu

Opsi yang benar-benar mengubah keterbacaan:

options panel time seriesjson
{
  "options": {
    "legend": {
      "displayMode": "table",
      "placement": "bottom",
      "calcs": ["mean", "max", "lastNotNull"],
      "sortBy": "Max", "sortDesc": true
    },
    "tooltip": { "mode": "multi", "sort": "desc", "maxHeight": 400 }
  },
  "fieldConfig": {
    "defaults": {
      "custom": {
        "drawStyle": "line",
        "lineInterpolation": "linear",
        "lineWidth": 2,
        "fillOpacity": 10,
        "gradientMode": "opacity",
        "spanNulls": false,
        "showPoints": "auto",
        "stacking": { "mode": "none" },
        "axisPlacement": "auto",
        "axisSoftMin": 0
      }
    }
  }
}
⚠️ spanNulls: satu setelan, dua kesalahan berlawanan

spanNulls: false memutus garis saat data hilang — inilah yang Anda mau untuk metrik infrastruktur, karena putusnya garis adalah informasi (target mati).

spanNulls: true menyambungkan garis melewati lubang. Berguna untuk metrik yang memang jarang muncul (misalnya batch job harian), tetapi berbahaya untuk metrik yang seharusnya kontinu — ia menyembunyikan downtime.

Stat — Angka Besar yang Sering Disalahpahami

Panel Stat menampilkan satu nilai per series. Bila kueri Anda menghasilkan 12 series, Anda akan mendapat 12 kotak kecil, bukan satu angka.

OpsiEfek
reduceOptions.calcsCara meringkas series: lastNotNull (paling umum), mean, max, sum
reduceOptions.valuestrue = tampilkan semua nilai, bukan hasil reduce
graphModearea memberi sparkline latar; none untuk angka bersih
colorModevalue (teks berwarna) atau background (kotak berwarna)
textModeauto, value, value_and_name, name
⛔ Jangan pakai last, pakai lastNotNull

last mengambil titik paling akhir apa adanya. Bila scrape terakhir belum masuk, titik itu null dan panel menampilkan "No data" — padahal sistem sehat. Ini sumber kepanikan yang tidak perlu saat dashboard dipasang di layar TV.

Gauge dan Bar Gauge

Gauge hanya bermakna bila ada maksimum yang benar-benar ada artinya: persentase disk, penggunaan kuota, rasio pool koneksi. Gauge untuk "request per detik" tidak bermakna, karena tidak ada nilai maksimum alamiah.

gauge pemakaian diskjson
{
  "type": "gauge",
  "fieldConfig": {
    "defaults": {
      "unit": "percent", "min": 0, "max": 100,
      "thresholds": { "mode": "absolute", "steps": [
        { "color": "green",  "value": null },
        { "color": "orange", "value": 75 },
        { "color": "red",    "value": 90 }
      ]}
    }
  },
  "options": { "showThresholdMarkers": true, "showThresholdLabels": false }
}

Heatmap — Cara Benar Melihat Distribusi Latency

Grafik garis p95 menyembunyikan bentuk sebaran. Dua sistem dengan p95 identik bisa punya perilaku yang sangat berbeda: satu konsisten, satu bimodal (mayoritas cepat, sebagian sangat lambat).

heatmap dari histogram Prometheuspromql
sum by (le) (
  increase(http_request_duration_seconds_bucket[$__rate_interval])
)

# Panel options:
#   Format          : Heatmap
#   Data format     : "Time series buckets"
#   Y axis unit     : seconds (s)
#   Color scheme    : Spectral / Turbo (skema sekuensial)

Heatmap menampilkan setiap bucket sebagai baris berwarna: gelap = sedikit request, terang = banyak. Pita ganda yang terpisah adalah tanda khas bimodal latency — biasanya berarti sebagian request kena cache dan sebagian tidak.

Table — Lebih Kuat dari yang Terlihat

Table bukan panel kelas dua. Dengan transformation dan cell options, ia menjadi alat triase terbaik:

  • Cell type "Gauge" atau "Colored background" — kolom numerik menjadi bar mini.
  • Data links pada sel — klik nama layanan, lompat ke dashboard detailnya.
  • Filterable columns — pengguna menyaring sendiri tanpa mengubah kueri.
  • Pagination — mencegah tabel 5.000 baris membekukan browser.

State Timeline — Untuk Status, Bukan Angka

Panel ini menggambar pita horizontal berwarna per series, berganti warna saat nilainya berubah. Sangat cocok untuk up, status deployment, atau kondisi alert. Padukan dengan value mapping agar 1 tampil sebagai "UP" hijau dan 0 sebagai "DOWN" merah.

💡 Panel yang sebaiknya dihindari
  • Pie chart untuk lebih dari 5 kategori — mata manusia buruk membandingkan sudut. Pakai Bar gauge.
  • Graph (old) — sudah usang, migrasikan ke Time series.
  • Gauge tanpa max yang bermakna.
  • Sumbu ganda pada satu grafik — hampir selalu menipu secara visual. Lebih baik dua panel bersebelahan.