rabbitmq 管理
This commit is contained in:
parent
2063920be4
commit
064a076ef5
@ -1,35 +1,47 @@
|
|||||||
# RabbitMQ 管理
|
# RabbitMQ 管理
|
||||||
|
|
||||||
rabbitmqctl 标准语法([] 表示可选参数,{} 表示必选参数):
|
<nav>
|
||||||
|
<a href="#一虚拟主机与权限">一、虚拟主机与权限</a><br/>
|
||||||
|
<a href="#11-虚拟主机">1.1 虚拟主机</a><br/>
|
||||||
|
<a href="#12-权限管理">1.2 权限管理</a><br/>
|
||||||
|
<a href="#二用户管理">二、用户管理</a><br/>
|
||||||
|
<a href="#三Web端管理">三、Web端管理</a><br/>
|
||||||
|
<a href="#四应用与集群管理">四、应用与集群管理</a><br/>
|
||||||
|
<a href="#41-应用管理">4.1 应用管理</a><br/>
|
||||||
|
<a href="#42-集群管理">4.2 集群管理</a><br/>
|
||||||
|
<a href="#五服务端状态">五、服务端状态</a><br/>
|
||||||
|
<a href="#51-队列状态">5.1 队列状态</a><br/>
|
||||||
|
<a href="#52-交换机状态">5.2 交换机状态</a><br/>
|
||||||
|
<a href="#53-绑定状态">5.3 绑定状态</a><br/>
|
||||||
|
<a href="#54-TCPIP-连接状态">5.4 TCP|IP 连接状态</a><br/>
|
||||||
|
<a href="#55-信道状态">5.5 信道状态</a><br/>
|
||||||
|
<a href="#56-消费者状态">5.6 消费者状态</a><br/>
|
||||||
|
<a href="#57-Broker的状态">5.7 Broker的状态</a><br/>
|
||||||
|
<a href="#58-其他状态">5.8 其他状态</a><br/>
|
||||||
|
</nav>
|
||||||
|
|
||||||
rabbitmqctl [-n node] \[-t timeout] [-q] \{command} [command options...]
|
## 一、虚拟主机与权限
|
||||||
|
|
||||||
- **[-n node]**:指定节点;
|
本篇文章主要记录 RabbitMQ 的常用管理命令,用作备忘查询。内容均摘自朱忠华《 RabbitMQ实战指南》原书 第 5 章 ——**RabbitMQ 管理**。
|
||||||
- **[-t timeout]**:操作超时时间,单位秒;
|
|
||||||
- **[-q]** :quiet 屏蔽一些消息的输出,默认不开启。
|
|
||||||
|
|
||||||
### 5.1 虚拟主机与权限
|
### 1.1 虚拟主机
|
||||||
|
|
||||||
**虚拟主机:**
|
|
||||||
|
|
||||||
| 作用 | 命令 | 示例 |
|
| 作用 | 命令 | 示例 |
|
||||||
| ------------ | ------------------------------------------------------------ | ------------------------------------ |
|
| ------------ | ------------------------------------------------------------ | --------------------------------------------------- |
|
||||||
| 新建虚拟主机 | rabbitmqctl add_vhost {vhost} | rabbitmqctl add_vhost vhost1 |
|
| 新建虚拟主机 | rabbitmqctl add_vhost {vhost name} | rabbitmqctl add_vhost myvhost |
|
||||||
| 罗列虚拟主机 | rabbitmqctl list_vhosts [vhostinfoitem...]<br/>name:表示vhost 名称<br/>tracing:表示是否启用了RabbitMQ的trace功能 | abbitmqctl list_vhosts name tracing |
|
| 罗列虚拟主机 | rabbitmqctl list_vhosts [可选参数]<br/>支持以下可选参数<br/>cluster_state:显示虚拟主机内的集群服务<br/>name:显示虚拟主机的名称<br/>tracing:表示是否启用了RabbitMQ的trace功能 | rabbitmqctl list_vhosts cluster_state name tracing |
|
||||||
| 删除虚拟主机 | rabbitmqctl delete_vhost {vhost} | rabbitmqctl delete_vhost vhost1 |
|
| 删除虚拟主机 | rabbitmqctl delete_vhost {vhost name} | rabbitmqctl delete_vhost myvhost |
|
||||||
|
|
||||||
**权限管理**:
|
### 1.2 权限管理
|
||||||
|
|
||||||
当创建一个用户时,用户通常会被指派给至少一个vhost,并且只能访问被指派的vhost内的队列、交换器和绑定关系等。因此,RabbitMQ中的授予权限是指在vhost级别对用户而言的权限授予。
|
|
||||||
|
|
||||||
| 作用 | 命令 | 示例 |
|
| 作用 | 命令 | 示例 |
|
||||||
| ------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
| ------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||||
| 权限授予 | rabbitmqctl set_permissions [-p vhost] {user} {config} {write} {read}<br/>vhost : 授予用户访问权限的 vhost 名称,可以设置为默认值,即 vhost 为 “/”<br/>user: 可以访问指定 vhost 的用户名。<br>conf: 一个用于匹配用户在哪些资源上拥有可配置权限的正则表达式。<br/>write: 一个用于匹配用户在哪些资源上拥有可写权限的正则表达式。<br/>read : 一个用于匹配用户在哪些资源上拥有可读权限的正则表达式 。<br/>可配置指的是队列和交换器的创建及删除之类的操作;可写指的是发布消息;可读指与消息有关的操作,包括读取消息及清空整个队列等。 | 赋予所有权限:<br>rabbitmqctl set_permissions -p vhost1 root ".\*" ".\*" ".\*"<br>在以“queue”开头的资源上具备可配置权限:<br>rabbitmqctl set_permissions -p vhost1 root "^queue.\*" ".\*" ".\*" |
|
| 权限授予 | rabbitmqctl set_permissions [-p vhost] {user} {config} {write} {read}<br/>vhost : 虚拟主机名<br/>user: 用户名<br>conf: 定义用户在哪些资源上拥有可配置权限的正则表达式。<br/>write: 定义用户在哪些资源上拥有可写权限的正则表达式。<br/>read : 定义用户在哪些资源上拥有可读权限的正则表达式 。<br/>可配置指的是队列和交换器的创建及删除之类的操作;可写指的是发布消息;可读指与消息有关的操作,包括读取消息及清空整个队列等。 | 赋予root用户在vhost1上所有权限:<br>rabbitmqctl set_permissions -p vhost1 root ".\*" ".\*" ".\*"<br>在以“queue”开头的资源上具备可配置权限:<br>rabbitmqctl set_permissions -p vhost1 root "^queue.\*" ".\*" ".\*" |
|
||||||
| 清除权限 | rabbitmqctl clear_permissions [-p vhost] {username} | rabbitmqctl clear_permissions -p vhost1 root |
|
| 清除权限 | rabbitmqctl clear_permissions [-p vhost] {username} | rabbitmqctl clear_permissions -p vhost1 root |
|
||||||
| 显示虚拟机上的权限 | rabbitmqctl list_permissions [-p vhost] | rabbitmqctl list_permissions -p vhost1 |
|
| 显示虚拟主机上的所有权限 | rabbitmqctl list_permissions [-p vhost] | rabbitmqctl list_permissions -p vhost1 |
|
||||||
| 显示用户权限 | rabbitmqctl list_user_permissions {username} | rabbitmqctl list_user_permissions root |
|
| 显示用户权限 | rabbitmqctl list_user_permissions {username} | rabbitmqctl list_user_permissions root |
|
||||||
|
|
||||||
### 5.2 用户管理
|
## 二、用户管理
|
||||||
|
|
||||||
| 作用 | 命令 |
|
| 作用 | 命令 |
|
||||||
| ------------------ | ------------------------------------------------------------ |
|
| ------------------ | ------------------------------------------------------------ |
|
||||||
@ -38,7 +50,7 @@ rabbitmqctl [-n node] \[-t timeout] [-q] \{command} [command options...]
|
|||||||
| 验证密码是否正确 | rabbitmqctl authenticate_user {username} {password} |
|
| 验证密码是否正确 | rabbitmqctl authenticate_user {username} {password} |
|
||||||
| 删除用户 | rabbitmqctl delete_user {username} |
|
| 删除用户 | rabbitmqctl delete_user {username} |
|
||||||
| 罗列当前的所有用户 | rabbitmqctl list_users |
|
| 罗列当前的所有用户 | rabbitmqctl list_users |
|
||||||
| 设置用户角色 | rabbitmqctl set_user_tags {username} {tag ...} <br/>设置0个、1个或者多个角色,设置之后任何之前现有的身份都会被删除 |
|
| 设置用户角色 | rabbitmqctl set_user_tags {username} {tag ...} <br/>设置0个、1个或者多个角色,设置之后任何之前拥有身份都会被删除 |
|
||||||
|
|
||||||
用户的角色分为 5 种类型:
|
用户的角色分为 5 种类型:
|
||||||
|
|
||||||
@ -48,9 +60,9 @@ rabbitmqctl [-n node] \[-t timeout] [-q] \{command} [command options...]
|
|||||||
- **monitoring**: 包含 management 的所有权限,并且可以看到所有连接、信道及节点相关的信息。
|
- **monitoring**: 包含 management 的所有权限,并且可以看到所有连接、信道及节点相关的信息。
|
||||||
- **administartor**: 包含 monitoring 的所有权限,井且可以管理用户、 虚拟主机、权限、策略、参数等,是最高权限。
|
- **administartor**: 包含 monitoring 的所有权限,井且可以管理用户、 虚拟主机、权限、策略、参数等,是最高权限。
|
||||||
|
|
||||||
### 5.3 web端管理
|
## 三、Web端管理
|
||||||
|
|
||||||
在使用 Web 管理界面之前需要先启用 RabbitMQ management 插件 。 RabbitMQ 提供了很多的插件,默认存放在 $RABBITMQ_HOME /plugins 目录下 ,插件扩展名为“.ez”。
|
在使用 Web 管理界面之前需要先启用 RabbitMQ 的 management 插件 。 RabbitMQ 提供了很多的插件,默认存放在 $RABBITMQ_HOME/plugins 目录下 ,插件扩展名为“.ez”。
|
||||||
|
|
||||||
| 作用 | 命令 |
|
| 作用 | 命令 |
|
||||||
| -------- | -------------------------------------- |
|
| -------- | -------------------------------------- |
|
||||||
@ -58,9 +70,9 @@ rabbitmqctl [-n node] \[-t timeout] [-q] \{command} [command options...]
|
|||||||
| 关闭插件 | rabbitmq-plugins disable [plugin-name] |
|
| 关闭插件 | rabbitmq-plugins disable [plugin-name] |
|
||||||
| 查看插件 | rabbitmq-plugins list |
|
| 查看插件 | rabbitmq-plugins list |
|
||||||
|
|
||||||
### 5.4 应用与集群管理
|
## 四、应用与集群管理
|
||||||
|
|
||||||
#### 5.4.1 应用管理
|
### 4.1 应用管理
|
||||||
|
|
||||||
| 命令 | 作用 |
|
| 命令 | 作用 |
|
||||||
| -------------------------------- | ------------------------------------------------------------ |
|
| -------------------------------- | ------------------------------------------------------------ |
|
||||||
@ -69,11 +81,11 @@ rabbitmqctl [-n node] \[-t timeout] [-q] \{command} [command options...]
|
|||||||
| rabbitmqctl stop_app | 停止 RabbitMQ 服务应用,但是 Erlang 虚拟机还是处于运行状态。 |
|
| rabbitmqctl stop_app | 停止 RabbitMQ 服务应用,但是 Erlang 虚拟机还是处于运行状态。 |
|
||||||
| rabbitmqctl start_app | 启动RabbitMQ 服务应用 |
|
| rabbitmqctl start_app | 启动RabbitMQ 服务应用 |
|
||||||
| rabbitmqctl wait [pid_file] | 等待 RabbitMQ 应用的启动。它会等到 pid_file 的创建,然后等待 pid_file 中所代表的进程启动。当指定的进程没有启动 RabbitMQ 应用而关闭时将会返回失败。 |
|
| rabbitmqctl wait [pid_file] | 等待 RabbitMQ 应用的启动。它会等到 pid_file 的创建,然后等待 pid_file 中所代表的进程启动。当指定的进程没有启动 RabbitMQ 应用而关闭时将会返回失败。 |
|
||||||
| rabbitmqctl reset | RabbitMQ 节点重置还原到最初状态。包括从原来所在的集群中删除此节点,从管理数据库中删除所有的配置数据,如己配置的用户、 vhost 等,以及删除所有的持久化消息。执行rabbitmqctl reset 命令前必须停止RabbitMQ应用(比如先执行 rabbitmqctlstop_app) 。 |
|
| rabbitmqctl reset | RabbitMQ 节点重置还原到最初状态。包括从原来所在的集群中删除此节点,从管理数据库中删除所有的配置数据,如己配置的用户、 vhost 等,以及删除所有的持久化消息。执行 rabbitmqctl reset 命令前必须停止 RabbitMQ 应用 (如先执行 rabbitmqctlstop_app) 。 |
|
||||||
| rabbitmqctl force_reset | 强制将 RabbitMQ 节点重置还原到最初状态。不同于 rabbitmqctl reset 命令,rabbitmqctl force reset 命令不论当前管理数据库的状态和集群配置是什么,都会无条件地重置节点。它只能在数据库或集群配置己损坏的情况下使用。与 rabbitmqctl reset 命令一样,执行 rabbitmqctl force reset 命令前必须先停止 RabbitMQ 应用。 |
|
| rabbitmqctl force_reset | 强制将 RabbitMQ 节点重置还原到最初状态。不同于 rabbitmqctl reset 命令,rabbitmqctl force reset 命令不论当前管理数据库的状态和集群配置是什么,都会无条件地重置节点。它只能在数据库或集群配置己损坏的情况下使用。与 rabbitmqctl reset 命令一样,执行 rabbitmqctl force reset 命令前必须先停止 RabbitMQ 应用。 |
|
||||||
| rabbitmqctl rotate_logs {suffix} | 指示 RabbitMQ 节点轮换日志文件。 RabbitMQ 节点会将原来的日志文件中的内容追加到"原始名称+后缀"的日志文件中,然后再将新的日志内容记录到新创建的日志中(与原日志文件同名)。当目标文件不存在时,会新创建。如果不指定后缀 suffix. 则日志文件只是重新打开而不会进行轮换。 |
|
| rabbitmqctl rotate_logs {suffix} | 指示 RabbitMQ 节点轮换日志文件。 RabbitMQ 节点会将原来的日志文件中的内容追加到"原始名称+后缀"的日志文件中,然后再将新的日志内容记录到新创建的日志中(与原日志文件同名)。当目标文件不存在时,会新创建。如果不指定后缀 suffix 则日志文件只是重新打开而不会进行轮换。 |
|
||||||
|
|
||||||
#### 5.4.2 集群管理
|
### 4.2 集群管理
|
||||||
|
|
||||||
| 命令 | 作用 |
|
| 命令 | 作用 |
|
||||||
| ------------------------------------------------ | ------------------------------------------------------------ |
|
| ------------------------------------------------ | ------------------------------------------------------------ |
|
||||||
@ -87,13 +99,13 @@ rabbitmqctl [-n node] \[-t timeout] [-q] \{command} [command options...]
|
|||||||
| rabbitmqctl cancel_sync_queue [-p vhost] {queue} | 取消队列 queue 同步镜像的操作。 |
|
| rabbitmqctl cancel_sync_queue [-p vhost] {queue} | 取消队列 queue 同步镜像的操作。 |
|
||||||
| rabbitmqctl set_cluster_name {name} | 设置集群名称。集群名称默认是集群中第一个节点的名称。 |
|
| rabbitmqctl set_cluster_name {name} | 设置集群名称。集群名称默认是集群中第一个节点的名称。 |
|
||||||
|
|
||||||
### 5.5 服务端状态
|
## 五、服务端状态
|
||||||
|
|
||||||
#### 1. 队列状态
|
### 5.1 队列状态
|
||||||
|
|
||||||
**命令: rabbitmqctl list_queues [-p vhost]\[queueinfoitem...]**
|
**命令: rabbitmqctl list_queues [-p vhost]\[queueinfoitem...]**
|
||||||
|
|
||||||
此命令返回队列的详细信息,如果无 [-p vhost] 参数,将显示默认的 vhost 为 " / " 中的队列详情 。 queueinfoitem 参数用于指示哪些队列的信息项会包含在结果集中,**结果集的列顺序将匹配参数的顺序** 。 queueinfoitem 可以是下面列表中的任何值 。
|
此命令返回队列的详细信息,如果无 [-p vhost] 参数,将显示默认的 vhost 为 " / " 中的队列详情 。 queueinfoitem 参数用于指示哪些队列的信息项会包含在结果集中,结果集的列顺序将匹配参数的顺序 。 queueinfoitem 可以是下面列表中的任何值 。
|
||||||
|
|
||||||
- **name**: 队列名称 。
|
- **name**: 队列名称 。
|
||||||
- **durable**: 队列是否持久化 。
|
- **durable**: 队列是否持久化 。
|
||||||
@ -124,13 +136,13 @@ rabbitmqctl [-n node] \[-t timeout] [-q] \{command} [command options...]
|
|||||||
- **memory**: 与队列相关的 Erlang 进程所消耗的内存字节数,包括栈、堆及内部结构 。
|
- **memory**: 与队列相关的 Erlang 进程所消耗的内存字节数,包括栈、堆及内部结构 。
|
||||||
- **slave_pids**: 如果队列是镜像的 ,列出所有 slave 镜像的 pid 。
|
- **slave_pids**: 如果队列是镜像的 ,列出所有 slave 镜像的 pid 。
|
||||||
- **synchronised_slave_pids**: 如果队列是镜像的,列出所有己经同步的 slave 镜像的 pid 。
|
- **synchronised_slave_pids**: 如果队列是镜像的,列出所有己经同步的 slave 镜像的 pid 。
|
||||||
- **state** : 队列状 态。正常情况下是running : 如果队列正常同步数据可能会有"{syncing, MsgCount}" 的状态;如果队列所在的节点掉线了,则队列显示状态为down (此时大多数的 queueinfoitems 也将不可用〉。
|
- **state** : 队列状态。正常情况下是 running : 如果队列正常同步数据可能会有 "{syncing, MsgCount}" 的状态,如果队列所在的节点掉线了,则队列显示状态为down (此时大多数的 queueinfoitems 也将不可用〉。
|
||||||
|
|
||||||
**如果没有指定 queueinfoitems ,那么此命令将显示队列的名称和消息的个数。**
|
**如果没有指定 queueinfoitems ,那么此命令将显示队列的名称和消息的个数。**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### 2. 交换机状态
|
### 5.2 交换机状态
|
||||||
|
|
||||||
**命令:rabbitmqctl list_exchanges [-p vhost]\[exchangeinfoitem...]**
|
**命令:rabbitmqctl list_exchanges [-p vhost]\[exchangeinfoitem...]**
|
||||||
|
|
||||||
@ -146,12 +158,12 @@ rabbitmqctl [-n node] \[-t timeout] [-q] \{command} [command options...]
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### 3. 绑定状态
|
### 5.3 绑定状态
|
||||||
|
|
||||||
**命令:rabbitmqctl list_bindings [-p vhost]\[bingdinfoitem...]**
|
**命令:rabbitmqctl list_bindings [-p vhost]\[bingdinfoitem...]**
|
||||||
|
|
||||||
- **source_name**: 绑定中消息来源的名称。
|
- **source_name**: 绑定中消息来源的名称。
|
||||||
- source_kind: 绑定中消息来源的类别。
|
- **source_kind**: 绑定中消息来源的类别。
|
||||||
- **destination_name**: 绑定中消息目的地的名称。
|
- **destination_name**: 绑定中消息目的地的名称。
|
||||||
- **destination_kind**: 绑定中消息目的地的种类。
|
- **destination_kind**: 绑定中消息目的地的种类。
|
||||||
- **routing_key**: 绑定的路由键。
|
- **routing_key**: 绑定的路由键。
|
||||||
@ -161,7 +173,7 @@ rabbitmqctl [-n node] \[-t timeout] [-q] \{command} [command options...]
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### 4. TCP|IP 连接状态
|
### 5.4 TCP|IP 连接状态
|
||||||
|
|
||||||
**命令: rabbitmqctl list_connections [-p vhost]\[connectioninfoitem...]**
|
**命令: rabbitmqctl list_connections [-p vhost]\[connectioninfoitem...]**
|
||||||
|
|
||||||
@ -198,7 +210,7 @@ rabbitmqctl [-n node] \[-t timeout] [-q] \{command} [command options...]
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### 5. 信道状态
|
### 5.5 信道状态
|
||||||
|
|
||||||
**命令: rabbitmqctl list_channels [-p vhost]\[channelinfoitem...]**
|
**命令: rabbitmqctl list_channels [-p vhost]\[channelinfoitem...]**
|
||||||
|
|
||||||
@ -220,21 +232,21 @@ rabbitmqctl [-n node] \[-t timeout] [-q] \{command} [command options...]
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### 6.消费者状态
|
### 5.6 消费者状态
|
||||||
|
|
||||||
**命令: rabbitmqctl list_consumers [-p vhost]**
|
**命令: rabbitmqctl list_consumers [-p vhost]**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### 7.Brokder的状态
|
### 5.7 Broker的状态
|
||||||
|
|
||||||
**命令: rabbitmqctl status**
|
**命令: rabbitmqctl status**
|
||||||
|
|
||||||
显示 Broker 的状态, 比如当前 Erlang 节点上运行的应用程序、 RabbitMQ/Erlang 的版本信息、 os 的名称 、内存及文件描述符等统计信息。
|
显示 Broker 的状态, 比如当前 Erlang 节点上运行的应用程序、 RabbitMQ/Erlang 的版本信息、OS 的名称 、内存及文件描述符等统计信息。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### 8.其他状态
|
### 5.8 其他状态
|
||||||
|
|
||||||
**rabbitmqctl node_health_check**
|
**rabbitmqctl node_health_check**
|
||||||
对 RabbitMQ 节点进行健康检查 , 确定应用是否正常运行。
|
对 RabbitMQ 节点进行健康检查 , 确定应用是否正常运行。
|
||||||
@ -249,13 +261,5 @@ rabbitmqctl [-n node] \[-t timeout] [-q] \{command} [command options...]
|
|||||||
[root@nodel -]# rabbitmqctl report > report.txt
|
[root@nodel -]# rabbitmqctl report > report.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
**rabbitmqctl eval {expr}**
|
|
||||||
执行任意 Erlang 表达式。相关示例如下(示例命令用于返回 rabbitmqctl 连接的节点名称) :
|
|
||||||
|
|
||||||
```shell
|
|
||||||
[root@nodel - ]# rabbitmqctl eval 'node().'
|
|
||||||
rabbit@nodel
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user