Ganglia是UC Berkeley發起的一個開源集群監視項目,設計用于測量數以千計的節點。


Ganglia本身沒有api接口,根據Gmetad的原理,可以通過將監控數據轉換成XML來獲取metrics。Guardian在Githup上發布了一套基于Python的程序,可以直接通過RESTFUL API來獲取metrics。


Githup地址:??https://github.com/guardian/ganglia-api??

這套程序安裝過程很簡單,可以在任意位置安裝這套程序。需要的環境有:

(1)python2.7

(2)tornado 4.5

1. 在 /etc/ganglia 目錄下要包含以下三個配置文件


gmetad-PROD.conf   # => xml_port 8651, interactive_port 8652
gmetad-STAGE.conf # => xml_port 8751, interactive_port 8752
gmetad-DEV.conf # => xml_port 8851, interactive_port 8852

2 . 在/var/log/ 目錄下創建ganglia-api.log 文件用來記錄日志,并給與權限,保證可讀寫。

3. 在/var/run/ 目錄下創建ganglia-api.pid文件用來存儲PID(初始文件內容隨意給一個數字就好,不然會報錯),并給與權限,保證可讀寫。

4. 保證安裝代碼的系統的8080端口可以監聽。

5. 將python程序中的ganglia_api.py 和 settings.py 這兩個文件放置到/etc/ganglia 目錄下,在命令行執行:

cd /etc/ganglia
python ganglia_api.py

6. 接著訪問 ??http://localhost:8080/ganglia/api/v2/metrics?? ,如果可以返回數據則表示安裝成功。

{
"metrics": [
{
"cluster": "webdc1",
"dataUrl": "http://ganglia-api.example.com:8080/ganglia/api/v2/metrics?&environment=PROD&cluster=webdc1&host=vagrant-ubuntu-trusty-64&grid=web&metric=load_one",
"description": "One minute load average",
"environment": "PROD",
"graphUrl": "http://vagrant-ubuntu-trusty-64/ganglia/graph.php?&ti=One%20Minute%20Load%20Average&c=webdc1&r=1day&v=0&h=vagrant-ubuntu-trusty-64&vl=%20&z=default&m=load_one",
"grid": "web",
"group": "load",
"host": "vagrant-ubuntu-trusty-64",
"id": "prod.web.webdc1.vagrant-ubuntu-trusty-64.load.load_one",
"instance": "",
"metric": "load_one",
"sampleTime": "2016-06-17T13:47:35.000Z",
"tags": [
"foo",
"bar",
"baz"
],
"title": "One Minute Load Average",
"type": "gauge",
"units": " ",
"value": 0.0
}
],
"status": "ok",
"time": "0.000",
"total": 1
}

7. 在后臺運行python程序:

nohup python ganglia_api.py &

若報錯,一些信息會存在 /home/hadoop/nohup.out 里。


注:ganglia正常啟動 service gmetad restart