Membangun observability untuk Longhorn: memanfaatkan metrik Prometheus bawaan untuk volume I/O, health replica, dan status node, memasang dashboard Grafana resmi, menyusun alerting untuk volume degraded, backup gagal, dan disk penuh, serta sentralisasi log.

Di episode 16 kita menyusun DR. Episode 17 membalik fokus ke arah yang sama sekali beda: memantau storage agar bencana tidak pernah terjadi. Longhorn menyediakan metrik berlimpah — tugas kita hanya menangkap, memvisualkan, dan menyusun siaga.
Mengapa penting? Bencana storage jarang datang mendadak — ia datang bertahap: disk menipis, replika tersendat, backup gagal diam-diam. Tanpa monitoring, gejala ini terlihat saat sudah telat, yaitu saat volume tidak bisa di-attach atau data hilang.
Longhorn membuka endpoint Prometheus di metrics.longhorn.io per Pod longhorn-manager. Buka ServiceMonitor:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: longhorn-prometheus-servicemonitor
namespace: longhorn-system
spec:
selector:
matchLabels:
app: longhorn-manager
endpoints:
- port: manager
path: /metricsDengan ServiceMonitor ini, Prometheus mulai men-scrape metrik Longhorn secara otomatis.
Kumpulan metrik yang paling berguna:
| Metrik | Arti |
|---|---|
longhorn_volume_state | 1=Attached, 2=Detached, 3=Attaching, 4=Detaching |
longhorn_volume_actual_size_bytes | Ukuran blok terpakai |
longhorn_volume_robustness | 0=healthy, 1=degraded, 2=faulted |
longhorn_replica_count | Jumlah replica per volume |
longhorn_node_has_unschedulable_disk | Kondisi disk penuh / disk tidak sehat |
longhorn_backup_total / longhorn_backup_failed | Status backup |
Dari metrik inilah kita menurunkan dashboard dan alert.
Longhorn menyediakan dashboard Grafana resmi (di folder deploy/grafana di repo). Cara cepat:
Dashboard menampilkan:
Mengubah metrik menjadi alert yang mengganggu — ini yang membuat operator pyom:
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: longhorn-alerts
namespace: monitoring
spec:
groups:
- name: longhorn.rules
rules:
- alert: LonghornVolumeDegraded
expr: longhorn_volume_robustness == 1
for: 5m
labels:
severity: warning
annotations:
summary: "Volume {{ $labels.volume }} degraded"
- alert: LonghornDiskCapacity < 15%
expr: (longhorn_disk_available_bytes / longhorn_disk_total_bytes) < 0.15
for: 10m
labels:
severity: critical
annotations:
summary: "Disk {{ $labels.disk }} hampir penuh"Kirim ke Slack/email/e-mail gateway via Prometheus Alertmanager. Contoh webhook:
receivers:
- name: "slack"
slack_configs:
- channel: "#storage-alerts"
send_resolved: true
api_url: "https://hooks.slack.com/services/T.../B.../xxx"Alert yang patut disusun sejak awal:
degraded/faulted.failed/rebuilt lambat.Dashboard sudah punya indikasi cepat:
| Status | Arti | Tindakan |
|---|---|---|
Healthy | Semua replika baik | Normal |
Degraded | Ada replika down/rebuild | Pantau & perbaiki node |
Offline | Kuorum hilang / no healthy replica | Investigasi segera |
Unknown | Engine tidak respond | Cek network/node |
Detached | Volume tidak di-attach | Normal, tidak dipakai Pod |
Node connectivity & disk errors tampil di halaman Node.
| Komponen | Log Utama |
|---|---|
longhorn-manager | Rekonsiliasi, errors CRD |
instance-manager | iSCSI, engine, replica |
longhorn-csi-plugin | Attach/detach, node-stage |
longhorn-driver-deployer | Deploy CSI driver |
Push ke Loki/EFK:
kubectl -n longhorn-system logs -l app=longhorn-manager -fSentralisasi log membantu menelusuri akar masalah saat alert berbunyi — misalnya "volume degraded" yang penyebabnya node disk error di log instance-manager.
Inti yang harus dibawa pulang:
/metrics → Prometheus otomatis meng-scrape Longhorn.Di episode 18 selanjutnya kita akan membahas performance tuning & volume expansion — expand PVC, tuning engine/replica dengan QoS & queue depth, optimasi filesystem & mount options untuk database, serta benchmark dengan fio untuk membandingkan V1 vs V2. Sampai jumpa di episode 18!