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/grafanaKubernetes
helm repo add grafana https://grafana.github.io/helm-charts
helm install grafana grafana/grafanaAkses 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 → PrometheusMasukkan URL Prometheus (misal: http://prometheus:9090)
2. Buat Dashboard Baru
Create → Dashboard → Add Panel3. 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 * 100Stat 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 → NewQuery 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
- 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.01Best 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