Data observability harus memicu tindakan. Di episode ini kalian membuat liveness dan readiness checks, memakai health check API, menyusun strategi alert untuk memori, disk, queue length, consumer down, dan cluster partition, serta mengintegrasikan alert ke Slack, email, dan webhook.

Di episode 24 kalian membangun observability: metrik mengalir ke Prometheus dan tampil di Grafana. Tapi dashboard yang indah tidak akan membangunkan kalian jam 3 pagi saat queue menumpuk. Di episode ini, observability bertransformasi menjadi actionability — melalui health checks dan alerting.
Health checks menjawab dua pertanyaan sederhana namun penting: "apakah broker masih hidup?" (liveness) dan "apakah broker siap menerima trafik?" (readiness). Sementara alerting memastikan kondisi abnormal segera diketahui tim, melalui kanal yang tepat — Slack, email, atau PagerDuty.
Episode ini menyusun alerting secara sistematis: apa saja yang harus di-alert, berapa ambang batasnya, dan lewat mana notifikasinya. Di akhir episode, kalian memiliki runbook dasar untuk merespons tanda-tanda pertama kerusakan broker.
Liveness check memastikan proses node hidup. Cara termudah: cek apakah port AMQP merespons, atau minta status node:
nc -zv localhost 5672
rabbitmqctl await_startupReadiness check memastikan node siap menerima trafik — queue bisa diakses, tidak dalam alarm, dan node bukan partitioned. Readiness yang tepat memakai health check API internal:
rabbitmqctl eval 'rabbit_health_checks:check_local_alarms().'
rabbitmqctl eval 'rabbit_health_checks:check_if_running().'Evaluasi check_local_alarms() gagal jika node sedang dalam memory/disk alarm — itulah sinyal "belum siap" yang bisa dipakai orchestrator seperti Kubernetes (episode 29).
Untuk kebutuhan spesifik, buat script health check sendiri yang memverifikasi: node tidak alarm, koneksi consumer aktif untuk queue kritikal, dan queue depth di bawah ambang. Jalankan script ini terjadwal dan kirim hasilnya ke sistem monitoring.
Beberapa kondisi yang harus memicu alert:
Contoh aturan alert queue depth di prometheus.yml:
groups:
- name: rabbitmq
rules:
- alert: RabbitQueueDepthHigh
expr: rabbitmq_queue_messages > 10000
for: 5m
labels:
severity: warning
annotations:
summary: "Queue {{ $labels.queue }} melebihi 10 ribu pesan"Aturan di atas menyala jika queue messages melebihi 10.000 selama 5 menit — cukup panjang untuk mengabaikan lonjakan sesaat.
Grafana dan Alertmanager bisa meneruskan alert ke banyak kanal. Di Alertmanager, atur penerima Slack dan email:
receivers:
- name: ops
slack_configs:
- channel: "#infra-alert"
api_url: "https://hooks.slack.com/services/XXXX"
email_configs:
- to: "ops@example.com"Kedua receiver di atas memastikan notifikasi sampai ke kanal Slack tim operasional dan email cadangan.
Untuk insiden kritis yang menuntut respons segera, hubungkan ke PagerDuty atau OpsGenie — alert on-call akan di-eskalasi otomatis. Untuk sistem internal, cukup buat custom webhook: Alertmanager mengirim POST JSON ke endpoint tim kalian, yang bisa meneruskannya ke aplikasi notifikasi internal atau bot.
Warning
Alert yang terlalu banyak justru berbahaya: tim belajar mengabaikan notifikasi. Mulai dari beberapa alert benar-benar kritis, lalu tambahkan perlahan. Setiap alert harus punya tindakan yang jelas — jika tidak, hapus saja.
Di episode 25 ini kalian sudah membuat liveness dan readiness checks, memakai health check API internal, menyusun alerting untuk memori, disk, queue length, consumer down, partition, dan DLQ, serta mengintegrasikan notifikasi ke Slack, email, PagerDuty, dan webhook.
Inti yang harus dibawa pulang:
check_local_alarms adalah readiness check bawaan yang andal.for menghindari false positive.Di episode 26 selanjutnya kita akan menghubungkan federation dan shovel — mereplikasi exchange dan queue antar cluster dengan Federation, meneruskan pesan point-to-point dengan Shovel, membandingkan keduanya, serta merancang pola multi-datacenter dan transfer pesan yang andal untuk disaster recovery. Ini jembatan antar broker!