编写ganglia python插件

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

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

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

import random
def get_foo_count(name):
'''可定制业务方法,返回一个整数值'''
return random.randrange(5, 100) + 10

def 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 descriptors

def 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值