读书人

编撰ganglia python插件

发布时间: 2012-06-30 17:20:12 作者: rapoo

编写ganglia python插件
ganglia支持python插件,熟悉了架构后编写起来还是比较简单的. 具体安装过程就不说了,各种系统配置不一样,推荐的安装方法也各有不同,这里只记下基本定制插件的写法.

ganglia的体系结构=gmetad + gmond, gmetad作为整个系统的调度和展示的控制中心,gmond则分布在每台受监控机器上定期运行各种监控度量(metric) 并将结果送到gmetad.

插件需要写成python module的方式,放置在/usr/lib64/ganglia/python_modules 下面, 简单实例模板如

import randomdef  get_foo_count(name):    '''可定制业务方法,返回一个整数值'''    return random.randrange(5, 100) + 10def metric_init(params):    '''metric'''    global descriptors        d1 = {        'name': 'foo_count',        'call_back': get_foo_count,                  # 名字同业务方法一致        'time_max': 90,                                   # 最大调度间隔时间        'value_type': 'uint',        'units': 'C',        'slope': 'both',        'format': '%u',        'description': 'Number of Foo',        'groups': 'foo_group'        }    descriptors = [d1]    return descriptorsdef metric_cleanup():    "清除metric"if __name__ == '__main__':    metric_init({})    for d in descriptors:        v = d['call_back'](d['name'])        print 'value for %s is %u' % (d['name'], v)


metric_init 是初始化方法,返回本plugin要写的metric描述的列表, 在这只返回一个metric.

写完可以在命令行直接测试,如果输出 value for foo_count is 82 这样的结果就表示基本没有问题了。

接下来的工作是让gmond知道这里有ganglia插件,在/etc/ganglia/conf.d 目录下写个foo.pyconf 就可以

modules {  module {    name = "foo"    language = "python"  }}collection_group {  collect_every = 60  time_threshold = 60  metric {    name = "foo_count"    title = "Foo Count"    value_threshold = 1.0  }}


详细资料可以看 http://sourceforge.net/apps/trac/ganglia/wiki/ganglia_gmond_python_modules

读书人网 >perl python

热点推荐