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