Recraftory

Grafana Dasar

Visualisasi metric dan dashboarding

Apa itu Grafana

  • Platform open-source untuk visualisasi data
  • Mendukung banyak data source
  • Dashboarding interaktif dengan alerting
  • Most popular pairing dengan Prometheus

Data Source yang Didukung

  • Prometheus
  • InfluxDB
  • Elasticsearch
  • MySQL / PostgreSQL
  • CloudWatch
  • Datadog
  • Loki
  • Jaeger
  • Dan banyak lainnya

Instalasi

Docker

docker run -p 3000:3000 grafana/grafana

Kubernetes

helm repo add grafana https://grafana.github.io/helm-charts
helm install grafana grafana/grafana

Akses Default

  • URL: http://localhost:3000
  • Username: admin
  • Password: admin

Konsep Dasar

Dashboard

  • Kumpulan panel visualisasi
  • Bisa diorganisir dalam folder
  • Dapat di-share dan di-export sebagai JSON

Panel

  • Satu visualisasi (chart, table, gauge, dll)
  • Query ke satu data source
  • Configurable: title, legend, axes, threshold

Row

  • Grup panel yang dapat di-collapse
  • Membantu organisasi dashboard kompleks

Variable

  • Membuat dashboard dinamis
  • Contoh: pilih server, environment, atau waktu

Membuat Dashboard

1. Tambah Data Source

Configuration → Data Sources → Add Data Source → Prometheus

Masukkan URL Prometheus (misal: http://prometheus:9090)

2. Buat Dashboard Baru

Create → Dashboard → Add Panel

3. Query PromQL

rate(http_requests_total[5m])

4. Pilih Visualization Type

  • Time Series: Line chart (paling umum)
  • Gauge: Nilai tunggal dengan meter
  • Stat: Nilai tunggal besar
  • Table: Data tabular
  • Bar Chart: Perbandingan kategori
  • Heatmap: Distribusi data

Panel Type Populer

Time Series Panel

# Request rate by status
sum(rate(http_requests_total[5m])) by (status)

Gauge Panel

# Memory usage percentage
(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100

Stat Panel

# Total error today
increase(http_requests_total{status=~"5.."}[24h])

Table Panel

# Top 10 slowest endpoints
topk(10, avg(rate(http_request_duration_seconds_sum[5m]) / rate(http_request_duration_seconds_count[5m])) by (handler))

Templating dengan Variable

Membuat Variable

Dashboard Settings → Variables → New

Query Variable

label_values(node_exporter_build_info, instance)

Menggunakan Variable dalam Panel

rate(http_requests_total{instance=~"$instance"}[5m])

Variable Berguna

  • $__interval: Auto interval berdasarkan time range
  • $__from / $__to: Timestamp awal dan akhir
  • $instance: Server yang dipilih
  • $job: Service yang dipilih

Alerting di Grafana

Alert Rule

  • Definisikan kondisi dari query
  • Interval evaluasi
  • Threshold dan condition

Notification Channel

  • Email
  • Slack
  • PagerDuty
  • Webhook
  • Telegram

Contoh Alert

# Alert jika error rate > 1%
sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) > 0.01

Best Practice Dashboard

  • Mulai dengan Golden Signals
  • Gunakan row untuk mengelompokkan panel
  • Konsisten warna (hijau: OK, kuning: warning, merah: critical)
  • Variable untuk multi-instance atau multi-environment
  • Annotate deployment event
  • Export dan version control dashboard JSON