分佈式監控工具Ganglia 介紹 與 集羣部署.

若是你目的很明確就是衝着標題來的,不愛看我嘮叨,請直接進入第二個分割線以後的內容。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(ganglia monitor deamon)
  • gmetad(ganglia metadata deamon)

其中,gmond運行在集羣每一個節點上,收集RRDTool產生的數據;gmetad運行在監控服務器上,收集每一個gmond的數據。Ganglia還提供了一個PHP實現的web front end,通常使用Apache2做爲其運行環境,經過Web Front能夠看到直觀的各類集羣數據圖表。

Ganglia的層次化結構作的很是好,由小到大能夠分爲node -> cluster -> grid,這三個層次。

  • 一個node就是一個須要監控的節點,通常是個主機,用IP表示。每一個node上運行一個gmond進程用來採集數據,並提交給gmetad。
  • 一個cluster由多個node組成,就是一個集羣,咱們能夠給集羣定義名字。一個集羣能夠選一個node運行gmetad進程,彙總/拉取gmond提交的數據,並部署web front,將gmetad採集的數據用圖表展現出來。
  • 一個grid由多個cluster組成,是一個更高層面的概念,咱們能夠給grid定義名字。grid中能夠定義一個頂級的gmetad進程,彙總/拉取多個gmond、子gmetad提交的數據,部署web front,將頂級gmetad採集的數據用圖表展現出來。

顯然,這種方式很是靈活,能夠實現多種結構的數據監控。由下圖,咱們能夠清晰的看出這種層次化的結構,和不一樣的部署方式。

 

集羣部署

在這裏,僅介紹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

 

注意點

  • 本打算使用單播的方式來部署,即每一個gmond配置文件中指定gmetad的IP地址,可是失敗了。
  • 在採用多播的方式時,若是gmetad所在的節點不運行ganglia-monitor,也沒法採集到其餘純ganglia-monitor的數據,不知道爲何。
  • 若是在啓動的過程當中出現數據不一致,好比CPU明明是4核,但只看到1個,則有多是ganglia-monitor的啓動時間與gmetad有衝突,重啓一下便可。

 

參考文章

Ganglia 體系結構及功能介紹  

Ubuntu10.04 Ganglia安裝配置

Ganglia監控Hadoop及Hbase集羣性能(安裝配置)

 

  若是之後成功實現了單播部署,以及只運行gmetad的方式,再回來補充哈。更多詳細的內容,能夠看我給出的參考文章 :)

相關文章
相關標籤/搜索