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

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

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

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

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

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

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

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

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

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

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

和 Connections 模塊一樣,只有一個 All Channels 部分,這里就不再贅述了。
3.5 Exchanges 模塊
Exchanges 模塊是專門用來對 RabbitMQ Server 中的 Exchange 進行監(jiān)控的模塊,該模塊分為 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 部分來實現(xiàn),Add a new exchange 部分如下圖所示:

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

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

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

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

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

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

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

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