@[toc]
RabbitMQ 的 web 管理頁(yè)面相信很多小伙伴都用過(guò),隨便點(diǎn)一下估計(jì)也都知道啥意思,不過(guò)本著精益求精的思想,松哥還是想和大家捋一捋這個(gè)管理頁(yè)面的各個(gè)細(xì)節(jié)。
1. 概覽
首先,這個(gè) Web 管理頁(yè)面大概就像下圖這樣:

首先一共有六個(gè)選項(xiàng)卡:
- Overview:這里可以概覽 RabbitMQ 的整體情況,如果是集群,也可以查看集群中各個(gè)節(jié)點(diǎn)的情況。包括 RabbitMQ 的端口映射信息等,都可以在這個(gè)選項(xiàng)卡中查看。
- Connections:這個(gè)選項(xiàng)卡中是連接上 RabbitMQ 的生產(chǎn)者和消費(fèi)者的情況。
- Channels:這里展示的是“通道”信息,關(guān)于“通道”和“連接”的關(guān)系,松哥在后文再和大家詳細(xì)介紹。
- Exchange:這里展示所有的交換機(jī)信息。
- Queue:這里展示所有的隊(duì)列信息。
- Admin:這里展示所有的用戶信息。
右上角是頁(yè)面刷新的時(shí)間,默認(rèn)是 5 秒刷新一次,展示的是所有的 Virtual host。
這是整個(gè)管理頁(yè)面的一個(gè)大致情況,接下來(lái)我們來(lái)逐個(gè)介紹。
2. Overview
Overview 中分了如下一些功能模塊:

分別是:
Totals:
Totals 里面有 準(zhǔn)備消費(fèi)的消息數(shù)、待確認(rèn)的消息數(shù)、消息總數(shù)以及消息的各種處理速率(發(fā)送速率、確認(rèn)速率、寫(xiě)入硬盤(pán)速率等等)。

Nodes:
Nodes 其實(shí)就是支撐 RabbitMQ 運(yùn)行的一些機(jī)器,相當(dāng)于集群的節(jié)點(diǎn)。

點(diǎn)擊每個(gè)節(jié)點(diǎn),可以查看節(jié)點(diǎn)的詳細(xì)信息。
Churn statistics:
這個(gè)不好翻譯,里邊展示的是 Connection、Channel 以及 Queue 的創(chuàng)建/關(guān)閉速率。

Ports and contexts:

這個(gè)里邊展示了端口的映射信息以及 Web 的上下文信息。
- 5672 是 RabbitMQ 通信端口。
- 15672 是 Web 管理頁(yè)面端口。
- 25672 是集群通信端口。
Export definitions && Import definitions:
最后面這兩個(gè)可以導(dǎo)入導(dǎo)出當(dāng)前實(shí)例的一些配置信息:

3. Connections
這里主要展示的是當(dāng)前連接上 RabbitMQ 的信息,無(wú)論是消息生產(chǎn)者還是消息消費(fèi)者,只要連接上來(lái)了這里都會(huì)顯示出來(lái)。

注意協(xié)議中的 AMQP 0-9-1 指的是 AMQP 協(xié)議的版本號(hào)。
其他屬性含義如下:
- User name:當(dāng)前連接使用的用戶名。
- State:當(dāng)前連接的狀態(tài),running 表示運(yùn)行中;idle 表示空閑。
- SSL/TLS:表示是否使用 ssl 進(jìn)行連接。
- Channels:當(dāng)前連接創(chuàng)建的通道總數(shù)。
- From client:每秒發(fā)出的數(shù)據(jù)包。
- To client:每秒收到的數(shù)據(jù)包。
點(diǎn)擊連接名稱可以查看每一個(gè)連接的詳情。
在詳情中可以查看每一個(gè)連接的通道數(shù)以及其他詳細(xì)信息,也可以強(qiáng)制關(guān)閉一個(gè)連接。
4. Channels
這個(gè)地方展示的是通道的信息:

那么什么是通道呢?
一個(gè)連接(IP)可以有多個(gè)通道,如上圖,一共是兩個(gè)連接,但是一共有 12 個(gè)通道。
一個(gè)連接可以有多個(gè)通道,這個(gè)多個(gè)通道通過(guò)多線程實(shí)現(xiàn),一般情況下,我們?cè)谕ǖ乐袆?chuàng)建隊(duì)列、交換機(jī)等。
生產(chǎn)者的通道一般會(huì)立馬關(guān)閉;消費(fèi)者是一直監(jiān)聽(tīng)的,通道幾乎是會(huì)一直存在。
上面各項(xiàng)參數(shù)含義分別如下:
- Channel:通道名稱。
- User name:該通道登錄使用的用戶名。
- Model:通道確認(rèn)模式,C 表示 confirm;T 表示事務(wù)。
- State:通道當(dāng)前的狀態(tài),running 表示運(yùn)行中;idle 表示空閑。
- Unconfirmed:待確認(rèn)的消息總數(shù)。
- Prefetch:Prefetch 表示每個(gè)消費(fèi)者最大的能承受的未確認(rèn)消息數(shù)目,簡(jiǎn)單來(lái)說(shuō)就是用來(lái)指定一個(gè)消費(fèi)者一次可以從 RabbitMQ 中獲取多少條消息并緩存在消費(fèi)者中,一旦消費(fèi)者的緩沖區(qū)滿了,RabbitMQ 將會(huì)停止投遞新的消息到該消費(fèi)者中直到它發(fā)出有消息被 ack 了??偟膩?lái)說(shuō),消費(fèi)者負(fù)責(zé)不斷處理消息,不斷 ack,然后只要 unAcked 數(shù)少于 prefetch * consumer 數(shù)目,RabbitMQ 就不斷將消息投遞過(guò)去。
- Unacker:待 ack 的消息總數(shù)。
- publish:消息生產(chǎn)者發(fā)送消息的速率。
- confirm:消息生產(chǎn)者確認(rèn)消息的速率。
- unroutable (drop):表示未被接收,且已經(jīng)刪除了的消息。
- deliver/get:消息消費(fèi)者獲取消息的速率。
- ack:消息消費(fèi)者 ack 消息的速率。
5. Exchange
這個(gè)地方展示交換機(jī)信息:

