Episode ini membangun observabilitas HA: memantau status Keepalived dengan exporter Prometheus dan log, menyusun alerting untuk perubahan state, VIP hilang, dan backend tidak sehat, serta merancang dashboard operasional untuk status high availability.

HA yang tidak teramati adalah HA yang tidak bisa dipertanggungjawabkan. Episode 20 membangun observabilitas lengkap: bagaimana memantau status Keepalived dengan Prometheus exporter, menyusun alerting untuk perubahan state dan VIP hilang, serta merancang dashboard yang menunjukkan kesehatan HA sekilas.
Tujuannya sederhana: insiden harus terdeteksi lebih awal dari keluhan pengguna. Dengan metrik yang benar dan alert yang tepat sasaran, tim kalian tahu persis kapan MASTER berpindah, kapan VIP tidak ada, dan kapan backend tidak sehat.
Keepalived tidak menyediakan endpoint metrik Prometheus bawaan, tapi komunitas menyediakan keepalived_exporter yang membaca status daemon:
services:
keepalived-exporter:
image: ghcr.io/philips-software/keepalived-exporter:latest
network_mode: host
container_name: keepalived-exporter
restart: unless-stoppedService keepalived-exporter berjalan dengan network_mode: host agar bisa berinteraksi dengan status Keepalived di host. Exporter ini mengekspos metrik seperti status instance VRRP dan jumlah transisi state.
Metrik yang paling berguna untuk dipantau:
Semua metrik ini sebaiknya diekspos dengan label nama instance dan node agar dashboard bisa mengelompokkannya dengan mudah.
Transisi ke MASTER tidak selalu buruk — bisa jadi inilah yang benar. Tapi harus terlihat. Kirim alert setiap kali state berubah:
groups:
- name: keepalived
rules:
- alert: KeepalivedMasterChanged
expr: changes(vrrp_state_master{instance="lb01"}[5m]) > 0
for: 1m
labels:
severity: warning
annotations:
summary: "MASTER berubah di lb01"Rule changes(vrrp_state_master[5m]) > 0 memicu alert saat metrik MASTER berubah dalam 5 menit. Ini menangkap failover yang terjadi tanpa dijadwalkan.
Skenario paling kritis: tidak ada node yang memegang VIP. Alert ini harus cepat dan berprioritas tinggi:
- alert: KeepalivedVipLost
expr: vrrp_vip_active == 0
for: 30s
labels:
severity: critical
annotations:
summary: "Tidak ada node yang memegang VIP"vrrp_vip_active == 0 berarti VIP tidak terpasang di node mana pun yang diekspos. Alert critical dengan for: 30s memastikan tidak ada false positive karena jeda transisi.
Backend yang tidak sehat harus terlihat bahkan sebelum failover VIP terjadi:
- alert: LvsBackendDown
expr: ipvs_healthy_real_server == 0
for: 2m
labels:
severity: warning
annotations:
summary: "Semua backend pada {{ $labels.vip }} tidak sehat"ipvs_healthy_real_server == 0 menunjukkan tidak ada real server yang sehat pada sebuah VIP. Alert warning memberi waktu tim bertindak sebelum layanan betul-betul mati.
Terlalu banyak alert membuat tim mati rasa. Gunakan for yang wajar, buat severity bertingkat, dan gabungkan beberapa kondisi. Satu alert yang berarti lebih baik dari sepuluh alert yang diabaikan.
Dashboard Grafana untuk HA sebaiknya menampilkan:
Dengan panel-panel ini, satu pandangan sudah menjawab pertanyaan: apakah HA berfungsi, dan apakah ada yang baru saja berpindah?
Metrik memberi tren, log memberi detail. Hubungkan keduanya di satu tempat:
sudo systemctl status keepalived --no-pager | grep "active"
sudo journalctl -u keepalived --no-pager | tail -20Output journalctl -u keepalived bisa dialirkan ke Loki atau sistem log terpusat lain. Ketika alert memicu, operator langsung membuka log untuk memahami konteks transisi.
Episode 20 membuat HA kalian transparan: metrik dari keepalived_exporter masuk ke Prometheus, alerting menangkap perubahan state dan VIP hilang serta backend tidak sehat, dan dashboard menampilkan kesehatan HA dalam satu layar.
Inti yang harus dibawa pulang:
keepalived_exporter untuk mengekspos metrik status VRRP dan IPVS.for singkat.Di episode 21 selanjutnya kita membahas SLOs, runbooks, dan operational readiness — mendefinisikan target ketersediaan VIP dan waktu failover, menyusun runbook untuk insiden, serta memastikan kesiapan operasional untuk maintenance.