章节索引 :

RabbitMQ 消息监控平台介绍

1. 前言

Hello,大家好。本节会为同学们介绍 RabbitMQ 的消息监控平台,包括 RabbitMQ 消息监控平台的访问方法,以及 RabbitMQ 消息监控平台的组成元素。了解 RabbitMQ 消息监控平台的使用方式,是我们后期对 RabbitMQ 进行监控的不二法则。

本节主要内容:

  • 如何访问 RabbitMQ 消息监控平台;

  • RabbitMQ 消息监控平台组成元素介绍;

2. 如何访问 RabbitMQ 消息监控平台 ?

什么是 RabbitMQ 消息监控平台

RabbitMQ 消息监控平台,即用来监控 RabbitMQ 中所有的消息所处的状态,以及当前 RabbitMQ Server 的状态的一个网络平台,为 RabbitMQ 内嵌的自我监控平台,在安装好了 RabbitMQ 之后就可以通过特定的路径来访问这一消息监控平台。

出于方便考虑,后续我们都将 RabbitMQ 消息监控平台,称为 RabbitMQ 消息管控台。

在 RabbitMQ 消息管控台中,可以对我们应用程序中,所有的消息进行监控,包括消息是否已经被发送、消息是否已经被接收,以及 RabbitMQ Server 中,交换机、频道、消息队列的状态等,经过对这些关键指标进行监控,我们可以很好地掌握我们应用程序中的消息在 RabbitMQ Server 中的状态,以及我们的 RabbitMQ Server 节点工作是否正常等关键性能指标。

如何访问 RabbitMQ 消息监控平台 ?

在介绍如何安装 RabbitMQ 小节内容中,已经为大家介绍了如何来验证我们的 RabbitMQ 是否已经安装成功了,而这一验证手段正是我们访问 RabbitMQ 消息监控平台的方法,这里我们来简单回顾一下。

在将 RabbitMQ 安装成功之后,需要我们启动 RabbitMQ Server 服务,该服务会占用我们的 5672 端口,然后对外暴露 15672 端口,来供我们访问,所以,要想访问 RabbitMQ 消息管控台,我们只需要输入 RabbitMQ Server 所在节点的 ip 地址,以及 15672 端口的组合方式就可以了。以本地为例,访问 RabbitMQ 消息管控台的地址如下:

http://localhost:15672

3. RabbitMQ 消息监控平台组成元素介绍

输入上述访问地址之后,我们会首先看到 RabbitMQ 消息管控台的登录界面,如下图所示:

默认的 RabbitMQ 消息管控台的账号和密码均为 guest ,同时,这个 guest 账号还具有最高的 Administrator 管理权限,可以对 RabbitMQ 中的消息、交换机、频道、消息队列等进行相应的管理。

现在,让我们用 guest 用户登录进去(当然我们也可以用自定义账号来登录),来对 RabbitMQ 消息管控台一探究竟吧。

登录进去后的 RabbitMQ 消息管控台首页,如下图所示:

接下来,我将根据不同的功能模块,把 RabbitMQ 消息管控台分为几个区域,然后依次将不同区域中的主要内容介绍给大家,下面我们来看一下 RabbitMQ 消息管控台的区域图:

3.1 顶部模块

在上述区域图中,我们会看到明显的标有 1 2 3 序号的模块区域,这些就是 RabbitMQ 消息管控台的主要功能模块。在本部分中,我们先来看除了这些主要功能模块之外的地方,也就是 RabbitMQ 消息管控台的顶部模块,如下图所示:

在顶部模块的第一部分,也就是标序号 1 框起来的区域,这是 RabbitMQ 当前状态信息,包括 RabbitMQ 的 logo ,以及 RabbitMQ 的版本、Erlang 语言支持库的版本,由上图可以:当前使用的 RabbitMQ 的版本为 3.8.5 ,当前使用的 Erlang 语言支持库的版本为 23.2.1 。

在顶部模块的第二部分,也就是标序号 2 框起来的区域,这是当前 RabbitMQ 消息管控台的底部配置区域,其中,Refreshed 表示当前 RabbitMQ 消息管控台监控的频率,默认的监控频率为每 5 秒刷新一次消息管控台,当然,我们可以根据实际情况来设置不同的刷新频率,如下图所示:

接着,Virtual host 表示当前被监控的虚拟主机,默认监控全部的虚拟主机,当然,我们也可以选择需要进行监控的虚拟主机,如下图所示:

最后的 Cluster 则表示当前 RabbitMQ Server 所在的节点名称,User 则表示当前登录进 RabbitMQ 消息管控台的用户,当前我是使用的自定义的 steafan 账号来登录的。

在用户名的右侧,是 Log Out 按钮,即登出按钮,当我们点击此按钮之后,我们就会推出 RabbitMQ 消息管控台,来到其登录界面。

