RabbitMQ管理(3)——Web端管理

时间:2022-09-22 08:02:17

前面讲述的都是使用rabbitmqctl工具来管理RabbitMQ,有些时候你是否会觉得这种方式是不是不太友好?而且为能够运行rabbitmqctl工具,当前的用户需要拥有访问Erlang cookie的权限,由于服务器可能是以guest或者rabbit用户身份来运行的,因此你需要获得这些文件的访问权限,这样就引申出来一些权限管理的问题。

RabbitMQ的开发团队也考虑到了这种情况,并且开发了RabbitMQ management插件。RabbitMQ management插件同样是由Erlang语言编写,并且和RabbitMQ服务运行在同一个Erlang虚拟机中。

RabbitMQ management插件可以提供Web管理界面用来管理如前面所述的虚拟主机、用户等,也可以用来管理队列、交换器、绑定关系、策略、参数等,还可以用来监控RabbitMQ服务的状态及一些数据统计类信息,可谓是功能强大,基本上能够涵盖所有RabbitMQ管理的功能。

在使用Web管理界面之前需要先启用RabbitMQ management插件。RabbitMQ提供了很多的插件,默认存放在$RABBITMQ_HOME/plugins路径中,如下所示:

[root@node1 plugins]# ls -al
total 3760
-rw-r--r-- 1 root root 270985 Oct 25 19:45 amqp_client-3.6.10.ez
-rw-r--r-- 1 root root 225671 Oct 25 19:45 cowboy-1.0.4.ez
-rw-r--r-- 1 root root 125492 Oct 25 19:45 cowlib-1.0.2.ez
-rw-r--r-- 1 root root 841106 Oct 25 19:45 rabbit_common-3.6.10.ez
-rw-r--r-- 1 root root 211224 Oct 25 19:45 rabbitmq_amqp1_0-3.6.10.ez
-rw-r--r-- 1 root root 34374 Oct 25 19:45 rabbitmq_auth_backend_ldap-3.6.10.ez
-rw-r--r-- 1 root root 13065 Oct 25 19:45 rabbitmq_auth_mechanism_ssl-3.6.10.ez
-rw-r--r-- 1 root root 14641 Oct 25 19:45 rabbitmq_consistent_hash_exchange-3.6.10.ez
-rw-r--r-- 1 root root 11436 Oct 25 19:45 rabbitmq_event_exchange-3.6.10.ez
-rw-r--r-- 1 root root 162570 Oct 25 19:45 rabbitmq_federation-3.6.10.ez
-rw-r--r-- 1 root root 13796 Oct 25 19:45 rabbitmq_federation_management-3.6.10.ez
-rw-r--r-- 1 root root 22414 Oct 25 19:45 rabbitmq_jms_topic_exchange-3.6.10.ez
-rw-r--r-- 1 root root 744360 Oct 25 19:45 rabbitmq_management-3.6.10.ez
-rw-r--r-- 1 root root 149205 Oct 25 19:45 rabbitmq_management_agent-3.6.10.ez
-rw-r--r-- 1 root root 41421 Oct 25 19:45 rabbitmq_management_visualiser-3.6.10.ez
-rw-r--r-- 1 root root 105776 Oct 25 19:45 rabbitmq_mqtt-3.6.10.ez
-rw-r--r-- 1 root root 14640 Oct 25 19:45 rabbitmq_recent_history_exchange-3.6.10.ez
-rw-r--r-- 1 root root 34012 Oct 25 19:45 rabbitmq_sharding-3.6.10.ez
-rw-r--r-- 1 root root 80928 Oct 25 19:45 rabbitmq_shovel-3.6.10.ez
-rw-r--r-- 1 root root 18951 Oct 25 19:45 rabbitmq_shovel_management-3.6.10.ez
-rw-r--r-- 1 root root 109686 Oct 25 19:45 rabbitmq_stomp-3.6.10.ez
-rw-r--r-- 1 root root 51694 Oct 25 19:45 rabbitmq_top-3.6.10.ez
-rw-r--r-- 1 root root 49713 Oct 25 19:45 rabbitmq_tracing-3.6.10.ez
-rw-r--r-- 1 root root 50890 Oct 25 19:45 rabbitmq_trust_store-3.6.10.ez
-rw-r--r-- 1 root root 40220 Oct 25 19:45 rabbitmq_web_dispatch-3.6.10.ez
-rw-r--r-- 1 root root 24659 Oct 25 19:45 rabbitmq_web_mqtt-3.6.10.ez
-rw-r--r-- 1 root root 66233 Oct 25 19:45 rabbitmq_web_mqtt_examples-3.6.10.ez
-rw-r--r-- 1 root root 37637 Oct 25 19:45 rabbitmq_web_stomp-3.6.10.ez
-rw-r--r-- 1 root root 52177 Oct 25 19:45 rabbitmq_web_stomp_examples-3.6.10.ez
-rw-r--r-- 1 root root 57792 Oct 25 19:45 ranch-1.3.0.ez
-rw-r--r-- 1 root root 59 Oct 25 19:45 README
-rw-r--r-- 1 root root 100807 Oct 25 19:45 sockjs-0.3.4.ez

