Состояние кластера RabbitMQ: как отделить луч Эрланга от оболочки?

Мне нужно контролировать состояние кластера rabbitmq.

REST API не предоставляет информацию о partitions, Так что мне нужно использовать приложение rabbitmqctl:

# rabbitmqctl cluster_status
Cluster status of node 'rabbit@rabbit-1' ...
[{nodes,[{disc,['rabbit@rabbit-1','rabbit@rabbit-2',
                'rabbit@rabbit-3']}]},
 {running_nodes,['rabbit@rabbit-3','rabbit@rabbit-2',
                 'rabbit@rabbit-1']},
 {cluster_name,<<"rabbit@rabbit-1">>},
 {partitions,[]},
 {alarms,[{'rabbit@rabbit-3',[]},
          {'rabbit@rabbit-2',[nodedown]},
          {'rabbit@rabbit-1',[]}]}]

Мне нужно проверить {partitions,[]},, Если там пусто [] это нормально. В противном случае у меня есть проблемы.

Я нашел пример использования erlang из bash:

erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().'  -noshell

Можно разобрать rabbitmqctl стандартный вывод erl (или другой инструмент) и возвращаемая информация "пусто / не пусто" или код возврата?

Я абсолютно не знаю Эрланга.

Если кто-нибудь поможет мне, я буду счастлив:-)

1 ответ

Решение

Вы можете использовать это API

http://your_ip:15672/api/nodes

где вы можете проверить, находится ли узел вверх или вниз

name: "rabbit@t-srv-rabbit-cent04",
type: "disc",
running: false,
+cluster_links: (0)[...],

или разделы

},
-{
-partitions: (0)[
],
os_pid: "8070",
fd_total: 300000,
sockets_total: 269908,
mem_limit: 1590196633,

вам не нужна оболочка эрланга

Другие вопросы по тегам