「消息队列」RabbitMQ监控与管理

本文详细介绍RabbitMQ的监控与管理方式,包括节点管理、消息队列管理、集群管理、用户及权限管理等,提供了丰富的rabbitmqctl命令示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请注明出处: https://blog.csdn.net/jinixin/article/details/84038616

 

上篇文章对RabbitMQ做了大致介绍, 本篇文章还想简单谈谈RabbitMQ的监控与管理. 以我目前的理解, 监控与管理主要还是依靠rabbitmqctl命令来操作, 因此本篇文章也可以认为是命令的罗列.

RabbitMQ的命令都在"RabbitMQ安装或解压目录/sbin/"目录下, 其中rabbitmqctl是RabbitMQ提供的监控与管理命令, 其支持查看状态与配置, 健康检查, 用户及权限管理, 集群管理, 虚拟主机/交换机/连接/队列/信道管理等操作.

 

 

节点管理

 

1. 启动服务或应用

1) rabbitmq-server

在当前节点上启动RabbitMQ服务, 包括启动底层的Erlang进程, 并在进程上启动RabbitMQ应用.

 

2) rabbitmqctl start_app

在当前节点上启动RabbitMQ应用, 注意这和"rabbitmq-server"命令是不一样的. "rabbitmq-server"命令用于启动RabbitMQ服务, 包括启动Erlang进程以及在进程上启动RabbitMQ应用, 而"rabbitmqctl start_app"命令使用的前提是RabbitMQ服务的一部分(Erlang进程)仍存活.

 

2. 停止服务或应用

1) rabbitmqctl stop_app

在当前节点上停止RabbitMQ应用, 但其会保持RabbitMQ服务的一部分(Erlang进程)继续运行, 重启应用可通过"rabbitmqctl start_app"命令.

 

2) rabbitmqctl stop

停止当前节点的RabbitMQ服务, 包括Erlang进程以及进程上的RabbitMQ应用. 重启服务请使用"rabbitmq-server"命令, "rabbitmqctl start_app"命令是起不了作用的, 因为Erlang进程已不存在.

 

3) rabbitmqctl shutdown

强制停止当前节点的RabbitMQ服务, 包括Erlang进程以及进程上的RabbitMQ应用. 如果操作失败, 命令返回非0.

 

4) rabbitmqctl wait [pid_file] [--pid 进程号]

在指定的Erlang进程上启动RabbitMQ应用, 命令会从pid_file指定的文件中读取进程号, 或通过pid参数获得进程号, 并在对应进程号的进程上启动RabbitMQ应用.

 

3. 重置服务

1) rabbitmqctl reset

初始化节点, 即把节点恢复到最原始状态, 即删除其上的虚拟主机/交换机/队列/持久化消息/用户, 退出已加入的集群等. 
执行该命令前, 请确保RabbitMQ应用已停止.

 

2) rabbitmqctl force_reset

强制初始化节点, 当配置文件损坏时请使用该操作. 和"rabbitmqctl reset"一样, 其必须在RabbitMQ应用停止后才能操作.

 

 

消息队列管理

 

1) rabbitmqctl add_vhost 虚拟主机名

在当前节点上增加虚拟主机

 

2) rabbitmqctl delete_vhost 虚拟主机名

删除当前节点上的某虚拟主机

 

3) rabbitmqctl list_vhosts

列出当前节点上的所有虚拟机

 

4) rabbitmqctl list_queues [-p 虚拟主机名] [返回字段]

列出某虚拟主机上的所有队列, 未指定p参数时, 默认使用"/"虚拟主机. "返回字段"用以要求命令额外返回队列信息, 常用字段如下:

返回字段说明
name队名名称
durable队列是否持久化
auto_delete长时间不使用后是否会自动删除
messages_unacknowledged队列中未确认消息数量
messages_ready队列中等待发送消息数量
messages队列中消息总数, 上面两者之和
messages_persistent队列中持久消息总数
consumers队列连接的消费者数量

举例: rabbitmqctl list_queues messages consumers

 

5) rabbitmqctl list_exchanges [-p 虚拟主机名] [返回字段]

返回某虚拟主机上所有交换机, 未指定p参数时, 默认使用"/"虚拟主机. "返回字段"以要求命令额外返回交换机信息, 常用字段如下:

返回字段说明
name交换机名称
type交换机类型, 共四种
durable交换机是否持久化
auto_delete长时间不使用后是否会自动删除

举例: rabbitmqctl list_exchanges name type

 

6) rabbitmqctl list_bindings [-p 虚拟主机名]

返回某虚拟主机上所有绑定的详细信息, 未指定p参数时, 默认使用"/"虚拟主机.

 

7) rabbitmqctl list_connections [返回字段]

返回当前节点上所有连接. "返回字段"用以要求命令额外返回的连接信息, 常用字段如下:

返回字段说明
pid连接所在的进程号
host服务器的地址
port服务器的端口
ssl连接是否ssl加密
state连接状态
channels连接下信道数
user连接关联的用户名
vhost所属虚拟主机
timeout连接的超时时间/商议的心跳间隔时间, 单位为秒
connected_at连接的建立时间

 

8) rabbitmqctl list_channels [返回字段]

列出所有的信道, "返回字段"用以要求命令额外返回的信道信息, 常用字段如下:

