RabbitMQ 消息監(jiān)控平臺(tái)介紹
1. 前言
Hello,大家好。本節(jié)會(huì)為同學(xué)們介紹 RabbitMQ 的消息監(jiān)控平臺(tái),包括 RabbitMQ 消息監(jiān)控平臺(tái)的訪問方法,以及 RabbitMQ 消息監(jiān)控平臺(tái)的組成元素。了解 RabbitMQ 消息監(jiān)控平臺(tái)的使用方式,是我們后期對(duì) RabbitMQ 進(jìn)行監(jiān)控的不二法則。
本節(jié)主要內(nèi)容:
-
如何訪問 RabbitMQ 消息監(jiān)控平臺(tái);
-
RabbitMQ 消息監(jiān)控平臺(tái)組成元素介紹;
2. 如何訪問 RabbitMQ 消息監(jiān)控平臺(tái) ?
什么是 RabbitMQ 消息監(jiān)控平臺(tái)
RabbitMQ 消息監(jiān)控平臺(tái),即用來監(jiān)控 RabbitMQ 中所有的消息所處的狀態(tài),以及當(dāng)前 RabbitMQ Server 的狀態(tài)的一個(gè)網(wǎng)絡(luò)平臺(tái),為 RabbitMQ 內(nèi)嵌的自我監(jiān)控平臺(tái),在安裝好了 RabbitMQ 之后就可以通過特定的路徑來訪問這一消息監(jiān)控平臺(tái)。
出于方便考慮,后續(xù)我們都將 RabbitMQ 消息監(jiān)控平臺(tái),稱為 RabbitMQ 消息管控臺(tái)。
在 RabbitMQ 消息管控臺(tái)中,可以對(duì)我們應(yīng)用程序中,所有的消息進(jìn)行監(jiān)控,包括消息是否已經(jīng)被發(fā)送、消息是否已經(jīng)被接收,以及 RabbitMQ Server 中,交換機(jī)、頻道、消息隊(duì)列的狀態(tài)等,經(jīng)過對(duì)這些關(guān)鍵指標(biāo)進(jìn)行監(jiān)控,我們可以很好地掌握我們應(yīng)用程序中的消息在 RabbitMQ Server 中的狀態(tài),以及我們的 RabbitMQ Server 節(jié)點(diǎn)工作是否正常等關(guān)鍵性能指標(biāo)。
如何訪問 RabbitMQ 消息監(jiān)控平臺(tái) ?
在介紹如何安裝 RabbitMQ 小節(jié)內(nèi)容中,已經(jīng)為大家介紹了如何來驗(yàn)證我們的 RabbitMQ 是否已經(jīng)安裝成功了,而這一驗(yàn)證手段正是我們?cè)L問 RabbitMQ 消息監(jiān)控平臺(tái)的方法,這里我們來簡(jiǎn)單回顧一下。
在將 RabbitMQ 安裝成功之后,需要我們啟動(dòng) RabbitMQ Server 服務(wù),該服務(wù)會(huì)占用我們的 5672 端口,然后對(duì)外暴露 15672 端口,來供我們?cè)L問,所以,要想訪問 RabbitMQ 消息管控臺(tái),我們只需要輸入 RabbitMQ Server 所在節(jié)點(diǎn)的 ip 地址,以及 15672 端口的組合方式就可以了。以本地為例,訪問 RabbitMQ 消息管控臺(tái)的地址如下:
http://localhost:15672
3. RabbitMQ 消息監(jiān)控平臺(tái)組成元素介紹
輸入上述訪問地址之后,我們會(huì)首先看到 RabbitMQ 消息管控臺(tái)的登錄界面,如下圖所示:

默認(rèn)的 RabbitMQ 消息管控臺(tái)的賬號(hào)和密碼均為 guest ,同時(shí),這個(gè) guest 賬號(hào)還具有最高的 Administrator 管理權(quán)限,可以對(duì) RabbitMQ 中的消息、交換機(jī)、頻道、消息隊(duì)列等進(jìn)行相應(yīng)的管理。
現(xiàn)在,讓我們用 guest 用戶登錄進(jìn)去(當(dāng)然我們也可以用自定義賬號(hào)來登錄),來對(duì) RabbitMQ 消息管控臺(tái)一探究竟吧。
登錄進(jìn)去后的 RabbitMQ 消息管控臺(tái)首頁(yè),如下圖所示:

