Membangun pengamatan untuk storage virtual: memasang Prometheus dan Grafana, scraping metrik OpenEBS via PodMonitor, menetapkan metrik yang wajib (capacity, NFS server health, disk node), serta menyusun alert untuk CPU NFS dan PVC pending

Storage yang tidak terpantau adalah bom yang tidak terlihat. Beban tumbuh diam-diam, NFS server mulai lelah, disk node penuh — dan tidak ada yang tahu sampai aplikasi lambat atau PVC Pending. Episode 18 membangun pengamatan (monitoring & observability) untuk stack storage kita dengan Prometheus + Grafana.
OpenEBS mengekspos metrik lewat HTTP endpoint pada component-nya. Kita scrap dengan Prometheus via ServiceMonitor/PodMonitor dan visualisasi dengan Grafana.
Install dengan kube-prometheus-stack (mencakup keduanya):
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install monitoring prometheus-community/kube-prometheus-stack \
--namespace monitoring --create-namespaceAktifkan metrik pada OpenEBS (bila belum) dan scrape via PodMonitor:
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: openebs
namespace: monitoring
spec:
namespaceSelector:
matchNames:
- openebs
selector:
matchLabels:
app.kubernetes.io/name: openebs
podMetricsEndpoints:
- port: metrics
interval: 30skubectl apply -f podmonitor-openebs.yamlGrafana: gunakan dashboard resmi OpenEBS (arahkan dashboard ID dari grafana.com atau impor JSON dari repositori OpenEBS).
Empat kategori yang wajib ada di dashboard:
kubelet_volume_stats_used_bytes, kubelet_volume_stats_available_bytes.openebs_nfs_server metrics.node_filesystem_avail_bytes per worker; node_disk_*.kubelet_volume_stats_inodes_used untuk NFS yang dipenuhi inode.(kubelet_volume_stats_available_bytes / kubelet_volume_stats_capacity_bytes) < 0.15Pasang alert yang menyelamatkan sebelum kehabisan:
| Alert | Ekspresi |
|---|---|
| CPU NFS server tinggi | sum(rate(container_cpu_usage_seconds_total{pod=~"nfs-.*"}[5m])) > 0.8 |
| Kapasitas menipis | kubelet_volume_stats_available_bytes / capacity < 0.15 |
| PVC Pending | kube_persistentvolumeclaim_status_phase{phase="Pending"} == 1 |
Contoh rule:
groups:
- name: openebs-storage.rules
rules:
- alert: PVCStorageLow
expr: kubelet_volume_stats_available_bytes / kubelet_volume_stats_capacity_bytes < 0.15
for: 10m
labels:
severity: warning
annotations:
summary: "PVC {{ $labels.persistentvolumeclaim }} tersisa kurang dari 15%"Set rute notifikasi (Slack/Telegram) ke channel on-call.
Tip
Mulai dari tiga alert: kapasitas PVC >85% terpakai, NFS server CPU tinggi, dan PVC Pending. Tiga ini menutupi 90% insiden storage di lab/small cluster sebelum berdampak ke user.
Beberapa perintah yang menjadi rutinitas sehat:
kubectl get pvc -A
kubectl -n openebs get pods
kubectl -n openebs-nfs top pods | sort -k2 -hkubectl get pvc -A — lihat status & kapasitas semua volume.Pada episode 18 ini, storage kini terpantau:
Inti yang harus dibawa pulang:
kubectl get pvc -A + lihat top pods NFS tiap hari.Di episode 19 selanjutnya kita akan mengukur performa: benchmark fio/dd antara Local PV vs NFS, memahami latensi NFSv4, meramu mount options hard/intr/noatime, dan memutuskan trade-off fleksibilitas vs latency. Sampai jumpa di episode 19!