Identifying RabbitMQ objects


While I was looking for better RabbitMQ monitoring, I wondered which queues/exchanges/channels should I monitor?

So I did this small exercise.

  • stop all OpenStack services

  • delete all RabbitMQ queues, exchanges and channels

  • start services one by one

KEYSTONE

i keep all my users,password,tenants,roles in ldap. so the only thing i can create was an service. it did not create any object on RabbitMQ.

notifications were enabled.

GLANCE registry and API

downloading/uploading/deleting an image will create and exchange and queue the exchange is named openstack by default the queue name is notifications.info by default

NOVA

  • nova-api and nova-scheduler
  • nova (exchange)
  • scheduler_fanout (exchange)
  • scheduler (queue)
  • scheduler.\$hostname (queue)
  • scheduler_fanout_a_24_chars_string (queue)
  • good explanation at http://www.gossamer-threads.com/lists/openstack/dev/20622

When a compute node start nova-compute will create an exchange and a queue named like this: - reply_ef0e5c48fae1456289222d9b5cc567d9

  • nova-conductor will create
  • conductor_fanout (exchange)
  • conductor_hostname (queue)
  • conductor (queue)
  • conductor_fanout_a_24_chars_string, one for each conductor proccess you run (queue)

  • nova-compute will create after conductor appears

  • monitor.info (queue)
  • compute (queue)
  • compute.hostname (queue)
  • compute_fanout_a_24_chars_string (queue)
  • compute_fanout (exchange)

  • nova-consoleauth will create

  • consoleauth_fanout (exchange)
  • consoleauth (queue)
  • consoleauth.hostname (queue)
  • consoleauth_a_24_chars_string nova-spicehtml5proxy won't create any object

NEUTRON

  • neutron-server will create
  • neutron (exchange)
  • q-firewall-plugin (queue)
  • q-l3-plugin (queue)
  • q-metering-plugin (queue)
  • q-plugin (queue)
  • neutron-l3-agent will create
  • l3_agent_fanout (exchange)
  • reply_a_24_chars_string (exchange)
  • l3_agent (queue)
  • l3_agent.hostname (queue)
  • l3_agent_fanout_a_24_chars_string (queue)
  • reply_a_24_chars_string (queue)
  • neutron-dhcp-agent will create the same as l3-agent
  • s'/l3/dhcp/' metadata-proxy won't create any object (obviously)
  • neutron-plugin-openvswitch (using ml2) will create
  • q-agent-notifier-network-delete_fanout (exchange)
  • q-agent-notifier-port-update_fanout (exchange)
  • q-agent-notifier-security_group-update_fanout (exchange)
  • q-agent-notifier-tunnel-update_fanout (exchange)
  • reply_a_24_chars_string (exchange)
  • q-agent-notifier-network-delete_fanout_a_24_chars_string (queue)
  • q-agent-notifier-port-update_fanout_a_24_chars_string (queue)
  • q-agent-notifier-security_group-update_fanout_a_24_chars_string (queue)
  • q-agent-notifier-tunnel-update_fanout_a_24_chars_string (queue)
  • reply_a_24_chars_string (queue) each other neutron-ovs-agent will add another
  • reply_a_24_chars_string (queue)
  • reply_a_24_chars_string (exchange)



CEILOMETER

  • ceilometer-agent-compute won't create any queue or exchange neither ceilometer-api

  • ceilometer-collector will create

  • ceilometer.collector (queue)
  • ceilometer.collector.hostname (queue)
  • ceilometer.collector.metering (queue)
  • ceilometer.collector_fanout_a_24_chars_string (queue)
  • ceilometer (exchange)
  • ceilometer.collector_fanout (exchange) ceilometer-agent-central won't create any object ceilometer-agent-notification will create
  • ceilometer.agent.notification_fanout (exchange)
  • ceilometer.agent.notification (queue)
  • ceilometer.agent.notification.hostname (queue)
  • ceilometer.agent.notification_fanout_a_24_chars_string (queue) ceilometer-alarm-evaluator won't create any object ceilometer-alarm-notifier will create
  • ceilometer-alarm-notification will create
  • ceilometer.alarm.notification_fanout (exchange)
  • ceilometer.alarm.notification (queue)
  • ceilometer.alarm.notification.hostname (queue)
  • ceilometer.alarm.notification_fanout_a_24_chars_string (queue)



CINDER

  • cinder-api will create
  • cinder (exchange)
  • heat(WTF?) i don't even have heat installed, but this queue appeared cinder-volume, cinder-scheduler and cinder-backup follow the same pattern as before
  • service (exchange)
  • service (queue)
  • service.hostname (queue)
  • service_fanout_a_24_chars_string (queue)



DESIGNATE

  • designate-central will create
  • central (queue)
  • central.hostname (queue)
  • central_fanout (exchange) designate-api won't create any object designate-agent will create
  • agent (queue)
  • agent.hostname (queue)
  • agent_fanout (exchange) the surprise here is the name of the objects without designate.

This behavior was observed using icehouse, on a 3 nodes install. I may be wrong this is an experiment, I didn't verify what I saw with the code. You should check the code before use this information. if you do check the code and confirm or deny any of my assumptions, please comment it :)