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

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

前面讲述的都是使用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管理的主界面如下图所示。

图 5‑1

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

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

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

对于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.
相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
4月前
|
人工智能 算法 搜索推荐
题库管理|考试管理|基于Web的大学生题库管理系统的设计与实现
题库管理|考试管理|基于Web的大学生题库管理系统的设计与实现
127 0
|
2月前
|
消息中间件 监控 物联网
MQTT的奇妙之旅:探索RabbitMQ Web MQTT插件的威力【RabbitMQ 十一】
MQTT的奇妙之旅:探索RabbitMQ Web MQTT插件的威力【RabbitMQ 十一】
77 0
|
2月前
|
消息中间件 监控 前端开发
RabbitMQ插件详解:rabbitmq_web_stomp【RabbitMQ 六】
RabbitMQ插件详解:rabbitmq_web_stomp【RabbitMQ 六】
87 0
|
3月前
|
消息中间件 Docker 容器
Docker中的RabbitMQ已经启动运行,但是管理界面打不开
Docker中的RabbitMQ已经启动运行,但是管理界面打不开
|
5天前
|
SQL 安全 Go
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
在Python Web开发中,确保应用安全至关重要,主要防范SQL注入、XSS和CSRF攻击。措施包括:使用参数化查询或ORM防止SQL注入;过滤与转义用户输入抵御XSS;添加CSRF令牌抵挡CSRF;启用HTTPS保障数据传输安全;实现强身份验证和授权系统;智能处理错误信息;定期更新及审计以修复漏洞;严格输入验证;并培训开发者提升安全意识。持续关注和改进是保证安全的关键。
11 0
|
8天前
|
消息中间件 存储 数据库
RabbitMQ入门指南(二):架构和管理控制台的使用
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了RabbitMQ架构和管理控制台的使用等内容。
RabbitMQ入门指南(二):架构和管理控制台的使用
|
1月前
|
NoSQL 关系型数据库 Linux
Star 1.6k!当Web遇上Linux和数据库!一站式管理平台的开源之旅!
Star 1.6k!当Web遇上Linux和数据库!一站式管理平台的开源之旅!
|
1月前
|
SQL 安全 测试技术
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
15 0
|
5月前
|
分布式计算 NoSQL 数据可视化
图数据库HugeGraph:HugeGraph-Hubble基于Web的可视化图管理初体验
图数据库HugeGraph:HugeGraph-Hubble基于Web的可视化图管理初体验
100 0
|
1月前
|
消息中间件 存储 NoSQL
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统

热门文章

最新文章