ganglia是采用yum的安装,因此安装相关内容路径可能不同,但是不影响插件的扩展编写;

本次介绍的扩展是采用python脚本进行扩展,因此监控节点上需要安装python的相关插件;

 sudo yum -y install  ganglia-gmond-python  python-devel*

 由于脚本要引入psutil的库,因此需要加载此模块,安装此模块需要首先按装gcc和pip

sudo yum -y install gcc python-pip

最后安装psutil模块

sudo pip install psutil

一般进入ganglia的python脚本模块,编写脚本

 路径一般为: /usr/lib64/ganglia/python_modules,新建脚本编辑,vi tomcat_mem.py

#encoding=utf-8
import psutil
import time
import sys
import commands
#获取tomcat的id进程号
commandLine1="sudo ps -ef | grep tomcat | grep -v grep|grep -v python | awk '{print $2}'";
(status,pid)=commands.getstatusoutput(commandLine1)
print pid
dscriptors = list()

def tomcat_res(name):
    p=psutil.Process(int(pid))
    return int((p.memory_info()[0]))
def metric_init(params):
    global descriptors
    d1 ={
    "name":"tomcat_res",
    "call_back":tomcat_res,
    "time_max":90,
    "value_type":"uint",
    "units": "memory info",
    "slope":"both",
    "format":"%u",
    "description": "",
    "groups":"tomcat", 
    }
    descriptors = [d1]
    return descriptors

def metric_cleanup():
    pass
    
#This code is for debugging and unit testing
if __name__=='__main__':
    metric_init('init')
    for d in descriptors:    
        v=d["call_back"](d["name"])
        print 'value for %s is %u '%(d["name"],v)

在到配置目录下,vi /etc/ganglia/conf.d/tomcat.pyconf,前提是已经配置好了modpython.conf

 1 modules{
 2     module{
 3         name="tomcat_mem"
 4         language="python"
 5     }
 6 }
 7 
 8 collection_group{
 9     collect_every = 2
10     time_threshold =90
11     metric{
12     name="tomcat_res"
13     title="tomcat memory"
14     value_threshold = 0
15     }
16 }

modpython.conf

 1 /*
 2   params - path to the directory where mod_python
 3            should look for python metric modules
 4 
 5   the "pyconf" files in the include directory below
 6   will be scanned for configurations for those modules
 7 */
 8 modules {
 9   module {
10     name = "python_module"
11     path = "modpython.so"
12     params = "/usr/lib64/ganglia/python_modules"
13   }
14 }
15 
16 include ("/etc/ganglia/conf.d/*.pyconf")
View Code

 

 这个有一个缺点就是,tomcat挂了以后重启,ganglia就获取不到数据,需要重启gmond进程,原因目前未知;

 

posted on 2016-04-26 14:20  sliu  阅读(373)  评论(0编辑  收藏  举报