目的
本ドキュメントではCisco VIM (CVIM) のRabbitMQの状態を確認するための以下の2つの方法をご紹介します。
- rabbit_api.py を使用した確認
- rabbitmqctlコマンドを使用した確認
rabbit_api.py を使用した確認
CVIMにはRabbitMQの健全性をチェックするための rabbit_api.py Pythonスクリプトが用意されています。
このスクリプトは以下の項目をチェックし、結果を出力します。
- クラスタステータス
- 各クラスタノードのヘルスチェック
- Consumerが存在しないQueueの有無
- 問題の発生しているExchangeの有無
- Ready状態および応答のないMessageの有無
- 必要なQueueに対応するConsumerの確認
手順
1. CVIM の Management ノードにログインします。
2. ログイン後、/root/installer-<version>/toolsに移動します。
※上記の<version>は環境によって異なります。
[root@cvim-cpod-mgmtnode ~]# cd /root/installer-22473/tools/
[root@cvim-cpod-mgmtnode tools]#
3. Pythonスクリプト rabbit_api.py を実行します。
[root@cvim-cpod-mgmtnode tools]# python rabbit_api.py
=============================================
1.CLUSTER STATUS
=============================================
Nodes in rabbitmq cluster
Node:rabbit@cpod-control-1 Running:True partition:[]
Node:rabbit@cpod-control-2 Running:True partition:[]
Node:rabbit@cpod-control-3 Running:True partition:[]
CLUSTER CHECK RESULT: PASSED
============================================
2. Health check on each cluster node
============================================
healthchecks/node/rabbit@cpod-control-1
200 {u'status': u'ok'}
HEALTH ALIVENESS CHECK: PASSED
healthchecks/node/rabbit@cpod-control-2
200 {u'status': u'ok'}
HEALTH ALIVENESS CHECK: PASSED
healthchecks/node/rabbit@cpod-control-3
200 {u'status': u'ok'}
HEALTH ALIVENESS CHECK: PASSED
=============================================
3. List queues with no consumers
=============================================
CONSUMERS CHECK RESULT: PASSED
==============================================
4. Check if critical exchanges are present
==============================================
EXCHANGE CHECK RESULT: PASSED
===============================================
5. Ready and Unacked Messages Overview
===============================================
Messages Ready:0 Unacked: 0
================================================
6. Check for the required queues and if they have the right number of consumers
================================================
CONSUMERS CHECK IN CRITICAL QUEUES CHECK: PASSED
================================================================
OVERALL RESULT: PASS
[root@cvim-cpod-mgmtnode tools]#
問題が検出されなかった項目は'PASSED'と表示されますが、問題が検出された場合には'FAILED'と表示されます。
rabbitmqctlコマンドを使用した確認
RabbiMQ管理ツール rabbitmqctl を使うとクラスタステータスやキューのステータスなど様々な情報の詳細を確認することができます。
手順
1. Controllerノードにログインし、rabbitmq dockerコンテナに入ります。alias に登録されているため、Controllerノード上で 'rabbit' と入力することで rabbitmq dockerコンテナに入ることができます。
[root@cpod-control-1 ~]# rabbit
rabbitmq_22473 [rabbitmq@cpod-control-1 /]$
2. rabbimqctl コマンドと以下のオプションを使ってそれぞれの詳細を出力します。
rabbitmqctl cluster_status
rabbitmqctl list_vhosts
rabbitmqctl list_users
rabbitmqctl list_user_permissions <user>
rabbitmqctl list_parameters
rabbitmqctl list_global_parameters
rabbitmqctl list_policies
rabbitmqctl list_permissions
rabbitmqctl list_queues
rabbitmqctl list_exchanges
rabbitmqctl list_bindings
rabbitmqctl list_connections
rabbitmqctl list_channels
rabbitmqctl list_consumers
rabbitmqctl list_hashes
rabbitmqctl list_ciphers
* rabbitmqctl list_user_permissions <user>の<user>は'rabbitmqctl list_users'で出力されたユーザが入ります。
実行例:rabbitmqctl cluster_status を実行してクラスタステータスを確認する
rabbitmq_22473 [rabbitmq@cpod-control-1 /]$ rabbitmqctl cluster_status
Cluster status of node rabbit@cpod-control-1 ...
[{nodes,[{disc,['rabbit@cpod-control-1','rabbit@cpod-control-2',
'rabbit@cpod-control-3']}]},
{running_nodes,['rabbit@cpod-control-2','rabbit@cpod-control-3',
'rabbit@cpod-control-1']},
{cluster_name,<<"rabbit@cpod-control-3">>},
{partitions,[]},
{alarms,[{'rabbit@cpod-control-2',[]},
{'rabbit@cpod-control-3',[]},
{'rabbit@cpod-control-1',[]}]}]
rabbitmq_22473 [rabbitmq@cpod-control-1 /]$
実行例:rabbitmqctl list_queues を実行してQueueを確認する
rabbitmq_22473 [rabbitmq@cpod-control-1 /]$ rabbitmqctl list_queues
Timeout: 60.0 seconds ...
Listing queues for vhost / ...
q-agent-notifier-dvr-update.cpod-osd-compute-1 0
q-server-resource-versions_fanout_e0ce81f94c2f4bfba5021230f303b65a 0
q-agent-notifier-network-update_fanout_a77d4bff451540b09c13a1b390139326 0
heat-engine-listener.00cfa180-f357-44ed-a7ea-eded1fff134f 0
q-plugin_fanout_200bb55ea02e4ab583e95e9d33c626f1 0
engine_worker_fanout_8741e5017a3e41d4b1baaa39a56ef479 0
heat-engine-listener_fanout_b4a66998f82a4be48c2388e0479c9ced 0
q-agent-notifier-tunnel-delete_fanout_1a696db8f5a74ebe8d475935601944e6 0
neutron-vo-SubPort-1.0.cpod-control-2 0
q-agent-notifier-security_group-update.cpod-compute-4 0
q-agent-notifier-network-update.cpod-compute-1 0
engine_fanout_a899c8a942f640189593a1ed3e45a4d7 0
q-agent-notifier-port-update_fanout_4740d8ac8e7844278584642700ef86cf 0
q-server-resource-versions_fanout_7c3b3f9ff82a45cfb61bb74f49da35a0 0
q-agent-notifier-dvr-update.cpod-compute-3 0
reply_e92c8ca1064c4cc4b8c5cbdd8aa8459c 0
....
....
関連情報
rabbitmqclt(8)
https://www.rabbitmq.com/rabbitmqctl.8.html