RabbitMQ 集群状态:如何从 shell 中解析 Erlang 的光束?
Posted
技术标签:
【中文标题】RabbitMQ 集群状态:如何从 shell 中解析 Erlang 的光束?【英文标题】:RabbitMQ cluster status: how to parse Erlang's beam from a shell? 【发布时间】:2017-07-30 17:27:12 【问题描述】:我需要监控rabbitmq集群状态。
REST API 不提供有关 partitions
的信息。所以我需要使用apprabbitmqctl
:
# 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,[],
。如果有空的[]
它是is ok。否则我有问题。
我从 bash 中找到了使用 erlang 的示例:
erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().' -noshell
是否可以使用erl
(或其他工具)解析rabbitmqctl
stdout 并返回信息“空/非空”或返回代码?
我绝对不知道 Erlang。
如果有人帮助我,我会很高兴:-)
【问题讨论】:
您需要删除第一行输入,因为它不是 Erlang 术语的一部分,在列表末尾添加一个点.
,将其存储到文件中,然后您可以阅读它与file:consult/1
。剩下的就是数据操作了。
【参考方案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,
你不需要 erlang shell
【讨论】:
另外,您可以选择使用以下格式仅显示特定信息:http://your_ip:15672/api/nodes?columns=name,running,cluster_links
以上是关于RabbitMQ 集群状态:如何从 shell 中解析 Erlang 的光束?的主要内容,如果未能解决你的问题,请参考以下文章
如何从rabbitmq集群中剔除某个节点以及如何将该节点加回集群
如何在 kubernetes 上设置基本的 rabbitmq