Broker yang tidak terpantau adalah kotak hitam. Di episode ini kalian membaca metrik dari Management UI, HTTP API, dan rabbitmqctl, mengintegrasikan Prometheus dengan plugin metrik, menyusun dashboard Grafana, serta mengelola log dengan level, structured logging, dan agregasi terpusat.

Sejauh ini kita mengecek RabbitMQ secara manual: rabbitmqctl status, melihat log, atau membuka Management UI. Itu semua berfungsi untuk pembelajaran, tapi di produksi kalian butuh pengawasan yang otomatis dan terus-menerus. Broker yang bermasalah harus terlihat dalam hitungan detik, bukan setelah pelanggan komplain.
Episode ini membangun lapisan observability yang lengkap. Pertama, kita berkenalan dengan sumber metrik: Management UI, HTTP API, dan perintah rabbitmqctl. Kedua, kita mengintegrasikan Prometheus — standar industri untuk metrik — lewat plugin resmi, dan menampilkannya di Grafana. Terakhir, kita atur logging yang benar: level, lokasi, structured logging, dan agregasi ke sistem terpusat.
Dengan observability yang baik, kalian tidak perlu lagi menerka-nerka kenapa queue menumpuk — datanya tersedia, dan alarm-nya menunggu di episode 25.
Management UI menampilkan metrik real-time per node, vhost, queue, dan exchange. Di belakangnya ada HTTP API yang bisa dipanggil terprogram:
curl -s -u arman:pass \
http://localhost:15672/api/queues/%2f/task_queue | python3 -m json.toolPerintah curl di atas mengambil metrik queue task_queue dalam vhost / (%2f). Response JSON berisi jumlah pesan, rate publish, rate deliver, dan lainnya.
rabbitmqadmin menyediakan antarmuka yang nyaman ke HTTP API, sementara rabbitmqctl membaca state internal langsung:
rabbitmqctl list_queues name messages messages_unacknowledged consumersPerintah rabbitmqctl list_queues menampilkan depth, pesan tak ter-ack, dan jumlah consumer — tiga angka kunci untuk menilai kesehatan queue.
Aktifkan plugin metrik dan buka endpointnya:
rabbitmq-plugins enable rabbitmq_prometheus
curl -s http://localhost:15692/metrics | head -n 20Endpoint http://localhost:15692/metrics menyajikan metrik format Prometheus. Tambahkan sebagai target di prometheus.yml:
scrape_configs:
- job_name: rabbitmq
static_configs:
- targets: ["rabbitmq-node1:15692"]Grafana menyediakan dashboard RabbitMQ yang sudah jadi — impor dashboard dengan ID resmi dari grafana.com. Dari metrik yang sama, buat alert untuk queue depth, memori, dan disk (alerting ini dibahas detail di episode 25). Kombinasikan dengan node exporter untuk metrik OS.
RabbitMQ menulis log ke /var/log/rabbitmq/ pada instalasi native, atau ke stdout dalam Docker. Atur level log di rabbitmq.conf:
log.file.level = info
log.console.level = warningUntuk debugging, naikkan level ke debug; di produksi, info biasanya cukup untuk jejak normal.
Mulai RabbitMQ 3.8, log bisa dikeluarkan sebagai structured log (format JSON) untuk diproses sistem log terpusat seperti ELK atau Loki:
log.file.formatter = jsonDengan log.file.formatter = json, setiap baris log menjadi JSON yang mudah diparsing oleh aggregator. Untuk audit logging, aktifkan plugin rabbitmq_amqp1_0 dan track akses user via HTTP API atau logging level debug pada peristiwa autentikasi.
Tip
Mulai dari metrik sederhana: queue depth, publish rate, memory, dan disk. Setelah infrastruktur monitoring berdiri, perluas ke metrik yang lebih spesifik per workload.
Di episode 24 ini kalian sudah membaca metrik dari Management UI, HTTP API, dan rabbitmqctl; mengintegrasikan Prometheus dengan plugin metrik; menyiapkan dashboard Grafana; serta mengelola logging dengan level, structured JSON, dan agregasi terpusat.
Inti yang harus dibawa pulang:
rabbitmq_prometheus menyajikan metrik di port 15692.Di episode 25 selanjutnya kita akan menyusun alerting dan health checks — liveness dan readiness checks, endpoint health API, alarm memori, disk, queue length, consumer down, dan cluster partition, serta integrasi alert ke PagerDuty, Slack, email, dan webhook. Ini yang mengubah data observability menjadi tindakan!