Рейтинг:0

Могу ли я отследить пользователя RabbitMQ до удаленного хоста?

флаг us

Я часто обнаруживаю, что устраняю неполадки в ситуациях, когда из-за ошибки пользователя (забывшего закрыть некоторые процессы) некоторые дополнительные потребители прослушивают известную очередь RabbitMQ. Когда я делаю rabbitmqctl list_consumers | grep <имя-очереди> Я вижу, что потребителей слишком много (обычно в два раза больше, чем должно быть), но вовлеченные пользователи часто не знают, где они работают. Есть ли способ отследить потребителя от list_consumers вывод на удаленный хост, на котором запущен соответствующий процесс? Я пробовал все подкоманды list_*, но безуспешно.

Спасибо за любые идеи.

Рейтинг:1
флаг ve

Вы можете отследить связь (почти во всех случаях), но я не думаю, что это возможно через кроликmqctl в одиночестве.

РЕДАКТИРОВАТЬ: это является возможно, это просто требует нескольких запросов. См. ответ @em-bo.

В интерфейсе управления вы можете нажать на канал, а затем в разделе сведений посмотреть, к какому соединению он относится.

Просмотр канала

Рейтинг:1
флаг us

Ознакомившись с интерфейсом управления (спасибо @jrhodin), я смог понять, как это сделать с помощью rabbitmqctl. Ключ в том, чтобы передать аргументы pid и name в список каналов.

Сначала выполните list_consumers и получите pid потребителя:

$ sudo rabbitmqctl list_consumers | grep <имя-очереди>

Скопируйте pid (например, <[email protected]>)

Затем выполните list_channels и найдите pid:

$ sudo rabbitmqctl list_channels имя подключения pid | grep '<ваш-pid-здесь>'

Вывод покажет удаленный и локальный хост как часть имени канала. Если вы дополнительно хотите найти соединение, вы можете взять pid соединения (из приведенной выше команды) и найти его через list_connections.

Вот цикл, который выдает имена потребителей и каналов для заданной очереди:

для i в $(sudo rabbitmqctl list_consumers | grep <queue-name> | cut -f 2); 
do echo -n "Потребитель: " $i; 
echo -n "Канал:"; 
sudo rabbitmqctl list_channels pid имя | grep $ я | вырезать -f 2; 
сделано

Пример вывода:

Потребитель: <[email protected]> Канал: xx.x.xx.159:8247 -> xxx.xx.xx.119:5671 (1)
Потребитель: <[email protected]> Канал: xx.x.xx.159:9002 -> xxx.xx.xx.119:5671 (1)
Потребитель: <[email protected]> Канал: xx.x.xx.159:7298 -> xxx.xx.xx.119:5671 (1)
Потребитель: <[email protected]> Канал: xx.x.xx.159:12113 -> xxx.xx.xx.119:5671 (1)
Потребитель: <[email protected]> Канал: xx.x.xx.159:14212 -> xxx.xx.xx.119:5671 (1)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.