接下來,我將根據(jù)不同的功能模塊,把 RabbitMQ 消息管控臺(tái)分為幾個(gè)區(qū)域,然后依次將不同區(qū)域中的主要內(nèi)容介紹給大家,下面我們來看一下 RabbitMQ 消息管控臺(tái)的區(qū)域圖:

3.1 頂部模塊
在上述區(qū)域圖中,我們會(huì)看到明顯的標(biāo)有 1 2 3 序號(hào)的模塊區(qū)域,這些就是 RabbitMQ 消息管控臺(tái)的主要功能模塊。在本部分中,我們先來看除了這些主要功能模塊之外的地方,也就是 RabbitMQ 消息管控臺(tái)的頂部模塊,如下圖所示:

在頂部模塊的第一部分,也就是標(biāo)序號(hào) 1 框起來的區(qū)域,這是 RabbitMQ 當(dāng)前狀態(tài)信息,包括 RabbitMQ 的 logo ,以及 RabbitMQ 的版本、Erlang 語言支持庫(kù)的版本,由上圖可以:當(dāng)前使用的 RabbitMQ 的版本為 3.8.5 ,當(dāng)前使用的 Erlang 語言支持庫(kù)的版本為 23.2.1 。
在頂部模塊的第二部分,也就是標(biāo)序號(hào) 2 框起來的區(qū)域,這是當(dāng)前 RabbitMQ 消息管控臺(tái)的底部配置區(qū)域,其中,Refreshed 表示當(dāng)前 RabbitMQ 消息管控臺(tái)監(jiān)控的頻率,默認(rèn)的監(jiān)控頻率為每 5 秒刷新一次消息管控臺(tái),當(dāng)然,我們可以根據(jù)實(shí)際情況來設(shè)置不同的刷新頻率,如下圖所示:

接著,Virtual host 表示當(dāng)前被監(jiān)控的虛擬主機(jī),默認(rèn)監(jiān)控全部的虛擬主機(jī),當(dāng)然,我們也可以選擇需要進(jìn)行監(jiān)控的虛擬主機(jī),如下圖所示:

最后的 Cluster 則表示當(dāng)前 RabbitMQ Server 所在的節(jié)點(diǎn)名稱,User 則表示當(dāng)前登錄進(jìn) RabbitMQ 消息管控臺(tái)的用戶,當(dāng)前我是使用的自定義的 steafan 賬號(hào)來登錄的。
在用戶名的右側(cè),是 Log Out 按鈕,即登出按鈕,當(dāng)我們點(diǎn)擊此按鈕之后,我們就會(huì)推出 RabbitMQ 消息管控臺(tái),來到其登錄界面。
3.2 Overview 模塊
Overview 模塊是 RabbitMQ 消息管控臺(tái)的總體概覽模塊,在本模塊中,會(huì)看到當(dāng)前 Connection 、Channel 、Queue 的狀態(tài),Overview 模塊分為六部分,如下圖所示:

接下來讓我們先來看 Totals 和 Nodes 部分內(nèi)容:

在 Totals 部分中,是一些監(jiān)控的曲線,其中,Queued messages 表示消息隊(duì)列的狀態(tài);Currently idle Message rates 表示當(dāng)前監(jiān)控頻率下,消息的速率,單位為秒;Global counts 則表示當(dāng)前 RabbitMQ Server 中各組成元素的個(gè)數(shù),它們分別是 Connections、 Channels、 Exchanges、 Queues、 Consumers ,默認(rèn)的 Exchanges 數(shù)量為 7 個(gè)。
在 Currently idle Message rates 部分,分別設(shè)置了 Publish、Publisher Confirm、Unroutable(return)、Unroutable(drop) 這些關(guān)鍵的屬性指標(biāo),其中 Publish 表示已發(fā)送的消息;Publisher Confirm 表示已經(jīng)發(fā)布確認(rèn)了的消息;Unroutable(return) 表示消息未被接收,且已返回重新發(fā)送的消息;Unroutable(drop) 表示消息未被接收,且已經(jīng)刪除了的消息。
Nodes 部分則是表示 RabbitMQ Server 所在的當(dāng)前節(jié)點(diǎn)與 RabbitMQ Server 相關(guān)的性能指標(biāo),這里有幾個(gè)重要的性能指標(biāo),我們來看一下。
Name ,即當(dāng)前 RabbitMQ Server 所在節(jié)點(diǎn)的節(jié)點(diǎn)名稱。
Erlang processes ,即當(dāng)前所在節(jié)點(diǎn)中,Erlang 語言支持庫(kù)的線程數(shù)量。
Memory ,即當(dāng)前所在節(jié)點(diǎn)中 RabbitMQ Server 所占的內(nèi)存容量,單位為 MB 。
Disk space ,即當(dāng)前所在節(jié)點(diǎn)的磁盤容量大小,單位為 GB 。
Uptime ,即當(dāng)前節(jié)點(diǎn)中 RabbitMQ Server 服務(wù)的運(yùn)行時(shí)長(zhǎng)。
接著,讓我們來看一下 Churn statistics 部分內(nèi)容:

