Как понять вывод команд rabbitmqctl
$rabbitmqctl list_queues
Timeout: 60.0 seconds ...
Listing queues for vhost / ...
privateTransactionQ 2
amq.gen-o9dl3Zj7HxS50gkTC2xbBQ 0
task_queue 0
Вывод rabbitmqctl выглядит следующим образом. Я не могу понять, для чего предназначен каждый столбец. Как я могу увидеть значение каждого столбца?
1 ответ
Для этого нет "легкого" решения, но мы - ИТ, и мы можем их построить. Я не эксперт ни в RabbitMQ, ни в программировании, но я сделаю все возможное, чтобы дать хороший ответ на этот вопрос, на случай, если кто-то придет сюда в поисках помощи.
Давайте возьмем точный случай перечисления очередей из консоли rabbitmqctl. Набрав "rabbitmqctl", вы получите список доступных команд:
Commands:
[...]
list_queues [-p <vhost>] [--online] [--offline] [--local] [<queueinfoitem> ...] [-t <timeout>]
[...]
Предполагая, что вы знаете, что такое vhost и очередь, скажем, вы хотите перечислить все очереди в vhost "TEST", тогда вам нужно будет набрать:
> rabbitmqctil list_queues -p TEST
Timeout: 60.0 seconds ...
Listing queues for vhost TEST ...
test.queue 0
По умолчанию вы получаете только "имя" очереди и ее "текущую глубину". Где вы найдете все параметры очередей? Обратите особое внимание на слово "queueinfoitem" в справочной инструкции, которую вы ввели первым. Если вы видите инструкции помощи rabbitmqctl (набрав "rabbitmqctl"), в конце инструкции вы увидите список доступных опций для параметра "".
Теперь давайте рассмотрим пример, в котором вы хотите увидеть более сложный статус очереди, скажем: сообщения, готовые в очереди, сообщения в статусе неподтвержденные, память RAM, потребители, использование памяти потребителем, состояние очереди и, конечно же, ее имя.,
Вы правы в одном: rabbitmqctl не возвращает результат по-дружески. По умолчанию вы получаете это:
rabbitmqctl list_queues -p TEST messages_ready, messages_unacknowledged, messages_ram, consumers, consumer_utilisation, state, name
Timeout: 60.0 seconds ...
Listing queues for vhost TEST ...
0 0 0 0 running test.queue
Но с небольшим воображением вы можете достичь этого:
----------------------------------------------------------
Msg. * Msg. * Msg. ** ** Cons. ** **** Name
Rdy * Unack * RAM *** Cons. * Util. ** State ***
----------------------------------------------------------
0 0 0 0 running test.queue
Это не страшно, но лучше, чем по умолчанию. Я добился этого с помощью небольшого скрипта Python:
import os
vhosts = os.popen("rabbitmqctl list_vhosts name").read()
logging.info(vhosts)
vhosts = vhosts.split("\n",1)[1]
vhosts = vhosts[:-1]
vhosts = vhosts.split("\n")
for vhost in vhosts:
header_a = "Msg. * Msg. * Msg. ** ** Cons. ** **** Name\n"
header_b = "Rdy * Unack * RAM *** Cons. * Util. ** State *** \n"
dash = "----------------------------------------------------------\n"
queues = os.popen("rabbitmqctl list_queues -p " + vhost + " messages_ready, messages_unacknowledged, messages_ram, consumers, consumer_utilisation, state, name").read()
queues = queues.split("\n",2)[2]
queues_list = dash + header_a + header_b + dash + queues
print(queues_list)
Конечно, это может быть улучшено многими способами, и критики всегда приветствуются, я все еще надеюсь, что это кому-то поможет.
Приветствия.