运维工作中最常用的 `rabbitmqctl` 命令大全

好的，以下是运维工作中最常用的 `rabbitmqctl` 命令大全，涵盖了日常管理、监控和故障排查的各个方面。 

 ## 📊 RabbitMQ 常用运维命令大全 

 ### 一、节点与集群管理 

 | 命令 | 说明 | 示例 | |------|------|------| | `rabbitmqctl status` | **查看节点状态**（最常用） | `rabbitmqctl status` | | `rabbitmqctl cluster_status` | **查看集群状态** | `rabbitmqctl cluster_status` | | `rabbitmqctl stop` | 停止 RabbitMQ 应用（保持 Erlang 运行） | `rabbitmqctl stop` | | `rabbitmqctl stop_app` | 停止 RabbitMQ 应用 | `rabbitmqctl stop_app` | | `rabbitmqctl start_app` | 启动 RabbitMQ 应用 | `rabbitmqctl start_app` | | `rabbitmqctl reset` | **重置节点**（清除所有数据） | `rabbitmqctl reset` | | `rabbitmqctl force_reset` | 强制重置节点（当正常重置失败时） | `rabbitmqctl force_reset` | | `rabbitmqctl forget_cluster_node <node_name>` | 从集群中移除节点 | `rabbitmqctl forget_cluster_node rabbit@node2` | 

 ### 二、用户管理 

 | 命令 | 说明 | 示例 | |------|------|------| | `rabbitmqctl list_users` | **列出所有用户** | `rabbitmqctl list_users` | | `rabbitmqctl add_user <username> <password>` | **添加用户** | `rabbitmqctl add_user admin password123` | | `rabbitmqctl delete_user <username>` | **删除用户** | `rabbitmqctl delete_user testuser` | | `rabbitmqctl change_password <username> <newpassword>` | **修改用户密码** | `rabbitmqctl change_password admin newpass123` | | `rabbitmqctl clear_password <username>` | 清除用户密码（使其无法密码登录） | `rabbitmqctl clear_password testuser` | | `rabbitmqctl set_user_tags <username> <tag> [...]` | **设置用户角色** | `rabbitmqctl set_user_tags admin administrator` | 

 **常用角色标签：** - `administrator`：超级管理员 - `monitoring`：监控权限 - `policymaker`：策略管理权限 - `management`：管理界面访问权限 - `none`：无特殊权限 

 ### 三、虚拟主机（vhost）管理 

 | 命令 | 说明 | 示例 | |------|------|------| | `rabbitmqctl list_vhosts` | **列出所有虚拟主机** | `rabbitmqctl list_vhosts` | | `rabbitmqctl add_vhost <vhost_name>` | **添加虚拟主机** | `rabbitmqctl add_vhost /my_vhost` | | `rabbitmqctl delete_vhost <vhost_name>` | **删除虚拟主机** | `rabbitmqctl delete_vhost /my_vhost` | | `rabbitmqctl list_permissions [-p <vhost>]` | 列出权限 | `rabbitmqctl list_permissions -p /` | | `rabbitmqctl set_permissions [-p <vhost>] <user> <conf> <write> <read>` | **设置用户权限** | `rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"` | | `rabbitmqctl clear_permissions [-p <vhost>] <user>` | 清除用户权限 | `rabbitmqctl clear_permissions -p / testuser` | 

 ### 四、队列与消息管理 

 | 命令 | 说明 | 示例 | |------|------|------| | `rabbitmqctl list_queues [-p <vhost>] [<queueinfoitem> ...]` | **列出队列** | `rabbitmqctl list_queues name messages messages_ready` | | `rabbitmqctl list_exchanges [-p <vhost>]` | **列出交换机** | `rabbitmqctl list_exchanges` | | `rabbitmqctl list_bindings [-p <vhost>]` | **列出绑定关系** | `rabbitmqctl list_bindings` | | `rabbitmqctl list_connections` | **列出客户端连接** | `rabbitmqctl list_connections` | | `rabbitmqctl list_channels` | **列出通道** | `rabbitmqctl list_channels` | | `rabbitmqctl list_consumers [-p <vhost>]` | 列出消费者 | `rabbitmqctl list_consumers` | | `rabbitmqctl purge_queue [-p <vhost>] <queue>` | **清空队列中的消息** | `rabbitmqctl purge_queue my_queue` | | `rabbitmqctl delete_queue [-p <vhost>] <queue>` | 删除队列 | `rabbitmqctl delete_queue my_queue` | 

 ### 五、策略管理 

 | 命令 | 说明 | 示例 | |------|------|------| | `rabbitmqctl list_policies [-p <vhost>]` | **列出所有策略** | `rabbitmqctl list_policies` | | `rabbitmqctl set_policy [-p <vhost>] [--priority <priority>] [--apply-to <apply-to>] <name> <pattern> <definition>` | **设置策略** | `rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}'` | | `rabbitmqctl clear_policy [-p <vhost>] <name>` | 清除策略 | `rabbitmqctl clear_policy ha-all` | 

 ### 六、监控与诊断 

 | 命令 | 说明 | 示例 | |------|------|------| | `rabbitmqctl environment` | 查看环境变量配置 | `rabbitmqctl environment` | | `rabbitmqctl report` | **生成详细报告**（用于故障诊断） | `rabbitmqctl report > report.txt` | | `rabbitmqctl eval '<expression>'` | 执行 Erlang 表达式 | `rabbitmqctl eval 'node().'` | | `rabbitmqctl close_connection <connectionpid> <explanation>` | 关闭指定连接 | `rabbitmqctl close_connection "<rabbit@node.1.1.1.1>" "maintenance"` | 

 ### 七、插件管理 

 | 命令 | 说明 | 示例 | |------|------|------| | `rabbitmq-plugins list` | **列出所有插件** | `rabbitmq-plugins list` | | `rabbitmq-plugins enable <plugin> [...]` | **启用插件** | `rabbitmq-plugins enable rabbitmq_management` | | `rabbitmq-plugins disable <plugin> [...]` | **禁用插件** | `rabbitmq-plugins disable rabbitmq_management` | 

 ### 🎯 日常运维场景命令组合 

 **1. 健康检查：** ```bash rabbitmqctl status rabbitmqctl list_queues name messages messages_ready messages_unacknowledged rabbitmqctl list_connections ``` 

 **2. 排查消息堆积：** ```bash # 查看所有队列的消息数量 rabbitmqctl list_queues name messages messages_ready messages_unacknowledged consumers 

 # 查看具体队列的消费者情况 rabbitmqctl list_consumers | grep my_queue ``` 

 **3. 创建管理用户：** ```bash rabbitmqctl add_user admin strongpassword rabbitmqctl set_user_tags admin administrator rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" ``` 

 **4. 紧急清空队列：** ```bash # 先列出队列确认名称 rabbitmqctl list_queues name messages 

 # 清空指定队列 rabbitmqctl purge_queue my_queue ``` 

 **5. 集群状态检查：** ```bash rabbitmqctl cluster_status rabbitmqctl list_queues name messages cluster_node ``` 

 ### ⚠️ 注意事项 

 1. **权限要求**：大多数命令需要管理员权限 2. **Erlang Cookie**：集群管理需要确保各节点有相同的 Erlang cookie 3. **生产环境谨慎操作**：`reset`、`purge_queue`、`delete_queue` 等命令会丢失数据 4. **监控建议**：定期监控内存、磁盘空间和队列积压情况 

 这些命令涵盖了 RabbitMQ 日常运维的绝大多数场景，建议根据实际需求灵活组合使用。