若是你目的很明確就是衝着標題來的,不愛看我嘮叨,請直接進入第二個分割線以後的內容。html
其實以前就是有作Swift監控平臺的打算的,可是由於沒什麼硬性需求麼,也沒關係的,就一直擱置了。最近實驗室來了個大二升大三的小MM體驗生活,老大就讓咱們帶着她一塊兒作這個東西,主要好處就是能夠多學些實用的技術,瞭解雲存儲的基本架構,同時也不須要深刻細節,難以理解。node
好吧,我就是個愛說廢話和鋪陳的妞,這樣才體現「原創」不是?O(∩_∩)O哈哈~ 進入正題。。。linux
================================被38°杭州烤化掉的分割線================================web
關於對分佈式文件系統的監控,主要分爲兩個部分:機器性能相關的監控 和 系統運行狀態 的監控。apache
機器性能相關的監控:這個比較泛化,也比較成熟,主要是對CPU、內存、網絡、磁盤I/O等信息的監控,咱們不必重複造輪子,能夠選擇比較方便強大的開源工具來搭建,這裏咱們選擇Ganglia;ubuntu
系統運行狀態的監控:這個與不一樣的文件系統相關,雖然不一樣DFS也有一些共性的內容,好比帳戶、日誌、請求量等,可是具體到每個DFS的實現其實仍是有很大不一樣的,所以須要特別的定製。考慮到swift中ring的概念、ReST接口、帳戶建立等信息,這一個部分咱們打算本身來開發,同時能夠提供ring建立,帳戶添加等基本的管理員工具;swift
整合:提供統一入口、統一風格,這就要求咱們須要對Ganglia作必定的二次開發,從而與swift-related 監控部分整合,考慮到ganglia web front使用的是PHP語言開發的,運行環境爲Apache2。而咱們打算用JSP對swift-related部分進行開發,運行在Tomcat中,所以須要整合PHP + JSP環境,這個再以後再介紹。windows
好了,以上就是總體的思路了,step by step,本篇主要介紹Ganglia。瀏覽器
=====================================Ganglia=====================================服務器
Ganglia是一個集羣監控工具,由UC Berkeley建立並開源。Ganglia的中文意思是神經中樞,如今支持多部分操做系統(包括linux、unix、windows),可支持2000個節點的網絡監控(固然這不是上限,只是一個大集羣使用的範例)。
基本結構
Ganglia底層使用RRDTool得到數據,Ganglia主要分爲兩個進程組件:
其中,gmond運行在集羣每一個節點上,收集RRDTool產生的數據;gmetad運行在監控服務器上,收集每一個gmond的數據。Ganglia還提供了一個PHP實現的web front end,通常使用Apache2做爲其運行環境,經過Web Front能夠看到直觀的各類集羣數據圖表。
Ganglia的層次化結構作的很是好,由小到大能夠分爲node -> cluster -> grid,這三個層次。
顯然,這種方式很是靈活,能夠實現多種結構的數據監控。由下圖,咱們能夠清晰的看出這種層次化的結構,和不一樣的部署方式。
集羣部署
在這裏,僅介紹ubuntu上的部署方式,由於很簡單!只須要安裝兩個包:ganglia-monitor和ganglia-webfrontend。其中ganglia-webfrontend只須要安裝在提供頁面展現的服務器上,而且若是你的ubuntu沒有PHP和Apache2環境的話,它也會自動幫你安裝。
在這裏我直接介紹多播(ganglia默認的方式,此外還支持單播)方式的集羣部署,至於單機的方式,其實只要把ganglia-monitor和ganglia-webfrontend裝在一臺機器上就能夠了。
1)集羣環境
gmond:4臺(192.168.1.10一、192.168.1.10二、192.168.1.10三、192.168.1.104)
gmetad + ganglia web:1臺(192.168.1.104)
操做系統:Ubuntu 11.04
2)部署過程
在192.168.1.10一、192.168.1.10二、192.168.1.103這三臺僅運行gmond的節點上安裝ganglia-monitor:
sudo apt-get install ganglia-monitor
在192.168.1.104這臺包含全部ganglia服務的節點上安裝ganglia-monitor和ganglia-webfrontend,這個過程會默認爲沒有Apache和PHP的環境的系統安裝Apache2和PHP:
sudo apt-get install ganglia-webfrontend ganglia-monitor
在ganglia-webfrontend安裝完畢後,ganglia-webfrontend這個包默認會將Web相關的代碼安裝在」/usr/share/ganglia-webfrontend/」路徑下,這樣apache訪問不到。所以,可使用軟連接,或者直接將目錄移到」/var/www/」目錄下。
sudo ln -s /usr/share/ganglia-webfrontend/ /var/www/ganglia
或者:
sudo mv /usr/share/ganglia-webfrontend/ /var/www/ganglia
3)配置
在咱們的監控系統中,將cluster命名爲swift,grid命名爲MyGrid,並採用組播的方式。
配置gmond:打開/etc/ganglia/gmond.conf 修改 cluster name :
cluster { name = "swift" owner = "unspecified" latlong = "unspecified" url = "unspecified" }
配置gmetad:打開/etc/ganglia/gmetad.conf 添加數據源 和 網格名稱:
data_source "swift" localhost gridname "MyGrid"
4)啓動
重啓192.168.1.104的gmated:
service gmated restart
重啓每一個節點的gmond(注意服務名是ganglia-monitor,不是gmond!):
service ganglia-monitor restart
5)頁面
完成以上工做後,ganglia的部署就完成了,如今你能夠在192.168.1.104上直接打開瀏覽器訪問 http://localhost/ganglia,就能看到圖形界面啦!或者你能夠經過IP直接訪問,若是修改了端口記得加上新端口訪問。
這裏給出一張單機部署的web front end截圖,示意示意 ^_^~ 這個單機的服務,我將其cluster命名爲「yuki-cluster」,哈哈
至此,部署的工做就完成啦!=D
注意點
參考文章
Ganglia監控Hadoop及Hbase集羣性能(安裝配置)
若是之後成功實現了單播部署,以及只運行gmetad的方式,再回來補充哈。更多詳細的內容,能夠看我給出的參考文章 :)