這里會(huì)展示交換機(jī)的各種信息。
Type 表示交換機(jī)的類型。
Features 有兩個(gè)取值 D 和 I。
D 表示交換機(jī)持久化,將交換機(jī)的屬性在服務(wù)器內(nèi)部保存,當(dāng) MQ 的服務(wù)器發(fā)生意外或關(guān)閉之后,重啟 RabbitMQ 時(shí)不需要重新手動(dòng)或執(zhí)行代碼去建立交換機(jī),交換機(jī)會(huì)自動(dòng)建立,相當(dāng)于一直存在。
I 表示這個(gè)交換機(jī)不可以被消息生產(chǎn)者用來(lái)推送消息,僅用來(lái)進(jìn)行交換機(jī)和交換機(jī)之間的綁定。
Message rate in 表示消息進(jìn)入的速率。
Message rate out 表示消息出去的速率。
點(diǎn)擊下方的 Add a new exchange 可以創(chuàng)建一個(gè)新的交換機(jī)。
6. Queue
這個(gè)選項(xiàng)卡就是用來(lái)展示消息隊(duì)列的:

各項(xiàng)含義如下:
- Name:表示消息隊(duì)列名稱。
- Type:表示消息隊(duì)列的類型,除了上圖的 classic,另外還有一種消息類型是 Quorum。兩個(gè)區(qū)別如下圖:

- Features:表示消息隊(duì)列的特性,D 表示消息隊(duì)列持久化。
- State:表示當(dāng)前隊(duì)列的狀態(tài),running 表示運(yùn)行中;idle 表示空閑。
- Ready:表示待消費(fèi)的消息總數(shù)。
- Unacked:表示待應(yīng)答的消息總數(shù)。
- Total:表示消息總數(shù) Ready+Unacked。
- incoming:表示消息進(jìn)入的速率。
- deliver/get:表示獲取消息的速率。
- ack:表示消息應(yīng)答的速率。
點(diǎn)擊下方的 Add a new queue 可以添加一個(gè)新的消息隊(duì)列。
點(diǎn)擊每一個(gè)消息隊(duì)列的名稱,可以進(jìn)入到消息隊(duì)列中。進(jìn)入到消息隊(duì)列后,可以完成對(duì)消息隊(duì)列的進(jìn)一步操作,例如:
- 將消息隊(duì)列和某一個(gè)交換機(jī)進(jìn)行綁定。
- 發(fā)送消息。
- 獲取一條消息。
- 移動(dòng)一條消息(需要插件的支持)。
- 刪除消息隊(duì)列。
- 清空消息隊(duì)列中的消息。
- ...
如下圖:

7. Admin
這里是做一些用戶管理操作,如下圖:

各項(xiàng)屬性含義如下:
- Name:表示用戶名稱。
- Tags:表示角色標(biāo)簽,只能選取一個(gè)。
- Can access virtual hosts:表示允許進(jìn)入的虛擬主機(jī)。
- Has password:表示這個(gè)用戶是否設(shè)置了密碼。
常見(jiàn)的兩個(gè)操作時(shí)管理用戶和虛擬主機(jī)。
點(diǎn)擊下方的 Add a user 可以添加一個(gè)新的用戶,添加用戶的時(shí)候需要給用戶設(shè)置 Tags,其實(shí)就是用戶角色,如下:
none:
不能訪問(wèn) management pluginmanagement:
用戶可以通過(guò) AMQP 做的任何事
列出自己可以通過(guò) AMQP 登入的 virtual hosts
查看自己的 virtual hosts 中的 queues, exchanges 和 bindings
查看和關(guān)閉自己的 channels 和 connections
查看有關(guān)自己的 virtual hosts 的“全局”的統(tǒng)計(jì)信息,包含其他用戶在這些 virtual hosts 中的活動(dòng)policymaker:
management 可以做的任何事
查看、創(chuàng)建和刪除自己的 virtual hosts 所屬的 policies 和 parametersmonitoring:
management 可以做的任何事
列出所有 virtual hosts,包括他們不能登錄的 virtual hosts
查看其他用戶的 connections 和 channels
查看節(jié)點(diǎn)級(jí)別的數(shù)據(jù)如 clustering 和 memory 使用情況
查看真正的關(guān)于所有 virtual hosts 的全局的統(tǒng)計(jì)信息administrator:
policymaker 和 monitoring 可以做的任何事
創(chuàng)建和刪除 virtual hosts
查看、創(chuàng)建和刪除 users
查看創(chuàng)建和刪除 permissions
關(guān)閉其他用戶的 connectionsimpersonator(模擬者)
模擬者,無(wú)法登錄管理控制臺(tái)。
另外,這里也可以進(jìn)行虛擬主機(jī) virtual host 的操作,不過(guò)關(guān)于虛擬主機(jī)我打算另外寫(xiě)一篇文章和大家詳聊,這里就先不展開(kāi)啦。
8. 小結(jié)
好啦,今天算是一篇入門(mén)文章,和大家簡(jiǎn)單聊一聊 RabbitMQ 的 web 管理頁(yè)面展示的一些信息。