返回字段说明
pid连接所在的进程号
connection连接所在的进程号, 不清楚和上者的区别
name信道的名字, 类似于"客户端ip:端口 -> 服务器ip:端口"的结构
user信道所属用户
vhost信道所属虚拟主机
consumer_count从该信道获取消息的消费者数量
messages_unacknowledged通过该信道已发送但还未确认的消息数量
prefetch_count每个消费者的一次最多从该信道获取未确认消息的数量

 

9) rabbitmqctl list_consumers [-p 虚拟主机名]

列出某虚拟主机上订阅的消费者. 每行依次为"订阅的队列名称", "信道所在的进程id", "订阅的唯一标识", "消费者是否启用消息自动确认机制", "prefetch_count".

 

10) rabbitmqctl status

生成消息代理(Broker)的报告.

 

11) rabbitmqctl node_health_check [-n 节点名称]

对节点做健康状况检查, 检查是否有报警. 未指定n参数时, 默认对当前节点做检查.


12) rabbitmqctl environment

显示当前节点的所有环境变量配置.

 

13) rabbitmqctl close_connection 进程号 异常信息

关闭某进程对应的连接, 其中进程号为连接所在的Erlang进程id.

举例: rabbitmqctl close_connection “<rabbit@node.xx.com>” "user_require", 表示关闭Erlang进程“<rabbit@node.xx.com>”上的所有连接, 关闭时的异常信息为"user_require".

 

14) rabbitmqctl close_all_connections [-p 虚拟主机名] [--global]

关闭当前节点的某虚拟主机上所有连接. p参数用于指定某台特定的虚拟主机, 如果没有p参数则一定加上--global, 其表示关闭该节点上的所有连接.

举例: "rabbitmqctl close_all_connections -p plant", 表示关闭"plant虚拟主机"上的连接. "rabbitmqctl close_all_connections --global", 表示关闭当前节点上的所有连接.

 

15) rabbitmqctl set_vm_memory_high_watermark absolute 内存大小

设置消息队列占用内存的限制, 内存大小单位为kB, MB, GB. 一旦内存达到该值, 则启用流量限制.

举例: rabbitmqctl set_vm_memory_high_watermark absolute 200MB

 

16) rabbitmqctl set_disk_free_limit disk_limit 磁盘大小

设置磁盘的最小剩余空间.

 

 

集群管理

 

1) rabbitmqctl join_cluster A节点的节点名称 [--ram]

将当前节点加入A节点所在集群, 如果ram参数被指明, 则当前节点将作为内存节点加入集群.

 

2) rabbitmqctl cluster_status

打印集群的目前状态(节点数量, 活跃节点数量, 节点类型).

 

3) rabbitmqctl change_cluster_node_type disc/ram

改变当前节点类型, disc表示类型为磁盘节点, ram表示类型为内存节点. 执行该命令前, 请确保RabbitMQ应用已停止.

 

4) rabbitmqctl -n A节点的节点名称 forget_cluster_node B节点的节点名称

从A节点所在集群中移除B节点.

 

5) rabbitmqctl sync_queue [-p 虚拟主机名] 队列名

要求所有镜像队列对本节点某虚拟主机下的指定队列进行一次同步, 同步时该队列会阻塞住, 未指定p参数时, 默认为"/"虚拟主机.

 

6) rabbitmqctl purge_queue [-p 虚拟主机名] 队列名

清除队列以及队列内的消息, 未指定p参数时, 默认为"/"虚拟主机.

 

 

用户及权限管理

 

1) rabbitmqctl add_user 用户名 密码

增加用户.

 

2) rabbitmqctl delete_user 用户名

删除用户.

 

3) rabbitmqctl change_password 用户名 密码

更改某用户的密码.

 

4) rabbitmqctl authenticate_user 用户名 密码

用户认证.

 

5) rabbitmqctl list_users

列出当前集群上的所有用户.

 

6) rabbitmqctl set_permissions [-p 虚拟主机名] 用户名 配置权限 写权限 读权限

设置某用户访问某虚拟主机的权限, 未指定p参数时, 默认使用"/"虚拟主机.

举例:

rabbitmqctl set_permissions -p /plant monkey “^xx-.*” “.*” “.*”

授予用户"monkey"对"/plant"虚拟主机的权限, 包括所有以"xx-"开头资源的配置权限, 所有资源的写权限, 所有资源的读权限.

 

7) rabbitmqctl clear_permissions [-p 虚拟主机名] 用户名

收回某用户在某虚拟主机上的所有权限, 未指定p参数时, 默认使用"/"虚拟主机.

举例:

rabbitmqctl clear_permissions -p /plant monkey

收回用户"monkey"对"/plant"虚拟主机的所有权限.

 

8) rabbitmqctl list_permissions [-p 虚拟主机名]

列出某虚拟主机上所有用户的所有权限, 未指定p参数时, 默认使用"/"虚拟主机.

 

9) rabbitmqctl list_user_permissions 用户名

列出某用户在所有虚拟主机上的权限.


10) rabbitmqctl set_user_tags 用户名 administrator

设置某用户为管理员.

 

 

后台管理

 

通过插件, 可以使用Web后台来监控和管理RabbitMQ服务:

rabbitmq-plugins enable rabbitmq_management

即可访问"127.0.0.1:15672", 默认用户名和密码均为"guest".

 

 

文中如有不当之处, 还望包容和指出, 感谢.

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值