Belajar RabbitMQ - Monitoring & Observability
Episode 24 of 33

Belajar RabbitMQ - Monitoring & Observability

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.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

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.

Pendekatan Monitoring

Management UI dan HTTP API

Management UI menampilkan metrik real-time per node, vhost, queue, dan exchange. Di belakangnya ada HTTP API yang bisa dipanggil terprogram:

Ambil metrik queue via HTTP API
curl -s -u arman:pass \
  http://localhost:15672/api/queues/%2f/task_queue | python3 -m json.tool

Perintah curl di atas mengambil metrik queue task_queue dalam vhost / (%2f). Response JSON berisi jumlah pesan, rate publish, rate deliver, dan lainnya.

rabbitmqadmin dan rabbitmqctl

rabbitmqadmin menyediakan antarmuka yang nyaman ke HTTP API, sementara rabbitmqctl membaca state internal langsung:

List queue beserta metrik
rabbitmqctl list_queues name messages messages_unacknowledged consumers

Perintah rabbitmqctl list_queues menampilkan depth, pesan tak ter-ack, dan jumlah consumer — tiga angka kunci untuk menilai kesehatan queue.

Key Metrics yang Harus Dipantau

Queue Depth dan Message Rates

  • Queue depth — jumlah pesan menunggu; naik terus menandakan consumer kewalahan.
  • Publish rate, deliver rate, ack rate — lalu lintas pesan per detik.
  • Unacknowledged messages — pesan yang sedang diproses; tidak wajar jika melonjak.

Connection, Memory, dan Node Health

  • Jumlah connection dan channel — lonjakan menandakan kebocoran koneksi di aplikasi.
  • Memory dan disk usage — dekat dengan alarm berarti ada masalah.
  • Consumer utilization — persentase waktu consumer sibuk; menentukan prefetch tepat.

Integrasi Prometheus

Plugin Prometheus dan Endpoint Metrik

Aktifkan plugin metrik dan buka endpointnya:

Aktifkan plugin prometheus
rabbitmq-plugins enable rabbitmq_prometheus
curl -s http://localhost:15692/metrics | head -n 20

Endpoint http://localhost:15692/metrics menyajikan metrik format Prometheus. Tambahkan sebagai target di prometheus.yml:

Target Prometheus untuk RabbitMQ
scrape_configs:
  - job_name: rabbitmq
    static_configs:
      - targets: ["rabbitmq-node1:15692"]

Dashboard Grafana dan Alert

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.

Logging

Level Log dan Lokasi File

RabbitMQ menulis log ke /var/log/rabbitmq/ pada instalasi native, atau ke stdout dalam Docker. Atur level log di rabbitmq.conf:

Atur level log
log.file.level = info
log.console.level = warning

Untuk debugging, naikkan level ke debug; di produksi, info biasanya cukup untuk jejak normal.

Structured Logging dan Agregasi

Mulai RabbitMQ 3.8, log bisa dikeluarkan sebagai structured log (format JSON) untuk diproses sistem log terpusat seperti ELK atau Loki:

Aktifkan structured logging
log.file.formatter = json

Dengan 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.

Penutup

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:

  • HTTP API dan rabbitmqadmin memberi akses metrik secara terprogram.
  • Queue depth, message rates, dan unacknowledged adalah metrik kunci queue.
  • Pantau connection, memori, dan disk untuk kesehatan node.
  • Plugin rabbitmq_prometheus menyajikan metrik di port 15692.
  • Grafana dashboard resmi mempercepat visualisasi.
  • Log bisa diatur level dan diformat JSON untuk agregasi.
  • Struktur observability yang baik menuntun ke alerting yang andal.

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!

Belajar RabbitMQ - Monitoring & Observability | Belajar RabbitMQ