3.2 Overview 模块

Overview 模块是 RabbitMQ 消息管控台的总体概览模块,在本模块中,会看到当前 Connection 、Channel 、Queue 的状态,Overview 模块分为六部分,如下图所示:

接下来让我们先来看 Totals 和 Nodes 部分内容:

在 Totals 部分中,是一些监控的曲线,其中,Queued messages 表示消息队列的状态;Currently idle Message rates 表示当前监控频率下,消息的速率,单位为秒;Global counts 则表示当前 RabbitMQ Server 中各组成元素的个数,它们分别是 Connections、 Channels、 Exchanges、 Queues、 Consumers ,默认的 Exchanges 数量为 7 个。

在 Currently idle Message rates 部分,分别设置了 Publish、Publisher Confirm、Unroutable(return)、Unroutable(drop) 这些关键的属性指标,其中 Publish 表示已发送的消息;Publisher Confirm 表示已经发布确认了的消息;Unroutable(return) 表示消息未被接收,且已返回重新发送的消息;Unroutable(drop) 表示消息未被接收,且已经删除了的消息。

Nodes 部分则是表示 RabbitMQ Server 所在的当前节点与 RabbitMQ Server 相关的性能指标,这里有几个重要的性能指标,我们来看一下。

Name ,即当前 RabbitMQ Server 所在节点的节点名称。

Erlang processes ,即当前所在节点中,Erlang 语言支持库的线程数量。

Memory ,即当前所在节点中 RabbitMQ Server 所占的内存容量,单位为 MB 。

Disk space ,即当前所在节点的磁盘容量大小,单位为 GB 。

Uptime ,即当前节点中 RabbitMQ Server 服务的运行时长。

接着,让我们来看一下 Churn statistics 部分内容:

该部分有三个图标,由上到下分别表示 Connection 、Channel 、Queue 的状态曲线,而这些状态缺陷只是用来描述已经创建的和已经关闭的 Connection 、Channel 、Queue 的数量。

最后,让我们来看剩余的最后三部分内容,他们分别是 Ports and contexts 、Export Definitions 、Import Definitions ,如下图所示:

在 Ports and contexts 部分,有 Listening ports 和 Web contexts 部分组成,在 Listening ports 中,展示了当前存在的协议名称,以及协议所绑定的端口号;在 Web contexts 中,就是我们的 RabbitMQ 消息管控台的名称(Context),以及绑定的地址(Bound to)、端口(Port)和路径信息(Path)了。

在 Export Definitions 、Import Definitions 部分,分别表示将当前消息管控台的监控数据进行导出和导入,导出监控数据是通过下载完成,也就是 Download broker definitions ;导入监控数据是通过上传文件完成,也就是 Upload broker definitions 。

Tips: Overview 模块是在实际工作中,使用最频繁的模块,所以需要各位同学要彻底搞清楚 Overview 模块中,每个关键属性所表达的含义,这样我们才能更清楚地读懂 RabbitMQ 的监控信息。

3.3 Connections 模块

Connections 模块是专门用来对连接到 RabbitMQ Server 中的 Connection 进行监控的模块,该模块内容如下图所示:

在 Connections 模块中,只有一个 All Connections 部分,在该部分中,只有一个 Pagination 分页区域,该区域展示当前节点中,所有已经和 RabbitMQ Server 成功建立连接的连接信息,当然,我们可以通过在 Filter 对应的输入框中输入关键词来进行过滤搜索,很显然,目前还没有任何连接。

3.4 Channels 模块

Channels 模块是专门用来对 RabbitMQ Server 中的 Channel 进行监控的模块,该模块内容如下图所示:

和 Connections 模块一样,只有一个 All Channels 部分,这里就不再赘述了。

3.5 Exchanges 模块

Exchanges 模块是专门用来对 RabbitMQ Server 中的 Exchange 进行监控的模块,该模块分为 All Exchanges 部分和 Add a new exchange 部分,让我们先来看 All Exchanges 部分,如下图所示:

除了 Pagination 分页显示之外,还有一个 RabbitMQ 为我们提供的表格,在该表格中,列出了交换机的名称(Name)、类型(Type)、特征(Features)、信息流入速率(Message rate in)、信息流出速率(Message rate out),这些表格中列出的就是 RabbitMQ Server 中自带的交换机。

除了自带的交换机,我们也可以自定义我们需要的交换机,自定义交换机通过 Add a new exchange 部分来实现,Add a new exchange 部分如下图所示:

在新建自定义交换机时,需要我们输入自定义交换机的名称、选择类型、间隔类型、是否自动删除、是否只内部使用、匹配的表达式信息,其中,交换机的类型只能选择 RabbitMQ 中所规定的类型,这些类型在前面小节中已经做了介绍, 如下图所示:

