1、管理插件
通过浏览器UI、命令行管理工具以及rabbitmqadmin,RabbitMQ的管理插件提供了基于HTTP API的方式来管理和监控服务。主要功能包括:
- 定义、罗列和删除Exchange、队列、绑定(bingdings)、用户、虚拟主机(virtual hosts)和权限。
- 监控队列长度、channel中和全局的消息速率、每个连接的数据速率、等。
- 发送和接收消息。
- 监控Erlang的进程、文件信息、内存使用情况。
- 通过JSON将对象定义导入/导出。
- 强制关闭连接、清空队列。
管理插件包含在RabbitMQ的发布包中,使用rabbitmq-plugins命令来开启它(会直接启动):
rabbitmq-plugins enable rabbitmq_management |
- Web UI的地址:http://server-name:15672/,如:http://localhost:15672/。
- HTTP API和它的文档说明地址:http://server-name:15672/api/,如:http://localhost:15672/api/。
- 从http://server-name:15672/cli/地址下载rabbitmqadmin工具。
注意:在RabbitMQ 3.0之前的版本,这个端口号为:55672。
管理界面的后台数据交互是基于HTTP API的。
1.1、权限控制
用户可以赋予Rabbit支持的标签(tag),主要有四种标签:management、policymaker、monitoring、administrator。以下是它们的区别:
标签 | 权限描述 |
---|---|
(None) | 无任何访问权限。 |
management | 可以做任何经由AMQP协议的操作:
|
policymaker | 包含”management”的权限,并增加:
|
monitoring | 包含”management”的权限,并增加:
|
administrator | 包含所有”policymaker” 和 “monitoring”权限,并增加:
|
所有的用户都只能同时列出一个虚拟主机下的对象。
如果由于没有用户,或只有非管理员用户而无法登录,可以使用rabbitmqctl add_user命令来增加一个非管理员用户,再使用rabbitmqctl set_user_tags给增加的用户指定为管理员用户。
1.2、配置相关
在RabbitMQ的主配置文件rabbitmq.config中,有一些选项会影响到管理插件。
1.2.1、在启动时加载定义对象
管理界面可以将所有的Broker对象(队列、Exchange、bindings、用户、虚拟主机、权限控制、参数)以JSON形式导出,在某些情况下,可能需要在启动后就包含所有对象的定义。
使用load_definitions参数可以设置启动时包含先前导出的JSON文件中的所有对象定义。
注意,使用这个参数将会覆盖Broker中相同的对象,但是是不会删除已经存在的不同对象。但是如果要完全重置Broker,使用这个选项将会阻止默认用户、虚拟主机、权限的创建。
1.2.2、消息速率
管理插件可以显示全局的、队列的、channel的、Exchange的、虚拟主机的消息速率。这是最基本的。
它也可以展示队列、channel、Exchange等的各种组合的消息速率,为了节约内存、CPU,该功能默认是关闭的。
消息速率的显示模式是通过参数rates_mode控制的,可选值:basic(默认)、detailed、none。
1.2.3、统计刷新间隔
默认管理插件的统计刷新间隔为5000ms,它可由参数collect_statistics_interval控制,单位为ms,重启生效。
1.2.4、HTTP请求日志配置
创建访问HTTP API的日志,使用http_log_dir参数来设置,注意它仅会记录HTTP API的日志,界面的静态文件的访问不会被记录,重启生效。
1.2.5、配置示例
[ |
{rabbit, [ {tcp_listeners, [5672]}, |
{collect_statistics_interval, 10000} ] }, |
{rabbitmq_management, [ {http_log_dir, "/tmp/rabbit-mgmt"}, |
{message_rates, basic}] } |
] |
将统计刷新间隔设置为10000ms,HTTP请求日志目录为/tmp/rabbit-mgmt。
修改Web UI的端口号:
{rabbitmq_management, [{listener, [{port, 12345}]}]} |
支持HTTPS:
[{rabbitmq_management, |
[{listener, [{port, 15671}, |
{ssl, true}, |
{ssl_opts, [{cacertfile, "/path/to/cacert.pem"}, |
{certfile, "/path/to/cert.pem"}, |
{keyfile, "/path/to/key.pem"}]} |
]} |
]} |
] |
1.3、集群相关
管理插件是支持集群的。可以在集群中的一个或者多个节点上开启它,就可以查看整个集群的信息。
如果要部署不需要全量开启管理插件的集群节点,但至少也应该在每个节点上开启rabbitmq-management-agent插件。