該部分有三個(gè)圖標(biāo),由上到下分別表示 Connection 、Channel 、Queue 的狀態(tài)曲線,而這些狀態(tài)缺陷只是用來描述已經(jīng)創(chuàng)建的和已經(jīng)關(guān)閉的 Connection 、Channel 、Queue 的數(shù)量。
最后,讓我們來看剩余的最后三部分內(nèi)容,他們分別是 Ports and contexts 、Export Definitions 、Import Definitions ,如下圖所示:

在 Ports and contexts 部分,有 Listening ports 和 Web contexts 部分組成,在 Listening ports 中,展示了當(dāng)前存在的協(xié)議名稱,以及協(xié)議所綁定的端口號(hào);在 Web contexts 中,就是我們的 RabbitMQ 消息管控臺(tái)的名稱(Context),以及綁定的地址(Bound to)、端口(Port)和路徑信息(Path)了。
在 Export Definitions 、Import Definitions 部分,分別表示將當(dāng)前消息管控臺(tái)的監(jiān)控?cái)?shù)據(jù)進(jìn)行導(dǎo)出和導(dǎo)入,導(dǎo)出監(jiān)控?cái)?shù)據(jù)是通過下載完成,也就是 Download broker definitions ;導(dǎo)入監(jiān)控?cái)?shù)據(jù)是通過上傳文件完成,也就是 Upload broker definitions 。
Tips: Overview 模塊是在實(shí)際工作中,使用最頻繁的模塊,所以需要各位同學(xué)要徹底搞清楚 Overview 模塊中,每個(gè)關(guān)鍵屬性所表達(dá)的含義,這樣我們才能更清楚地讀懂 RabbitMQ 的監(jiān)控信息。
3.3 Connections 模塊
Connections 模塊是專門用來對(duì)連接到 RabbitMQ Server 中的 Connection 進(jìn)行監(jiān)控的模塊,該模塊內(nèi)容如下圖所示:

在 Connections 模塊中,只有一個(gè) All Connections 部分,在該部分中,只有一個(gè) Pagination 分頁(yè)區(qū)域,該區(qū)域展示當(dāng)前節(jié)點(diǎn)中,所有已經(jīng)和 RabbitMQ Server 成功建立連接的連接信息,當(dāng)然,我們可以通過在 Filter 對(duì)應(yīng)的輸入框中輸入關(guān)鍵詞來進(jìn)行過濾搜索,很顯然,目前還沒有任何連接。
3.4 Channels 模塊
Channels 模塊是專門用來對(duì) RabbitMQ Server 中的 Channel 進(jìn)行監(jiān)控的模塊,該模塊內(nèi)容如下圖所示:

和 Connections 模塊一樣,只有一個(gè) All Channels 部分,這里就不再贅述了。
3.5 Exchanges 模塊
Exchanges 模塊是專門用來對(duì) RabbitMQ Server 中的 Exchange 進(jìn)行監(jiān)控的模塊,該模塊分為 All Exchanges 部分和 Add a new exchange 部分,讓我們先來看 All Exchanges 部分,如下圖所示:

除了 Pagination 分頁(yè)顯示之外,還有一個(gè) RabbitMQ 為我們提供的表格,在該表格中,列出了交換機(jī)的名稱(Name)、類型(Type)、特征(Features)、信息流入速率(Message rate in)、信息流出速率(Message rate out),這些表格中列出的就是 RabbitMQ Server 中自帶的交換機(jī)。
除了自帶的交換機(jī),我們也可以自定義我們需要的交換機(jī),自定義交換機(jī)通過 Add a new exchange 部分來實(shí)現(xiàn),Add a new exchange 部分如下圖所示:

