Skip to main content

运维工作中最常用的 `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 日常运维的绝大多数场景,建议根据实际需求灵活组合使用。