因為專案的需要,前陣子開始研究Ganglia這套監控系統,對於各主機即時狀態的呈現,幫助管理者可以快速地瞭解各主機的健康狀況。由於各os環境的不同,在網路上找不到完全詳細的安裝與設定資訊,花了不少時間在看錯誤訊息,試著靠這些訊息來一個一個除錯,讓Ganglia可以正常監控基本主機資訊。關於Ganglia的介紹與原理網路上已經有很多資訊,在這就只記錄完整安裝與設定Ganglia的步驟。
1. 安裝環境準備
本文所採用的安裝環境如下:
- Ubuntu 10.10
- Ganglia 3.3.1
2. 主節點Gmond安裝與設定
- 到Ganglia官方網站http://ganglia.sourceforge.net/ 下載Ganglia套件,目前最新穩定版本為3.3.1。
- 下載後的壓縮檔,解壓縮到磁碟目錄中,本文假設解壓縮到/opt/。解壓縮後資料夾階層如下:
$ cd /opt
~/opt $ ls
ganglia-3.3.1
- 安裝需要的套件(如有套件無法取得,請逐一個別安裝)
$sudo apt-get install build-essential libapr1-dev libconfuse-dev libexpat1-dev python-dev
- 編譯
~/opt$ cd ganglia-3.3.1
~/ganglia-3.3.1 $ sudo ./configure --with-libpcre=no
編譯成功後的畫面
- 安裝
~/ganglia-3.3.1 $ sudo make
~/ganglia-3.3.1 $ sudo make install
- 修改ganglia-3.3.1資料夾擁有者(本範例所使用之帳戶與群組皆為hadoop)
$ sudo chown –R hadoop:hadoop /opt/ganglia-3.3.1/
- 產生gmond設定檔至家目錄(ex: /home/hadoop)
~/ganglia-3.3.1$ gmond/gmond --default_config > /home/hadoop/gmond.conf
- 修改所產生之gmond.conf設定
globals {
…
setuid = yes //限定下列user才可執行使用,否則設為no
user = hadoop //預設為nobody,在此以目前所使用之帳戶hadoop為
例
…
}
cluster{
name = “hadoop” //所屬叢集名稱,gmetad與gmond之設定須一致,
才可順利收集指標資訊
…
}
udp_send_channel{
#mcast_join = 239.2.11.71 //本範例以單播模式為例,因此不使用多播
模式設定,在前面加’#’字號註解起來
host = {負責接收指標的節點ip} //新增加此行,指定接收指標之節
點位址
…
}
udp_recv_channel{
#mcast_join = 239.2.11.71 //在前面加’#’字號註解起來
port = 8649
#bind = 239.2.11.71 //在前面加’#’字號註解起來
}
- 將修改好之設定檔移至/usr/local/etc/資料夾下
~/ganglia-3.3.1$ sudo mv /home/hadoop/gmond.conf /usr/local/etc/
- 複製執行所需的python模組至預設路徑下
~/ganglia-3.3.1$ sudo cp –r /opt/ganglia-3.3.1/gmond/python_modules/ /usr/local/lib/ganglia/
- 啟動gmond
ü 背景執行
~/ganglia-3.3.1$ gmond/gmond
ü 前景執行(Debug模式),可監看執行狀態是否出錯
~/ganglia-3.3.1$ gmond/gmond –d 2
- 停止gmond
ü 停止背景執行的gmond
$ pgrep gmond
1597 ← process id
$ sudo kill 1597
ü 停止前景執行的gmond: 於鍵盤執行ctrl+c即可。
3. 其餘子節點Gmond安裝與設定
- 安裝與執行的步驟同上述主節點描述
- gmond.conf同上述主節點設定外,須再修改下列參數設定
globals {
…
deaf = yes //此設定表示不接收任何資訊,因為子節點只負責將本機資
訊傳送至主節點,所以須將其設yes
…
}
4. 主節點Gmetad安裝與設定
- 延續前面gmond所建置好的ganglia-3.3.1資料夾
- 安裝需要的套件(如有套件無法取得,請逐一個別安裝)
$sudo apt-get install build-essential libapr1-dev libconfuse-dev libexpat1-dev python-dev librrd2-dev
- 新增rrds資料夾以供ganglia儲存指標資料,並修改資料夾擁有者,於gmetad執行期間才有權限存取此資料夾
$ sudo mkdir /var/lib/ganglia
$ sudo mkdir /var/lib/ganglia/rrds/
$ sudo chown -R hadoop:hadoop /var/lib/ganglia/ ←修改擁有者帳戶與
群組
- gmetad執行檔的建立與安裝
$ cd /opt/ganglia-3.3.1/gmetad
~/gmetad$ sudo make
~/gmetad$ sudo make install
- 修改gmetad資料夾擁有者
$ sudo chown –R hadoop:hadoop /opt/ganglia-3.3.1/gmetad
- 完成上述步驟後,/usr/local/etc資料夾內已產生gmetad.conf設定檔,編輯並修改其設定,如下所示
data_source “hadoop” localhost //hadoop為叢集名稱,localhost為主
節點位址,可依需求改為其他ip或
hostname
setuid_username “hadoop” //將此行開頭之”#”字號刪除,預設為
nobody,在此以目前所使用之帳戶
hadoop為例
下列設定可視需求修改
all_trusted on //如果希望任一主機都可連至gmetad節點取得資料,
則須設為on開啟此功能
setuid off //是否限制僅設定之帳戶可執行gmetad
- 啟動gmetad
ü 背景執行
~/ganglia-3.3.1$ gmetad/gmetad
ü 前景執行(Debug模式),可監看執行狀態是否出錯
~/ganglia-3.3.1$ gmetad/gmetad –d 2
- 停止gmetad
ü 停止背景執行的gmetad
$ pgrep gmetad
8640 ← process id
$ sudo kill 8640
ü 停止前景執行的gmetad: 於鍵盤執行ctrl+c即可。
5. 主節點前端PHP網頁安裝與設定
- 安裝Apache與PHP套件(如有套件無法取得,請逐一個別安裝)
$ sudo apt-get install rrdtool apache2 php5-mysql libapache2-mod-php5 php5-gd
- 移至ganglia3.3.1之web資料夾
$ cd /opt/ganglia-3.3.1/web
- 編譯與設定
~/ganglia-3.3.1/web $ make
- 修改Makefile
DESTDIR = /var/www/ganglia //修改此路徑以指定網頁建置之資料夾
位址
APACHE_USER = hadoop //修改執行apache之使用者為本範例所使用
之帳戶hadoop
- 安裝並配置所須檔案
~/ganglia-3.3.1/web $ make install
- 修改存取權限
$ sudo chmod 777 /var/lib/ganglia/dwoo/compiled/
$ sudo chmod 777 /var/lib/ganglia/dwoo/cache/
- 開啟瀏覽器並於網址列鍵入http://{主節點ip}/ganglia,即可觀看目前所監控之所有節點狀態
留言列表