在新建自定義交換機(jī)時(shí),需要我們輸入自定義交換機(jī)的名稱、選擇類型、間隔類型、是否自動(dòng)刪除、是否只內(nèi)部使用、匹配的表達(dá)式信息,其中,交換機(jī)的類型只能選擇 RabbitMQ 中所規(guī)定的類型,這些類型在前面小節(jié)中已經(jīng)做了介紹, 如下圖所示:

3.6 Queues 模塊
Queues 模塊是專門用來對(duì) RabbitMQ Server 中的 Queue 進(jìn)行監(jiān)控的模塊,該模塊內(nèi)容與 Exchanges 模塊內(nèi)容相似,也分為 Pagination 部分與 Add a new queue 部分,如下圖所示:

該模塊的操作和 Exchanges 模塊的操作是完全一樣的,這里就不再贅述了。
3.7 Admin 模塊
Admin 模塊是對(duì) RabbitMQ 根配置進(jìn)行管理的模塊,該模塊內(nèi)容眾多,我們只需要了解常用的基礎(chǔ)部分即可, 常用基礎(chǔ)部分如下圖所示:

Admin 模塊的常用基礎(chǔ)部分我都用紅色框扛起來了,目前,我們只需要了解這些內(nèi)容即可。
先來看 Users 部分,如下圖所示:

Users 部分同樣分為 All users 和 Add a user 區(qū)域,在 All users 區(qū)域中有一個(gè)表格,這個(gè)表格列出了當(dāng)前 RabbitMQ Server 中已經(jīng)存在的用戶的用戶名稱(Name)、用戶權(quán)限(Tags)、訪問虛擬主機(jī)的權(quán)限(Can access Virtual hosts)、是否設(shè)置密碼(Has password)。
在 Add a user 區(qū)域,要想新建一個(gè)用戶,需要我們輸入用戶名、密碼、以及用戶權(quán)限,在輸入完成后,點(diǎn)擊 Add user 按鈕即可完成新建用戶的操作。
接下來看 Virtual Hosts 部分,如下圖所示:

Virtual Hosts 部分同樣分為了 All Virtual Hosts 和 Add a new virtual host 區(qū)域,在 All Virtual Hosts 的表格中,我們只需要關(guān)注這些性能指標(biāo):
虛擬主機(jī)的名稱(overview.name)、虛擬主機(jī)中的用戶(overview.users)、虛擬主機(jī)的狀態(tài)(overview.state)、虛擬主機(jī)中準(zhǔn)備發(fā)送的消息的數(shù)量(messages.ready)、虛擬主機(jī)中未確認(rèn)消息的數(shù)量(messages.unacked)、虛擬主機(jī)中所有消息的數(shù)量(messages.total)。
在新建虛擬主機(jī)時(shí),要求我們輸入虛擬主機(jī)的名稱、描述,以及標(biāo)簽,其中,虛擬主機(jī)的名稱是必填的,其他屬性隨意。
最后我們來看 Cluster 部分,如下圖所示:

在 Cluster 部分中,目前只支持修改當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)名稱,還不支持對(duì)節(jié)點(diǎn)其他配置屬性的設(shè)置,這點(diǎn)同學(xué)們知道一下就行。我們可以在該部分對(duì) RabbitMQ Server 當(dāng)前所在的節(jié)點(diǎn)名稱進(jìn)行修改,以適應(yīng)我們的業(yè)務(wù)需要,這在實(shí)際工作種是非常有必要的。
以上就是對(duì) RabbitMQ 消息管控臺(tái)常用基礎(chǔ)部分的所有介紹,對(duì)于其他部分的內(nèi)容,同學(xué)們可以課下了解,拓展知識(shí)面。
4. 小結(jié)

本小節(jié)通過圖文并茂的方式,為各位同學(xué)介紹了什么是 RabbitMQ 的消息管控臺(tái)、如何訪問 RabbitMQ 消息管控臺(tái),以及 RabbitMQ 消息管控臺(tái)的基本組成元素,對(duì)于常用的基礎(chǔ)組成元素,結(jié)合圖文,做了詳細(xì)的介紹和剖析,旨在幫助各位同學(xué)可以對(duì) RabbitMQ 有一個(gè)系統(tǒng)性的認(rèn)知,這樣,我們?cè)趹?yīng)用 RabbitMQ 處理消息時(shí),才能做好監(jiān)控與性能調(diào)優(yōu)。