其中以.ez扩展名称结尾的文件就是RabbitMQ的插件,上面文件中的rabbitmq_management-3.6.10.ez就是指RabbitMQ management插件。启动插件的命令不是使用rabbitmqctl工具,而是使用rabbitmq-plugins工具,其语法格式为:rabbitmq-plugins [-n node] {command} [command options…]。启动插件是使用rabbitmq-plugins enable [plugin-name],关闭插件的命令是rabbitmq-plugins disable [plugin-name]。

执行命令rabbitmq-plugins enable rabbitmq_management命令来开启RabbitMQ managmenet插件:

[root@node1 ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
amqp_client
cowlib
cowboy
rabbitmq_web_dispatch
rabbitmq_management_agent
rabbitmq_management
Applying plugin configuration to rabbit@node1... started 6 plugins.

可以通过rabbitmq-plugins list命令来查看当前的插件使用情况,如下所示。其中标记为[E*]的为显示启动,而[e*]为隐式启动,如显示启动rabbitmq_management插件会同时隐式启动amqp_client、cowboy、cowlib、rabbitmq_management_agent、rabbitmq_web_dispatch等另外5个插件。

[root@node1 ~]# rabbitmq-plugins list
Configured: E = explicitly enabled; e = implicitly enabled
| Status: * = running on rabbit@node1
|/
[e*] amqp_client 3.6.10
[e*] cowboy 1.0.4
[e*] cowlib 1.0.2
[ ] rabbitmq_amqp1_0 3.6.10
[ ] rabbitmq_auth_backend_ldap 3.6.10
[ ] rabbitmq_auth_mechanism_ssl 3.6.10
[ ] rabbitmq_consistent_hash_exchange 3.6.10
[ ] rabbitmq_event_exchange 3.6.10
[ ] rabbitmq_federation 3.6.10
[ ] rabbitmq_federation_management 3.6.10
[ ] rabbitmq_jms_topic_exchange 3.6.10
[E*] rabbitmq_management 3.6.10
[e*] rabbitmq_management_agent 3.6.10
[ ] rabbitmq_management_visualiser 3.6.10
[ ] rabbitmq_mqtt 3.6.10
[ ] rabbitmq_recent_history_exchange 3.6.10
[ ] rabbitmq_sharding 3.6.10
[ ] rabbitmq_shovel 3.6.10
[ ] rabbitmq_shovel_management 3.6.10
[ ] rabbitmq_stomp 3.6.10
[ ] rabbitmq_top 3.6.10
[ ] rabbitmq_tracing 3.6.10
[ ] rabbitmq_trust_store 3.6.10
[e*] rabbitmq_web_dispatch 3.6.10
[ ] rabbitmq_web_mqtt 3.6.10
[ ] rabbitmq_web_mqtt_examples 3.6.10
[ ] rabbitmq_web_stomp 3.6.10
[ ] rabbitmq_web_stomp_examples 3.6.10
[ ] sockjs 0.3.4

开启management插件之后还需要重启RabbitMQ服务才能使其正式生效。之后你就可以通过浏览器访问http://localhost:15672/,这样会出现一个认证登录的界面,可以通过默认的guest/guest的用户名和密码来登录。如果访问的ip地址不是本地地址,假如你在192.168.0.2的主机*问http://192.168.0.3:15672的Web管理页面,使用默认的guest账户是访问不了的。在之前比较古老的版本中可以访问,但是出于安全性方面的考虑,在最近的一些版本中需要你使用一个具有非none的用户角色的非guest账户的来访问Web管理页面。

顺利登录之后,可以看到Web管理的主界面如下图所示。

RabbitMQ管理(3)——Web端管理

在上一篇 RabbitMQ管理(2)——用户管理中介绍了如何新增、删除、查看用户等管理功能,那么通过Web管理界面同样可以做到,具体如下图所示:
RabbitMQ管理(3)——Web端管理

在上图中可以看到当前的用户为guest和root,都被赋予了administator的权限,在页面的下方可以添加用户。点击任意用户可以进入相关的详细页面如下图所示所示。在此页面中可以为用户设置权限和清除权限,也可以删除或者更新用户,更新用户是指更新用户的密码和角色。
RabbitMQ管理(3)——Web端管理

RabbitMQ管理(1)——多租户与权限中提及了关于多租户的概念以及相应的管理操作,同样如下图所示,在此页面中可以添加相应的虚拟主机。点击列表中的虚拟主机也可以进入相对应的虚拟主机的详细页面,在此详细页面中可以查看队列、消息的详细统计信息,也可以对用户和权限进行管理操作,还可以删除当前的虚拟主机。
RabbitMQ管理(3)——Web端管理

对于Web管理页面的其他功能,比如创建和删除队列、交换器、绑定关系等操作会在后面的介绍中提及,当然还少不了对于策略的操作。

最后补充一下与开启management插件对应的关闭management插件的命令是:rabbitmq-plugins disable rabbitmq_management,示例参考如下:

[root@node1 ~]# rabbitmq-plugins disable rabbitmq_management
The following plugins have been disabled:
amqp_client
cowlib
cowboy
rabbitmq_web_dispatch
rabbitmq_management_agent
rabbitmq_management
Applying plugin configuration to rabbit@node1... stopped 6 plugins.

欢迎支持笔者新书:《RabbitMQ实战指南》以及关注微信公众号:Kafka技术专栏。
RabbitMQ管理(3)——Web端管理