3.6 Queues 模块

Queues 模块是专门用来对 RabbitMQ Server 中的 Queue 进行监控的模块,该模块内容与 Exchanges 模块内容相似,也分为 Pagination 部分与 Add a new queue 部分,如下图所示:

该模块的操作和 Exchanges 模块的操作是完全一样的,这里就不再赘述了。

3.7 Admin 模块

Admin 模块是对 RabbitMQ 根配置进行管理的模块,该模块内容众多,我们只需要了解常用的基础部分即可, 常用基础部分如下图所示:

Admin 模块的常用基础部分我都用红色框扛起来了,目前,我们只需要了解这些内容即可。

先来看 Users 部分,如下图所示:

Users 部分同样分为 All users 和 Add a user 区域,在 All users 区域中有一个表格,这个表格列出了当前 RabbitMQ Server 中已经存在的用户的用户名称(Name)、用户权限(Tags)、访问虚拟主机的权限(Can access Virtual hosts)、是否设置密码(Has password)。

在 Add a user 区域,要想新建一个用户,需要我们输入用户名、密码、以及用户权限,在输入完成后,点击 Add user 按钮即可完成新建用户的操作。

接下来看 Virtual Hosts 部分,如下图所示:

Virtual Hosts 部分同样分为了 All Virtual Hosts 和 Add a new virtual host 区域,在 All Virtual Hosts 的表格中,我们只需要关注这些性能指标:

虚拟主机的名称(overview.name)、虚拟主机中的用户(overview.users)、虚拟主机的状态(overview.state)、虚拟主机中准备发送的消息的数量(messages.ready)、虚拟主机中未确认消息的数量(messages.unacked)、虚拟主机中所有消息的数量(messages.total)。

在新建虚拟主机时,要求我们输入虚拟主机的名称、描述,以及标签,其中,虚拟主机的名称是必填的,其他属性随意。

最后我们来看 Cluster 部分,如下图所示:

在 Cluster 部分中,目前只支持修改当前节点的节点名称,还不支持对节点其他配置属性的设置,这点同学们知道一下就行。我们可以在该部分对 RabbitMQ Server 当前所在的节点名称进行修改,以适应我们的业务需要,这在实际工作种是非常有必要的。

以上就是对 RabbitMQ 消息管控台常用基础部分的所有介绍,对于其他部分的内容,同学们可以课下了解,拓展知识面。

4. 小结

本小节通过图文并茂的方式,为各位同学介绍了什么是 RabbitMQ 的消息管控台、如何访问 RabbitMQ 消息管控台,以及 RabbitMQ 消息管控台的基本组成元素,对于常用的基础组成元素,结合图文,做了详细的介绍和剖析,旨在帮助各位同学可以对 RabbitMQ 有一个系统性的认知,这样,我们在应用 RabbitMQ 处理消息时,才能做好监控与性能调优。

RabbitMQ 简介
RabbitMQ 简介
RabbitMQ 基础
Win环境-SpringBoot集成MQ Mac OS环境下RabbitMQ的安装与集成 Linux环境下RabbitMQ安装与服务命令实操 RabbitMQ 核心基础概念详解 RabbitMQ 基础核心配置文件介绍 RabbitMQ 消息发送原理概述 RabbitMQ 消息发送模式详解 RabbitMQ 交换机详解 RabbitMQ 消息监控平台介绍
RabbitMQ 基础特性与进阶
RabbitMQ的幂等性概念 RabbitMQ中消息确认与返回机制 RabbitMQ中消费者ACK与重回队列机制 RabbitMQ中的TTL消息是什么 死信队列基础概念详解与配置
RabbitMQ 整合 Spring 生态链
RabbitAdmin基础概念详解与配置 RabbitTemplate基础概念详解与配置 消息容器介绍 消息适配器概念讲解与基本属性介绍 消息适配器应用实操 消息转换器概念讲解与基本属性介绍 消息转换器应用实操
RabbitMQ 集群基础
Warren模式与Shovel模式介绍 Mirror模式与Federation模式介绍 RabbitMQ集群配置文件概述 KeepAlived组件基础属性介绍 HaProxy组件基础属性介绍 RabbitMQ集群故障排查与恢复概述
RabbitMQ 实战
消息发送模式实战之直接模式与主题模式 消息发送模式实战之发布订阅模式 消息发送模式实战之普通队列模式与工作队列模式 使用RabbitMQ优化用户登录功能 使用RabbitMQ优化用户注册功能 RabbitMQ集成KeepAlived组件实操 RabbitMQ集群集成HaProxy组件实操 使用RabbitMQ打造扛得住的高并发环境(一) 使用RabbitMQ打造扛得住的高并发环境(二) 使用RabbitMQ打造扛得住的高并发环境(三)