最簡單的 RabbitMQ 監控方法
這是 OpenStack 實施經驗分享系列的第 8 篇。
先來看張圖:
這是 Nova 的架構圖,我們可以看到有兩個元件處於架構的中心位置:資料庫和Queue。資料庫儲存狀態資訊,而幾乎所有的 nova-* 服務都直接依賴於 Queue 實現服務之間的通訊和呼叫。
OpenStack 通常用 RabbitMQ 實現訊息佇列,幾乎所有的 OpenStack 模組都會用到 RabbitMQ,如果 RabbitMQ 掛了,OpenStack 也就癱了,可以說它是最重要的元件。
本節我們就來討論如何監控 RabbitMQ 的狀態,介紹一個非常簡單高效的方法。
啟用 RabbitMQ 管理 plugin
預設安裝中,我們只能用命令 rabbitmqctl 監控 RabbitMQ,比如:rabbitmqctl list_queues,rabbitmqctl list_exchanges 等子命令。這種方式不太直觀,效率不高。
好在 RabbitMQ 有一個管理 plugin,提供了圖形管理介面,可以在執行 RabbitMQ 的節點(一般是控制節點)執行下面的命令啟用。
rabbitmq-plugins enable rabbitmq_management
然後還需要建立一個 使用者,用來登入管理控制檯了。
rabbitmqctl add_user user_admin passwd_admin
rabbitmqctl set_user_tags user_admin administrator
rabbitmqctl set_permissions -p / user_admin ".*" ".*" ".*"
然後就可以用 user_admin(密碼 passwd_admin)登入了,地址是
http://server-name:15672/
最簡單高效的監控方法
Web 控制檯會展示很多 RabbitMQ 資訊,但最最重要的就一個:Unacked Message。這個資料會直接顯示在登入之後的 Overview 標籤中,第一眼就能看到。
Unacked Message 指的是還沒有被處理的訊息。正常情況下,這個值應該為 0。如果這個值不是 0,並且持續增長,那你就得注意了,這意味著 RabbitMQ 出現了問題,佇列開始積壓,訊息開始堆積,是一個嚴重的訊號。
接下來怎麼辦呢?
這個時候就可以點開 Overview 後面的標籤,檢視到底訊息是在哪個或者哪些 Connection,Channel,Exchange,Queues 中堆積,進而分析問題的根源並解決。
一個真實案例
1. 客戶的 OpenStack 在正常運行了一個月後突然掛了。
2. 日誌分析發現 nova,neutron 等模組都報告找不到相關的 queue。因為多個模組的日誌都指向 RabbitMQ,看來 RabbitMQ 有最大嫌疑。
3. RabbitMQ 日誌中 Error 已經在持續刷屏,但資訊很籠統。這時 RabbitMQ 已經處於無法工作的狀態,只能重啟 RabbitMQ。
4. RabbitMQ 重啟後,OpenStack 自動恢復。
5. 開啟 RabbitMQ Web 控制檯,發現 Unacked Message > 0。
6. 觀察一段時間,發現 Unacked Message 以固定的速度持續增長。
7. 定位 Message 增長的原因,發現均來自 Ceilometer 相關的 Queue。
8. 檢查 Ceilometer,發現了一個配置錯誤,導致 Ceilometer 傳送到 Queue 的資料沒有被處理。
9. 修改配置,重啟 Ceilometer,Unacked Message 開始下降,最後保持為 0。
這個問題就像記憶體洩漏一樣,Unacked Message 逐漸積累,最終壓跨了整個 OpenStack。
好了,以上就是今天的內容,下一節我們繼續分享實施經驗。
相關推薦
最簡單的 RabbitMQ 監控方法
這是 OpenStack 實施經驗分享系列的第 8 篇。 先來看張圖: 這是 Nova 的架構圖,我們可以看到有兩個元件處於架構的中心位置:資料庫和Queue。資料庫儲存狀態資訊,而幾乎所有的 nova-* 服務都直接依賴於 Queue 實現服務之間的通訊和呼叫。 O
最簡單的排序方法之一 冒泡排序
ole 判斷 冒泡排序 ++ ems stat 簡單的排序 交換 排序 public class BubbleSort{ public static void main(String[] args) { int[] bubbleSort ={1,6,2,3,4,5}
2018.10.29最新最簡單webstrom破解方法
一,開啟webstrom license Activation介面,選Activation code 二,將下邊全部程式碼複製貼上到文字框裡,點選ok即可! 2RRJMBXW33-eyJsaWNlbnNlSWQiOiIyUlJKTUJYVzMzIiwibG
後臺如何接受前端傳過來的物件陣列最簡單的解決方法
下面給個錯誤的列子 /** * 採購退貨資訊新增 */ @PostMapping("/purchasereturngoods/insert") @A
PDF如何轉Word?教你最簡單的轉換方法
你是不是還在為PDF怎麼轉Word而苦惱?在工作和學習中遇到PDF轉Word或是Word轉PDF這類問題時不知道怎麼解決,在急需情況下其實有一些不錯的解決方法,下面小編就帶大家看一下解決方法吧。 一、PDF轉Word 1、複製法 最簡單樸實的方法就是複製貼上,在PDF中先【Ctrl+A】
Easyui datagrid日期格式化(史上最簡單的格式化方法)
{field: 'AddTime', title: '新增時間', width: 100, align: 'center', formatter: function (value) {
linux 下安裝 LNMP 最簡單的安裝方法
最近在安裝linux lnmp centos7環境的時候還是有點小問題,從頭總結了一下。 安裝的版本是 nginx 1.12 mysql 5.7 php 5.6
CentOS下nodejs最簡單的安裝方法
1. 下載編譯好的檔案 我的系統是centos7,進入要存放下載資源的目錄,個人建議存放在/usr/local/src/目錄下。然後執行安裝命令: wget http://nodejs.org/dist/v6.9.4/node-v6.9.4-linux-x64.tar.gz 上述命令是下載6.
開發環境搭建-CentOS7安裝MySql5.7-Yum最簡單的安裝方法
一、前言 yum是linux安裝軟體的利器,一個命令直接下載編譯安裝一條龍服務,簡單方便,但CentOS7的yum源中預設是沒有mysql,所以我們要先下載yum源。 二、實踐 1.檢視是否有mysql 如果有就解除安裝以前的mysql-百度一下linux完全解除安裝my
webstorm2018最新版最簡單的破解方法
webstorm是一款前端主流編譯器,雖然這款編譯器不是免費的,但是破解方法還是有不少的,接下來就告訴大家一種最簡單的方法: 下載完畢點選安裝,安裝完成後,執行webstorm,彈出註冊視窗選擇Activate,在開啟的License Activation視窗中選擇
java最簡單複製檔案方法,不依賴任何框架
java最簡單複製檔案方法 把java2.txt內容複製到java.txt中 import java.io.File; import java.io.IOException; import java.nio.file.Files; im
java中把檔案拷貝到指定目錄下最簡單幾種方法
java中把檔案拷貝到指定目錄下最簡單幾種方法 String savePath = "D:/file" ; // 檔案儲存到d盤的file目錄下 File savefile =
win10電腦啟用,最簡單的啟用方法
win10電腦啟用,最簡單的啟用方法 1)點選電腦左下角的“開始”圖示,然後我們找到“小娜”,並點選 1 2)然後在輸入欄中我們鍵入“CMD”,出現“命令提示符”的時候我們滑鼠右鍵“以管理員身份執行” 2 然後複製貼上以下命令: slmgr.vbs /upk 這時時候我們會發
陣列去重,最簡單兩種方法
在學習es6的過程中發現Set建構函式,接受一個數組型別的引數可以去除重複值,不廢話直接上最簡單的程式碼 var array=[1,2,3,4,5,6,2,2,2,2,3,3,3] console.log([...new Set(array)]) 順便提一下以前使
最簡單列印三角形方法
import java.applet.*; import java.awt.*; public class Applet1 extends Applet { public void paint(Graphics g) { int i=1,j,n=5; while(i<=
如何將linq查詢的結果 轉換為DataTable,最簡單的實現方法
public static DataTable CopyToDataTable<T>(this IEnumerable<T> array) { var ret = new DataTable(); foreach (PropertyDescrip
安裝python第三方庫最簡單方便的方法-使用Anaconda
使用python一個很大的好處與優勢,就在於python有大量的第三方庫可以直接使用,但對於新手來說,如何尋找和安裝需要的庫,是首先需要解決的問題。 關於如何裝庫,網上已經有不少詳細的教程,主要都是在官方文件,或者gitup上下載包,然後本地安裝,其實這樣也不復雜,但這裡
兩臺電腦最簡單的連線方法:直連
今日我所在的部門電腦升級,由於安全級別較高,所有的裝置輸出埠都被封了,老電腦裡的東西如何匯入新電腦成了一個問題!上傳到公用的檔案伺服器吧,一是如果大家都把自己常年的資料上傳的話估計檔案伺服器的容量會是個問題;另外就是先上傳到檔案伺服器再下載到新電腦這時間可不會很短......
最簡單的入侵方法—知道對方IP就能入侵別人的電腦
黑客已經成為一種文化,很多人想成為黑客,他們偶爾學到了幾種小花招,總喜歡拿別人開玩笑,搞些惡作劇。其實黑客的最高境界在於防守,不在於進攻。所謂明槍易躲暗箭難防,要防住他人所有的進攻,肯定需要懂得比對方更多的系統知識,瞭解更多的系統漏洞,及如何彌補漏洞。 現在滿天都是黑客教程,
安裝pip最簡單方便的方法
網上有各種方法安裝pip,針對不同的系統方法還不一樣,最後發現還是下面這種方法最簡單,直接了當乾脆方便,適用於Windows和Linux。 (1)下載pip (2)解壓安裝 解壓下載的檔案(windows下只用解壓工具解壓如RAR,Linux下終端輸入tar -