Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Management UI, API and metrics

FireMQ's HTTP listener, port 15672 by default, serves four things:

PathWhat
/The management UI
/api/...The management API, compatible with RabbitMQ's
/metricsPrometheus metrics
/healthzAn unauthenticated liveness probe
/fireThe FireMQ protocol over WebSocket

UI

Open http://localhost:15672 and log in with a user that has the administrator, management, monitoring or policymaker tag. The UI shows totals and rates, connections, queues and exchanges. From a queue's page you can publish, peek at or take messages, bind it, purge it and delete it. The Admin page manages users, vhosts, policies and definitions.

API

The API follows RabbitMQ's management API: the same paths, JSON shapes and status codes. Tools written for RabbitMQ, including rabbitmqadmin, work with it. Authenticate with HTTP Basic:

curl -u guest:guest http://localhost:15672/api/overview
curl -u guest:guest http://localhost:15672/api/queues/%2F
curl -u guest:guest -X PUT -H 'content-type: application/json' \
  -d '{"durable": true, "arguments": {"x-max-length": 1000}}' \
  http://localhost:15672/api/queues/%2F/orders

The default vhost / is written %2F in URLs, and the default exchange is amq.default.

Access

User tagCan
administratorEverything
monitoring or managementRead everything; management users can also fetch messages with /get
policymakerRead everything and manage policies

A user without one of these tags cannot use the API. Users in loopback_users can only log in from localhost.

Endpoints

AreaEndpoints
NodeGET /api/overview, /api/nodes, /api/whoami, /api/cluster-name
Virtual hostsGET /api/vhosts; GET, PUT, DELETE /api/vhosts/{vhost}
UsersGET /api/users; GET, PUT, DELETE /api/users/{user}; GET /api/users/{user}/permissions
PermissionsGET /api/permissions; GET, PUT, DELETE /api/permissions/{vhost}/{user}
PoliciesGET /api/policies[/{vhost}]; GET, PUT, DELETE /api/policies/{vhost}/{name}
ExchangesGET /api/exchanges[/{vhost}]; GET, PUT, DELETE /api/exchanges/{vhost}/{name}; POST .../publish; GET .../bindings/source, .../bindings/destination
QueuesGET /api/queues[/{vhost}]; GET, PUT, DELETE /api/queues/{vhost}/{name}; DELETE .../contents; POST .../get; GET .../bindings
BindingsGET /api/bindings[/{vhost}]; GET, POST /api/bindings/{vhost}/e/{exchange}/q/{queue} (or /e/{exchange}); GET, DELETE .../{properties_key}
ConnectionsGET /api/connections, /api/vhosts/{vhost}/connections; GET, DELETE /api/connections/{name}
Channels and consumersGET /api/channels, /api/consumers[/{vhost}]
DefinitionsGET, POST /api/definitions[/{vhost}]
HealthGET /api/aliveness-test/{vhost}, /api/health/checks/alarms, local-alarms, virtual-hosts, port-listener/{port}, protocol-listener/{protocol}

List endpoints accept ?columns=name,messages (dotted paths such as message_stats.publish work) and ?name= to filter by name.

Prometheus metrics

/metrics needs no authentication. Metric names follow RabbitMQ's Prometheus plugin, so existing dashboards work:

  • rabbitmq_connections, rabbitmq_channels, rabbitmq_consumers, rabbitmq_queues
  • rabbitmq_queue_messages_ready, rabbitmq_queue_messages_unacked, rabbitmq_queue_messages
  • rabbitmq_global_messages_received_total, _delivered_total, _acknowledged_total, _confirmed_total, _unroutable_dropped_total
  • rabbitmq_process_resident_memory_bytes, rabbitmq_resident_memory_limit_bytes, rabbitmq_disk_space_available_bytes, rabbitmq_alarms_memory_used_watermark, rabbitmq_alarms_free_disk_space_watermark

Per-queue series carry vhost and queue labels: firemq_queue_messages_ready, firemq_queue_messages_unacked, firemq_queue_consumers, firemq_queue_messages_published_total, firemq_queue_messages_delivered_total and firemq_queue_messages_acked_total.

# prometheus.yml
scrape_configs:
  - job_name: firemq
    static_configs:
      - targets: ["localhost:15672"]