# 运维工作中最常用的 `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 &lt;node\_name&gt;` | 从集群中移除节点 | `rabbitmqctl forget\_cluster\_node rabbit@node2` |

\### 二、用户管理

| 命令 | 说明 | 示例 |  
|------|------|------|  
| `rabbitmqctl list\_users` | \*\*列出所有用户\*\* | `rabbitmqctl list\_users` |  
| `rabbitmqctl add\_user &lt;username&gt; &lt;password&gt;` | \*\*添加用户\*\* | `rabbitmqctl add\_user admin password123` |  
| `rabbitmqctl delete\_user &lt;username&gt;` | \*\*删除用户\*\* | `rabbitmqctl delete\_user testuser` |  
| `rabbitmqctl change\_password &lt;username&gt; &lt;newpassword&gt;` | \*\*修改用户密码\*\* | `rabbitmqctl change\_password admin newpass123` |  
| `rabbitmqctl clear\_password &lt;username&gt;` | 清除用户密码（使其无法密码登录） | `rabbitmqctl clear\_password testuser` |  
| `rabbitmqctl set\_user\_tags &lt;username&gt; &lt;tag&gt; \[...\]` | \*\*设置用户角色\*\* | `rabbitmqctl set\_user\_tags admin administrator` |

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

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

| 命令 | 说明 | 示例 |  
|------|------|------|  
| `rabbitmqctl list\_vhosts` | \*\*列出所有虚拟主机\*\* | `rabbitmqctl list\_vhosts` |  
| `rabbitmqctl add\_vhost &lt;vhost\_name&gt;` | \*\*添加虚拟主机\*\* | `rabbitmqctl add\_vhost /my\_vhost` |  
| `rabbitmqctl delete\_vhost &lt;vhost\_name&gt;` | \*\*删除虚拟主机\*\* | `rabbitmqctl delete\_vhost /my\_vhost` |  
| `rabbitmqctl list\_permissions \[-p &lt;vhost&gt;\]` | 列出权限 | `rabbitmqctl list\_permissions -p /` |  
| `rabbitmqctl set\_permissions \[-p &lt;vhost&gt;\] &lt;user&gt; &lt;conf&gt; &lt;write&gt; &lt;read&gt;` | \*\*设置用户权限\*\* | `rabbitmqctl set\_permissions -p / admin ".\*" ".\*" ".\*"` |  
| `rabbitmqctl clear\_permissions \[-p &lt;vhost&gt;\] &lt;user&gt;` | 清除用户权限 | `rabbitmqctl clear\_permissions -p / testuser` |

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

| 命令 | 说明 | 示例 |  
|------|------|------|  
| `rabbitmqctl list\_queues \[-p &lt;vhost&gt;\] \[&lt;queueinfoitem&gt; ...\]` | \*\*列出队列\*\* | `rabbitmqctl list\_queues name messages messages\_ready` |  
| `rabbitmqctl list\_exchanges \[-p &lt;vhost&gt;\]` | \*\*列出交换机\*\* | `rabbitmqctl list\_exchanges` |  
| `rabbitmqctl list\_bindings \[-p &lt;vhost&gt;\]` | \*\*列出绑定关系\*\* | `rabbitmqctl list\_bindings` |  
| `rabbitmqctl list\_connections` | \*\*列出客户端连接\*\* | `rabbitmqctl list\_connections` |  
| `rabbitmqctl list\_channels` | \*\*列出通道\*\* | `rabbitmqctl list\_channels` |  
| `rabbitmqctl list\_consumers \[-p &lt;vhost&gt;\]` | 列出消费者 | `rabbitmqctl list\_consumers` |  
| `rabbitmqctl purge\_queue \[-p &lt;vhost&gt;\] &lt;queue&gt;` | \*\*清空队列中的消息\*\* | `rabbitmqctl purge\_queue my\_queue` |  
| `rabbitmqctl delete\_queue \[-p &lt;vhost&gt;\] &lt;queue&gt;` | 删除队列 | `rabbitmqctl delete\_queue my\_queue` |

\### 五、策略管理

| 命令 | 说明 | 示例 |  
|------|------|------|  
| `rabbitmqctl list\_policies \[-p &lt;vhost&gt;\]` | \*\*列出所有策略\*\* | `rabbitmqctl list\_policies` |  
| `rabbitmqctl set\_policy \[-p &lt;vhost&gt;\] \[--priority &lt;priority&gt;\] \[--apply-to &lt;apply-to&gt;\] &lt;name&gt; &lt;pattern&gt; &lt;definition&gt;` | \*\*设置策略\*\* | `rabbitmqctl set\_policy ha-all "^ha\\." '{"ha-mode":"all"}'` |  
| `rabbitmqctl clear\_policy \[-p &lt;vhost&gt;\] &lt;name&gt;` | 清除策略 | `rabbitmqctl clear\_policy ha-all` |

\### 六、监控与诊断

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

\### 七、插件管理

| 命令 | 说明 | 示例 |  
|------|------|------|  
| `rabbitmq-plugins list` | \*\*列出所有插件\*\* | `rabbitmq-plugins list` |  
| `rabbitmq-plugins enable &lt;plugin&gt; \[...\]` | \*\*启用插件\*\* | `rabbitmq-plugins enable rabbitmq\_management` |  
| `rabbitmq-plugins disable &lt;plugin&gt; \[...\]` | \*\*禁用插件\*\* | `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 日常运维的绝大多数场景，建议根据实际需求灵活组合使用。