跳到主要内容

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 处理消息时,才能做好监控与性能调优。